听原始蓝牙键盘数据

时间:2014-08-31 06:39:58

标签: javascript node.js bluetooth keyboard philips-hue

我需要听一下蓝牙键盘发送到我的设备的原始命令/按键,如果可能的话,阻止他们传播'到系统的其余部分。

基本上,我已经用Node.js和咖啡脚本写了一些东西,它接收来自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()

它的功能有用,但它不是非常有用,因为它从stdin接收输入,阻止它在后台运行。

如果没有焦点窗口,我该怎么做才能接收输入?

我的偏好是在我的Mac上运行Node.js或Python中的某些内容,但我愿意在需要时切换语言或在我的Raspberry Pi上运行

2 个答案:

答案 0 :(得分:4)

keypress 仅侦听标准输入流,而不是键盘本身。此输入流由操作系统及其硬件驱动程序处理。通常操作系统不希望应用程序直接听键盘,而是将键盘事件指向它所关注的程序。

您必须直接处理设备,否则操作系统会将这些输入重定向到焦点对准的其他程序。您应该尝试node-hid。它可以访问附加的人机界面设备,如键盘/鼠标。说明它适用于USB设备,但它适用于蓝牙(HID)设备。

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

答案 1 :(得分:1)

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

我只想写一个命令行工具,例如。 with node,它将运行命令作为参数。然后我会为命令创建操作系统级键盘快捷键。

EG。我会配置Command-Shift- +来调用huecontrol increasebri。 Huecontrol会做的就是退出。