设置
我正在尝试重新映射该CapsLock键,以便Control使用带有 PS2 转 USB 适配器的 Model M 键盘(带有指点杆)。
问题
如果现在重新映射的控制键保持按下状态超过半秒左右,它将停止修改后续字符。也就是说,如果我按下control,按下并释放x,等待半秒钟,按下并释放c,我得到的是control-x c而不是control- x control- c。您可以想象,这对于 emacs 和 bash 用户来说可能是一个问题!
这个问题确实不是在常规 USB 键盘、内置笔记本电脑键盘、Windows 中,或者如果我不将大写锁定重新映射到控制时,就会出现这种情况。
我用过系统设置 > 输入设备 > 键盘在 Kubuntu 中进行重新映射,我也直接使用 xmodmap。行为相同。由于 setkeycodes 对 USB 键盘没有影响,因此我无法使用它。
我不感兴趣的解决方法:
- 使用 Unicomp USB 键盘。虽然弹力弹簧机制与 IBM/Lexmark 的相同,但指点杆的质量较差,几乎无法使用。鼠标键也不可靠。真可惜,因为这本来是正确的解决方案。此外,他们把外形改得丑陋不堪。
- 使用无屈曲弹簧键盘。显然不是一个选择!
- 不重新映射按键。这违背我的信仰。
- 放弃 Linux,使用 Windows(不存在这个问题)。这也违背我的宗教信仰。
- 放弃 Linux,使用 OSX。OSX 有同样的问题,而且它违背我的信仰。
解决方案一是正在考虑建造一个这些并以此方式进行重新映射,但这有点极端。我宁愿用软件来做。
答案1
后来发现这是硬件问题。后来发现另一个 PS2-USB 适配器没有这个问题,于是换了那个品牌,问题就解决了。
运行良好的设备由 Belkin 制造(实际上是重新包装),并标明自己是
ID 0d3d:0001 Tangtop Technology Co., Ltd HID Keyboard
(是的,它只说“键盘”,但lsusb -v
显然表明它既有键盘又有鼠标描述符)。
答案2
您可能能够通过找出 PS/2 -> USB 适配器和键盘的各自身份来解决问题。
尝试命令
lsusb
对我来说,它表明,除其他外,
Bus 001 Device 018: ID 04d9:1400 Holtek Semiconductor, Inc. PS/2 keyboard + mouse controller
USB 标识码 (04d9) 的第一部分标识制造商,第二部分标识产品。
现在,您可以使用该信息来发现连接到该适配器的设备的身份,方法是输入
xinput list --long | grep 04d9
我得到的是
↳ HID 04d9:1400 id=9 [slave pointer (2)]
↳ HID 04d9:1400 id=8 [slave keyboard (3)]
我没有连接到适配器的键盘,但有我的旧轨迹球鼠标 Logitech TrackMan Marble FX。
所以我想了解更多有关上面标识的设备的信息id=9
,并且我使用xinput
命令来获取我想要的信息:
xinput list-props 9
清单的第一行是
Device 'HID 04d9:1400':
清单还显示了设备的属性,我使用这些属性来构建修改这些属性所需的命令。我最终得到了两个命令:
xinput set-int-prop "pointer:HID 04d9:1400" "Evdev Wheel Emulation Button" 8 3
xinput set-int-prop "pointer:HID 04d9:1400" "Evdev Wheel Emulation" 8 1
第一行将 TrackMan 鼠标的按钮 3 变成滚轮模拟按钮。(按钮 4 又名“8”似乎根本不起作用)。命令中的“指针”指的是鼠标,以避免与可以连接到同一适配器的“键盘”混淆(不在我的系统中)。
类似地,你也可以使用以下命令修改键盘的属性
xinput set-int-prop "keyboard:HID (keyboard usb-identifier) (property to be set)
等与其他个人财产