Переопределение ключей macOS в качестве модификаторов
Ситуация
Я использую раскладку клавиатуры под названием 3l (три раскладки), которая является раскладкой клавиатуры по слоям. Вот основной слой (поведение, когда не нажимаются клавиши-модификаторы):
Теперь, когда я удерживаю '' на обычной клавиатуре (sym в 3l), я нахожусь в режиме "символов", а остальная клавиатура ведет себя по-другому. Вот изображение этого режима:
По сути, эта клавиша символов похожа на специальный Shift, который позволяет мне получать доступ к специальным символам.
Кроме того, у меня есть слой чисел, который имеет тот же эффект, что и слой символов, и активируется клавишей /, но вместо этого имеет элементы управления курсором и цифровой панелью:
Человек, от которого я забыл свой макет, уже получил макет, работающий в Linux и Windows (используя AutoHotKey). Я пытаюсь портировать его на macOS. До сих пор я создал 3l.keylayout
файл ( см. здесь) и имеют очень базовый функционал.
Что работает
- Клавиши в обычном режиме работают нормально.
- Если я нажимаю клавишу модификации символов, первый нажимаемый символ выводится как правильный символ. Например, если я нажму клавишу символа, а затем O,
/
выводится. - То же самое относится к клавише cur/num для вывода на цифровую панель.
Что не работает
- Если я нажимаю и удерживаю клавишу модификатора символа и набираю несколько символов, только первый фактически выводит символ. (То же самое относится и к клавише cur/num.)
- Если я нажимаю и отпускаю одну из клавиш-модификаторов, а затем нажимаю другую клавишу, выводится символ / число. Такого не должно быть. Когда я отпускаю клавишу-модификатор, я хочу, чтобы она вернулась в обычный режим (как клавиша Shift).
- Клавиши манипулирования курсором не работают надежно во всех приложениях, и у них также есть проблема, не позволяющая повторять клавиши, когда они работают.
Мой вопрос
Есть ли способ для меня получить функциональность, описанную выше, в macOS (Sierra и позже)?
Примечание. Я также попытался переназначить ' и / вправо ' с помощью параметра "Правильный контроль", используя элементы Karabiner, а затем попытался создать новый keymap
в 3l.keylayout
это активируется этими ключами. Это не сработало, однако. Он все испортил, и я попал в постоянную ситуацию с ключом управления / опцией.
1 ответ
Я смог решить эту проблему с помощью сложных модификаций Karabiner-Elements.
Вот мой полный karabiner.json
файл.
Под profiles -> rules -> manipulators
Я добавил два манипулятора. Один для sym
и один для cur
,
Я скопировал sym
манипулятор ниже:
{
"conditions": [
"name": "sym",
"type": "variable_if",
"value": 0
},
{
"name": "cur",
"type": "variable_if",
"value": 0
}
],
"from": {
"key_code": "quote",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"set_variable": {
"name": "sym",
"value": 1
}
}
],
"to_after_key_up": [
{
"set_variable": {
"name": "sym",
"value": 0
}
}
],
"type": "basic"
}
Затем я прошел через все настройки клавиш, т.е. когда клавиша нажата без модификатора, sym
модификатор, а cur
модификатор.
Это работает без нареканий.