Поймайте и смените клавиатуру на mac sierra для эмуляции раскладки клавиатуры neo2
Я использую оптимизированный макет neo2: https://www.neo-layout.org/
К сожалению, версия mac была основана на karabiner (https://pqrs.org/osx/karabiner/), которая перестала работать с момента обновления Sierra.
Существует многообещающая новая версия под названием карабинные элементы (https://github.com/tekezo/Karabiner-Elements), которая, надеюсь, решит эту проблему.
Так как я не сейчас, когда исправление будет работать на mac sierra, я ищу не общее "быстрое и грязное" решение, которое просто сопоставляет стандартную немецкую клавиатуру с нео-макетом.
- Можно ли поймать события клавиатуры для mac systemwide?
- Какой язык/рамки я должен использовать, чтобы иметь возможность достичь этого обхода?
Ответы
Ответ 1
Я бы предложил использовать KeyBindingsEditor для создания/редактирования файла привязки ключей, который должен быть здесь/создан здесь: {ваш пользователь папка}/Library/KeyBindings/DefaultKeyBinding.dict
Обратите внимание, что ваш файл привязки ключей должен использовать кодировку UTF-8, и вы должны перезагрузить компьютер после внесения изменений, чтобы они вступили в силу.
Кроме того, здесь представлена дополнительная информация о пользовательских привязках клавиш в macOS, которые могут оказаться полезными.
Ответ 2
Используя вышеприведенное решение, я смог вернуть свой 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: Remap Command_Right в ctrl_left
![Настройки в Karabiner-Elements]()
Проблемы
Этот подход, похоже, не работает в каждой программе. Сопоставление с cmd + * (которое я действительно хочу, не работает)
Это всего лишь несколько вопросов, которые я заметил, просто играя вокруг (возможно, из-за сочетаний клавиш Ctrl + *):
- В поиске прожектора левый ярлык работает отлично, но правильный ярлык всегда идет до конца строки
- Приложение Microsoft Excel полностью сходит с ума при использовании этого ярлыка
- Этот редактор, который я набираю, также использует другие ярлыки
Заключение
Во-первых, я хотел бы также упомянуть это сообщение в блоге: http://slongwell.github.io/articles/2016-09/karabiner-workaround
Этот подход работает в определенной степени и определенно является опцией до тех пор, пока Karabiner не решает проблему.
Однако, если вы найдете лучшее решение, не стесняйтесь публиковать его здесь.