听原始的蓝牙键盘数据

我需要聆听蓝牙键盘发送到我的设备的原始命令/按键,并且如果可能,请阻止它们“传播”到系统的其他部分。

基本上,我用Node.js和coffee-script写了一些东西,它接收stdin按键,并控制我的飞利浦Hue灯泡。 它看起来像这样:

 keypress = require 'keypress' # Setup keypress events keypress process.stdin process.stdin.on 'keypress', (character, key) -> switch character when 'l' then hue.decreaseTemp() when 'r' then hue.increaseTemp() when 'u' then hue.increaseBri() when 'd' then hue.decreaseBri() when 'b' then hue.turnOff() # Exit on ctrl-c if key?.ctrl and key.name is 'c' process.stdin.pause() 

这是function性的工作,但它不是很有用,因为它从标准input接收input,防止它在后台运行。

我可以做什么来使这个接收input没有窗口焦点?

我的首选是在Node.js或Python的东西在我的Mac上运行,但我愿意切换语言或运行在我的树莓派,如果需要

按键只听标准inputstream,而不是键盘本身。 该inputstream由操作系统及其硬件驱动程序处理。 通常,操作系统不希望应用程序直接监听键盘,而是将键盘事件指向它所关注的程序。

您将不得不直接操作设备,否则操作系统会将这些inputredirect到其他程序。 你应该尝试node-hid 。 它可以访问连接的人机界面设备,如键盘/鼠标。 说明说它适用于USB设备,但它应该适用于蓝牙(HID)设备。

其次,由于你正在听硬件,很可能你不会直接得到按键值,而是需要解释一些原始input数据/信号。 您正在使用键盘作为遥控器,准备像使用低级设备一样使用它。

解决这个问题的一种方法(控制色调而不需要程序在前台)将把色调控制和键盘快捷方式分离到不同的应用程序:

我会简单地写一个命令行工具,例如。 与节点,这需要作为参数运行的命令。 然后,我将为该命令创build操作系统级键盘快捷键。

例如。 我会configurationCommand-Shift- +调用huecontrol increasebri 。 Huecontrol会做的事情和退出。