如何在 Perl 中将 Linux 键码从 /dev/input/event* 转换为 ASCII?
我正在编写一个 Perl 脚本,该脚本从臭名昭著的 /dev/input/event*
读取数据,但我没有找到一种方法将内核生成的关键代码转换为 ASCII。
我在这里谈论这个表中的linux关键代码似乎无法找到可以帮助我翻译它们而不将数组硬编码到脚本中的东西。我错过了什么吗?
我想跳过数组部分,因为这似乎不是一个好的做法,所以有什么想法吗? :)
I'm writing a Perl script that reads data from the infamous /dev/input/event*
and I didn't find a way to translate the key codes generated by the kernel into ASCII.
I'm talking about the linux key codes in this table here and I can't seem to find something that would help me translate them without hardcoding an array into the script. Am I missing something?
I'd like to skip the array part because it doesn't seem to be a good practice, so any idea? :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
不幸的是,我不会用 Perl 编程,但这里有一个用 C 编写的简单示例。也许它仍然可以对您有所帮助。
要生成 parse.h,请将其放入您的 Makefile 中:
然后,像这样使用它:
Unfortunately, I don't program in Perl but here is a simple example written in C. Perhaps it might help you nevertheless.
For generating the parse.h, put this into your
Makefile
:Then, use it like this:
基本上是地图问题。您必须获取一个键码并查找其等效的 ASCII 码。您认为“数组部分”不是一个好的做法吗?
我在 CPAN 上没有看到此模块,但这意味着您有机会成为第一个上传它的人。 :)
It's basically a map problem. You have to take a keycode and lookup its ASCII equivalent. What about the "array part" do you think is not a good practice?
I didn't see a module for this on CPAN, but that means that you have a chance to be the first to upload it. :)
示例 1 仅返回来自 Linux 内核的相同密钥代码值。例如,按下“a”键时会得到 KEY_A 0x1e。你想要的是(也是我想要的)ascii 转换,所以如果按下“a”,我想看到小写字母 0x61 和大写字母 0x41。
Example 1 only gives you back the same key code values that are already coming from the linux kernel. For example you get KEY_A 0x1e for an 'a' key press. What you want is (and what i want) is the ascii conversion so if 'a' is pressed I want to see 0x61 for lower case and 0x41 for upper case.
为了从条形码阅读器读取条形码,我错过了一个将纯按键输入字符串的简单应用程序。到目前为止,进行完整的键盘翻译要容易得多,因为条形码通常主要包含数字和一些正常的 ASCII 字符。
因此,也许这个简单的 python3 脚本也可以帮助其他人入门。它需要 python3-evdev 作为库。
当然,您可能必须调整
InputDevice
。这适用于曼哈顿读者。To read the barcodes from a barcode reader I missed a simple application to get the pure key strokes into a string. That's by far easier to do a complete keyboard translation as the barcodes usually contain mostly numbers and some few normal ascii characters.
So, perhaps, this simple python3 script may help as well others to get started. It requires
python3-evdev
as library.For sure, you may have to adapt the
InputDevice
. This works for the Manhatten reader.