2 个版本
使用旧的 Rust 2015
0.0.2 | 2017年11月7日 |
---|---|
0.0.1 | 2017年9月22日 |
#1694 in 硬件支持
49KB
1K SLoC
rusty-keys
linux 的 uinput 级键盘映射器,具有高级大小写锁定和换档键切换功能
这是我唯一知道能够实现此布局的键映射器
问题
如果您在 Linux 上映射过按键,您知道有控制台键映射(loadkeys)和 X 键映射(setxkbmap),还有像 SDL 和 Virtualbox 这样的东西直接抓取输入并忽略映射。最后,我想在按住 Ctrl 时恢复 QWERTY,这样 Ctrl+C 就可以像正常一样工作,而无需将所有程序重映射到 Ctrl+j。Linux 键映射也无法做到这一点。
解决方案
- 直接抓取键盘设备,这样我们才能从中读取事件。
- 使用 uinput 创建一个新的键盘输入设备,这对于运行在计算机上的任何东西来说都是相同的。
- 从真实设备读取 input_events,映射它们,发送到创建的设备。
这正是 rusty-keys 实现的解决方案,它在 ttys、X、virtualbox、运行 Windows 或任何其他东西的 X 上都有效,在 SDL 游戏中也会工作,因为它实际上在任何地方都创建了一个常规键盘。
如何运行
运行时,它将读取当前工作目录中的 keymap.toml 文件,参考示例并进行调整。
Usage: rusty-keys [options]
Options:
-h, --help prints this help message
-v, --version prints the version
-d, --device DEVICE specify the keyboard input device file
-c, --config FILE specify the keymap config file to use
仅连接一个键盘
rusty-keys
多个键盘,目前必须指定一个
rusty-keys-d/dev/input/event0
查找所有合格的键盘设备,例如
grep-E'处理程序'|EV' /proc/bus/input/devices|grep-B1 120013 |grep-Eo 事件[0-9]+
对于使用 systemd 单元 with by-id 或 by-path
$ systemd-escape --template=[email protected] by-id/usb-04c8_USB_Keyboard-event-kbd
rusty-keys@by\x2did-usb\x2d04c8_USB_Keyboard\x2devent\x2dkbd.service
如何安装
cargo安装 rusty-keys
- Arch Linux AUR PKGBUILD
许可证
目前为 AGPLv3,如果您对此有问题,请给我留言
注意
技术上这是对之前我使用过 3 年的 Python 程序 的重新实现。
依赖项
~3.5MB
~67K SLoC