在 mac sierra 上捕获并更改键盘以模拟 neo2 键盘布局
Catch and change keyboard on mac sierra to emulate neo2 keyboard layout
我正在使用优化的布局 neo2:https://www.neo-layout.org/
不幸的是,mac 版本基于 karabiner (https://pqrs.org/osx/karabiner/),自 Sierra 更新后它已停止工作。
有一个很有前途的新版本,称为 karabiner elements (https://github.com/tekezo/Karabiner-Elements),有望解决这个问题。
由于我现在不知道修复何时可以在 mac sierra 上运行,因此我正在寻找一种非通用的 "quick and dirty" 解决方案,它只是将标准德语键盘映射到 neo 布局。
- 是否可以在 mac 系统范围内捕获键盘事件?
- 我必须使用哪个 language/frameworks 才能实现此解决方法?
我建议使用 KeyBindingsEditor 到 create/edit 你的键绑定文件,这里应该是 located/created:{你的用户文件夹}/Library/KeyBindings/DefaultKeyBinding.dict
请注意,您的按键绑定文件必须使用UTF-8编码,修改后必须重新启动计算机才能生效。
此外,这里还有一些关于 custom key bindings in macOS 的更多信息,可能对您有所帮助。
使用上面的解决方案,我能够得到我的 4.层,但有一些小问题。
这是我所做的:
第 1 步:创建 DefaultKeyBinding.dict 文件(我错了,BindingsEditor 有效)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/
<plist version="1.0">
<dict>
<key>^a</key>
<string>moveDown:</string>
<key>^c</key>
<string>deleteForward:</string>
<key>^e</key>
<string>moveForward:</string>
<key>^i</key>
<string>moveBackward:</string>
<key>^l</key>
<string>moveUp:</string>
<key>^o</key>
<string>moveToEndOfLine:</string>
<key>^u</key>
<string>moveToBeginningOfLine:</string>
<key>^v</key>
<string>deleteBackward:</string>
</dict>
</plist>
第 2 步:将 Command_Right 重新映射到 ctrl_left
问题
这种方法似乎不适用于每个程序。映射到 cmd+*(我实际上想要的没有用)
这只是我在玩耍时注意到的几个问题(可能是因为 ctrl+* 预映射的快捷方式):
- 在 Spotlight 搜索中,左边的快捷方式可以正常工作,但右边的快捷方式总是到行尾
- Microsoft Excel 应用程序在使用此快捷方式时变得非常疯狂
- 我正在输入的这个编辑器也使用其他快捷方式
结论
首先,我还要提一下这个博客post:http://slongwell.github.io/articles/2016-09/karabiner-workaround
这种方法在一定程度上确实有效,并且在 Karabiner 解决问题之前绝对是一种选择。
但是,如果您找到更好的解决方案,请随时在此处 post。
我正在使用优化的布局 neo2:https://www.neo-layout.org/
不幸的是,mac 版本基于 karabiner (https://pqrs.org/osx/karabiner/),自 Sierra 更新后它已停止工作。 有一个很有前途的新版本,称为 karabiner elements (https://github.com/tekezo/Karabiner-Elements),有望解决这个问题。
由于我现在不知道修复何时可以在 mac sierra 上运行,因此我正在寻找一种非通用的 "quick and dirty" 解决方案,它只是将标准德语键盘映射到 neo 布局。
- 是否可以在 mac 系统范围内捕获键盘事件?
- 我必须使用哪个 language/frameworks 才能实现此解决方法?
我建议使用 KeyBindingsEditor 到 create/edit 你的键绑定文件,这里应该是 located/created:{你的用户文件夹}/Library/KeyBindings/DefaultKeyBinding.dict
请注意,您的按键绑定文件必须使用UTF-8编码,修改后必须重新启动计算机才能生效。
此外,这里还有一些关于 custom key bindings in macOS 的更多信息,可能对您有所帮助。
使用上面的解决方案,我能够得到我的 4.层,但有一些小问题。
这是我所做的:
第 1 步:创建 DefaultKeyBinding.dict 文件(我错了,BindingsEditor 有效)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/
<plist version="1.0">
<dict>
<key>^a</key>
<string>moveDown:</string>
<key>^c</key>
<string>deleteForward:</string>
<key>^e</key>
<string>moveForward:</string>
<key>^i</key>
<string>moveBackward:</string>
<key>^l</key>
<string>moveUp:</string>
<key>^o</key>
<string>moveToEndOfLine:</string>
<key>^u</key>
<string>moveToBeginningOfLine:</string>
<key>^v</key>
<string>deleteBackward:</string>
</dict>
</plist>
第 2 步:将 Command_Right 重新映射到 ctrl_left
问题
这种方法似乎不适用于每个程序。映射到 cmd+*(我实际上想要的没有用) 这只是我在玩耍时注意到的几个问题(可能是因为 ctrl+* 预映射的快捷方式):
- 在 Spotlight 搜索中,左边的快捷方式可以正常工作,但右边的快捷方式总是到行尾
- Microsoft Excel 应用程序在使用此快捷方式时变得非常疯狂
- 我正在输入的这个编辑器也使用其他快捷方式
结论
首先,我还要提一下这个博客post:http://slongwell.github.io/articles/2016-09/karabiner-workaround
这种方法在一定程度上确实有效,并且在 Karabiner 解决问题之前绝对是一种选择。 但是,如果您找到更好的解决方案,请随时在此处 post。