13 个版本
0.3.4 | 2024年2月11日 |
---|---|
0.3.3 | 2023年8月18日 |
0.3.1 | 2023年7月15日 |
0.3.0 | 2023年6月19日 |
0.0.4 | 2021年3月22日 |
#6 在 macOS 和 iOS API
34KB
770 行
kb-remap
辅助 macOS 键盘键位重映射的工具。
🚀 入门
使用 Cargo 安装该工具。
cargo install kb-remap
🤸 使用方法
要全局重映射键位,只需使用一个或多个 --map
或 --swap
选项运行工具。例如,以下示例将 capslock 映射到退格键,并在所有键盘上交换 §(章节)和 `(反引号)。
kb-remap --map capslock:delete --swap '0x64:`'
使用以下方法重置映射:
kb-remap --reset
过滤键盘
您可以使用 --name
选项选择性地过滤要重映射的键盘。使用 --list
选项列出可用的 HID 设备及其名称。
kb-remap --list
Vendor ID Product ID Name
--------- ---------- ----------------------------------
0x0 0x0 BTM
0x0 0x0 Headset
0x4c 0x269 Magic Mouse
0x5ac 0x342 Apple Internal Keyboard / Trackpad
0x5ac 0x342 Keyboard Backlight
0xc45 0x7692 USB Keyboard
0x1050 0x407 YubiKey OTP+FIDO+CCID
使用上述名称作为 --name
,您可以使用 --map
或 --swap
选项重映射任何键。例如,以下示例将 capslock 映射到退格键,并在内部 macOS 键盘上交换 §(章节)和 `(反引号)。
kb-remap --name "Apple Internal Keyboard / Trackpad" --map capslock:delete --swap '0x64:`'
您可以使用以下方法重置映射:
kb-remap --name "Apple Internal Keyboard / Trackpad" --reset
如果您想检查特定命令将运行的原始 hidutil
命令,请使用 --dump
选项。
kb-remap --name "Apple Internal Keyboard / Trackpad" --map capslock:delete --dump
将输出以下内容:
hidutil property \
--matching '{"VendorID":1452,"ProductID":834}' \
--set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":30064771129,"HIDKeyboardModifierMappingDst":30064771114}]}'
指定键位
--map
和 --swap
选项都期望指定源键和目标键,并用冒号(:)分隔。
指定键位有三种方式
名称
您可以使用某些键的名称来指定它们。例如,Return(Enter)键“⏎”可以指定为“return”。这些是在方便的基础上添加的。
键 | 代码 | USB 使用 ID |
---|---|---|
Return (Enter) | return |
0x28 |
Escape | escape |
0x29 |
Delete (Backspace) | delete |
0x2A |
Caps Lock | capslock |
0x39 |
Left Control | lcontrol |
0xE0 |
Left Shift | lshift |
0xE1 |
Left Option | loption |
0xE2 |
Left Command | lcommand |
0xE3 |
右侧控制键 | rcontrol |
0xE4 |
右侧移位键 | rshift |
0xE5 |
右侧选项键 | roption |
0xE6 |
右侧命令键 | rcommand |
0xE7 |
功能键 | fn |
|
F1, F2, ..., F12 | f1 , f2 , ..., f12 |
0x3A -> 0x45 |
F13, F14, ..., F24 | f13 , f4 , ..., f24 |
0x68 -> 0x73 |
此外,以下特殊名称也可用,并在使用时映射多个键。
按键 | 代码 |
---|---|
左 & 右控制键 | control |
左 & 右移位键 | shift |
左 & 右选项键 | option |
左 & 右命令键 | command |
字符
大多数可输入的键可以使用它们的字符指定。例如:A 键可以使用 "A" 或 "a"。使用的 USB 用途 ID 将与美式键盘上的按键对应。
数字
可以使用十六进制 USB 用途 ID 指定任何按键。例如:Z 的用途 ID 为 "0x1d"。
🤔 为什么?如何?
像 Karabiner-Elements 这样的 macOS 键映射应用程序通常过于强大,对于简单的映射来说。此外,它们有时需要一段时间才能支持最新的 macOS 版本。我需要一个简单可靠的解决方案。
而不是一个始终运行的应用程序 kb-remap
,它简单地作为子进程执行内置的 macOS hidutil
命令以获取键盘信息和映射按键。这种映射在键盘拔出或 您的 Mac 重新启动 时不会持续存在。kb-remap
还不能解决这个问题。一个选项是安装一个 launchd 服务以在启动时自动运行 kb-remap
。
许可证
本项目根据 MIT 许可证和 Apache 许可证(版本 2.0)的条款分发。
有关详细信息,请参阅 LICENSE-APACHE 和 LICENSE-MIT。
依赖关系
~5.5MB
~101K SLoC