听原始蓝牙键盘数据

Jos*_*unt 7 javascript keyboard bluetooth node.js 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()
Run Code Online (Sandbox Code Playgroud)

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

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

我喜欢在我的Mac上运行Node.js或Python中的某些东西,但是如果需要,我愿意切换语言或在我的Raspberry Pi上运行

use*_*109 5

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

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

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