Short version of what I want to accomplish:我有一个脚踏板(INFINITY-IN-USB-1,如果有兴趣的话),它是作为一个通用的HID设备实现的,我希望它在Linux上可以作为CtrlAlt键.我在寻找X级别的东西,也就是说,不仅仅是单个程序.

Longer version:我在Windows XP中通过调用DLL函数RegisterRawInputDevicesGetRawInputData,并在一个隐藏窗口中监听输入,实现了这个设置.所有这些都是通过一个相当简单的AutoHotkey脚本完成的(如果有人感兴趣,我可以在这里发布).关键是,不需要额外的司机等等.;只需要本机Windows DLL文件.

我希望这个设置可以在Linux上运行(更具体地说,是在Ubuntu下的GNOME,但我偶尔也会使用其他发行版/窗口管理器,因此我们非常欣赏X级别的解决方案).该脚踏板本身不注册为键盘或操纵杆,而是注册为HID设备,用途第12页,用法3.

我注意到最新的Ubuntu可以检测并使用Microsoft Natural Keyboard上最喜欢的按键,这也注册为HID设备*.我在Windows上使用这些键的方法与使用脚踏板的方法相同(即,不使用Bundle 软件).所以我假设这个踏板也可以在Linux上工作,但问题是如何工作?

(我对Linux上较低级别的东西还不熟悉,所以请随时提供介绍或教程的链接.)

*对于不知情的用户,Microsoft Natural键盘注册为常规键盘和通用HID设备.如果某些应用程序(例如Bundle 应用程序)不知道如何解释HID输入,常规键就可以工作,但常用键和特殊功能键是无用的


为了澄清这一点,Linux将脚踏板视为输入.它确实能识别USB设备,但xev不会为踏板按压提供任何输出.我曾看到有报道称,有人成功地将Wine以下的踏板用于转录软件,但这必须以Windows方式工作,不能满足我的要求(这使得踏板看起来像是所有本机Linux应用程序的键盘).是否需要一些低级Linux键盘驱动程序?


这里有更多信息:如果我在终端发布

cat /dev/usb/hiddev0

(dev/usb/hiddev0是我的踏板),我得到对应于我的踏板压力的原始代码.这是一个开始.我知道这些原始代码是什么意思:在二进制中,0001、0010、0dev/usb/hiddev0分别对应于每个踏板,踏板按压的组合发送这些二进制数的组合,并释放踏板触发输入(如果所有踏板都向上,则发送0000).

我怎样才能让X听dev/usb/hiddev0并将原始代码翻译成一个特殊的键码,这样我就可以用xmodmap或其他东西来映射它们?

推荐答案

你要uinput块.您将在/dev/usb/hiddev0上侦听,然后创建将在/dev/input/uinput上发送的新事件.

本文对此进行了解释,并提供了一个小教程:

Linux相关问答推荐

获取Perl文件::Tail开始在最后流传输文件

将参数#0更改为shell脚本不工作

BASH:在curl输出的每一行添加前缀

Linux BlueZ 5.65 hcitool 结合服务 UUID 和制造数据广告

为什么`__vfprintf_internal`(`stdio.h`中的`printfn`)强制`$rbp`在我的x86-64机器上向前跳转6313864字节?

从 curl 命令输出中获取值

BASEDIR 环境变量未正确定义

Linux 非阻塞 fifo(按需日志(log)记录)

是否可以在 Linux x86 GAS 程序集中创建没有系统调用的线程?

将参数传递给 awk 脚本文件

如何列出附加到Linux中共享内存段的进程?

为什么 mmap() 比顺序 IO 快?

zsh/bash 上不区分大小写的 Glob

列出当前目录和所有子目录中特定大小的文件

根据日期范围过滤日志(log)文件条目

命令列出除 . (点)和..(点点)

try 使用 sudo 将文件附加到根拥有的文件时权限被拒绝

Linux SCHED_OTHER、SCHED_FIFO 和 SCHED_RR - 区别

sed - 如何使用 sed 进行正则表达式组

如何始终以 GB 为单位获取 df linux 命令输出