#macos #keyboard #key #assist #name #remapping #remap

应用 kb-remap

辅助 macOS 键盘键位重映射的工具

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日

#6macOS 和 iOS API

MIT/Apache

34KB
770

kb-remap

Crates.io Version Build Status

辅助 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-APACHELICENSE-MIT

依赖关系

~5.5MB
~101K SLoC