我需要听一下蓝牙键盘发送到我的设备的原始命令/按键,如果可能的话,阻止他们传播'到系统的其余部分。
基本上,我已经用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上运行
答案 0 :(得分:4)
keypress 仅侦听标准输入流,而不是键盘本身。此输入流由操作系统及其硬件驱动程序处理。通常操作系统不希望应用程序直接听键盘,而是将键盘事件指向它所关注的程序。
您必须直接处理设备,否则操作系统会将这些输入重定向到焦点对准的其他程序。您应该尝试node-hid。它可以访问附加的人机界面设备,如键盘/鼠标。说明它适用于USB设备,但它适用于蓝牙(HID)设备。
其次,因为您正在聆听硬件,很可能您不会直接接收到按键值,而是需要解释一堆原始输入数据/信号。您正在使用键盘作为遥控器,准备像低级设备一样使用它。
答案 1 :(得分:1)
解决此问题的一种方法(控制色调而不需要程序在前台)将分离色调控件和键盘快捷键到不同的应用程序:
我只想写一个命令行工具,例如。 with node,它将运行命令作为参数。然后我会为命令创建操作系统级键盘快捷键。
EG。我会配置Command-Shift- +来调用huecontrol increasebri
。 Huecontrol会做的就是退出。