Переопределение ключей macOS в качестве модификаторов

Ситуация

Я использую раскладку клавиатуры под названием 3l (три раскладки), которая является раскладкой клавиатуры по слоям. Вот основной слой (поведение, когда не нажимаются клавиши-модификаторы):

Теперь, когда я удерживаю '' на обычной клавиатуре (sym в 3l), я нахожусь в режиме "символов", а остальная клавиатура ведет себя по-другому. Вот изображение этого режима:

По сути, эта клавиша символов похожа на специальный Shift, который позволяет мне получать доступ к специальным символам.

Кроме того, у меня есть слой чисел, который имеет тот же эффект, что и слой символов, и активируется клавишей /, но вместо этого имеет элементы управления курсором и цифровой панелью:


Человек, от которого я забыл свой макет, уже получил макет, работающий в Linux и Windows (используя AutoHotKey). Я пытаюсь портировать его на macOS. До сих пор я создал 3l.keylayout файл ( см. здесь) и имеют очень базовый функционал.

Что работает

  1. Клавиши в обычном режиме работают нормально.
  2. Если я нажимаю клавишу модификации символов, первый нажимаемый символ выводится как правильный символ. Например, если я нажму клавишу символа, а затем O, / выводится.
  3. То же самое относится к клавише cur/num для вывода на цифровую панель.

Что не работает

  1. Если я нажимаю и удерживаю клавишу модификатора символа и набираю несколько символов, только первый фактически выводит символ. (То же самое относится и к клавише cur/num.)
  2. Если я нажимаю и отпускаю одну из клавиш-модификаторов, а затем нажимаю другую клавишу, выводится символ / число. Такого не должно быть. Когда я отпускаю клавишу-модификатор, я хочу, чтобы она вернулась в обычный режим (как клавиша Shift).
  3. Клавиши манипулирования курсором не работают надежно во всех приложениях, и у них также есть проблема, не позволяющая повторять клавиши, когда они работают.

Мой вопрос

Есть ли способ для меня получить функциональность, описанную выше, в 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 модификатор.

Это работает без нареканий.

Другие вопросы по тегам