Поймайте и смените клавиатуру на 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 не решает проблему. Однако, если вы найдете лучшее решение, не стесняйтесь публиковать его здесь.