【发布时间】:2014-10-24 17:19:34
【问题描述】:
我需要收听蓝牙键盘发送到我的设备的原始命令/按键,如果可能,防止它们“传播”到系统的其余部分。
基本上,我用 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()
它的功能有效,但它不是很有用,因为它从标准输入接收输入,阻止它在后台运行。
如果窗口没有焦点,我该怎么做才能让这个接收输入?
我更喜欢在我的 Mac 上运行 Node.js 或 Python 中的某些东西,但如果需要,我愿意切换语言或在我的 Raspberry Pi 上运行
【问题讨论】:
-
您究竟是如何监听按键事件的?您需要解释您实际使用的内容并提供一些代码
-
@ian 我正在使用keypress 收听来自标准输入的输入,一旦脚本失去焦点,终端窗口就无法接收输入(显然)。
-
后台运行是什么意思。您必须专注于窗口才能直接输入,它的工作原理与任何其他程序一样。
-
我的意思是我不希望窗口有焦点让程序接收输入。我知道除非有焦点,否则我无法接收标准输入输入,因此可以改变,但我只需要找到其他东西来使其工作。
-
你所说的,本质上是你通过蓝牙连接你的键盘,然后当你输入(假设你的程序正在运行并处于焦点)时,它会执行命令来控制某些东西 -而你想要的是能够使用键盘来控制它,而不必让终端处于焦点,对吧?
标签: javascript node.js bluetooth keyboard philips-hue