有没有一种方法可以使用Javascript监听控制键(ASCII < 10)事件?

3
我的问题不是关于“Ctrl”键,而是关于非打印键,这些键没有出现在任何键盘上,但在扫描仪以HID模式读取条形码时非常有用。目前,当我的条码扫描仪配置为在条形码前缀中添加ASCII字符(如SOH(ASCII代码1)或STX(2),ETX(3),EOT(4)...)时,我可以监听到许多字符的keydown事件,但是我没有任何事件的记录。也许Chrome、Firefox等浏览器不支持这些事件。我的测试代码非常简单,我只是记录了文档上触发的keydown事件...
编辑: 我要强调的是,这个问题是关于在导航器(Edge、Chrome、Safari、Firefox等)上运行的javascript,而不是在node上运行。我需要在网页上监听条形码扫描仪。

不确定它们是否直接存在于事件对象属性中,但您可以尝试使用charCodeAt()读取输入字符串的值(使用实时扫描的输入事件)..? - Teemu
1
@Teemu:输入事件仅适用于输入框...使用条形码扫描器的目的是监听读取任何输入框之外的条形码。条形码扫描器的工作方式类似于物理键盘,但可以发送特定的前缀或后缀键。目标是意识到接收到的字符是由条形码扫描器发送的,而不是键盘发送的。专业的条形码扫描器可以配置具有特定控制键。希望清楚明白,我的英语远非完美^^ - Bruno Desprez
是的,我意识到输入后不会触发文档。但是那些“专业扫描仪”的程序是用JS编写的吗?你可以试试一个输入框,在扫描之前先聚焦输入框,并检查非可打印字符是否可以从值中读取。也许你可以进一步发展这个想法……只是顺便说一句,除了移动应用程序等,我使用过的所有基于Web的扫描仪都将扫描的代码输入到输入元素中。 - Teemu
啊...也许我的评论有点含糊不清,我指的是接收扫描的程序,即用户界面。 - Teemu
@BrunoDesprez,您的问题有点令人困惑,让我们澄清一下。首先是令人困惑的部分:“我没有任何事件的痕迹”这是什么意思?如果您根本没有事件,那么 keycode(不存在事件的一个属性)就完全不重要了。但是您又说:“我可以监听 keydown 事件并获得很多字符”...所以到底有没有事件呢?您能从中收到一些东西吗?如果可以,请您好心提供一个产生此结果的代码片段。 - Sven Liivak
显示剩余8条评论
1个回答

0
您可以在 Linux 机器上运行 xev 命令来测试条形码扫描器是否正常工作(我不确定其他操作系统),如果 xev 输出了内容,则浏览器应该会触发键盘事件。如果 xev 没有输出,则说明扫描器未按预期工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接