Karabiner-Elements: Как простым способом отключить группу клавиш?

Есть ли простой способ отключить группу клавиш в сложных модификациях Карабинер-Элементы?

Рассмотрим пример:

При следующем условии

  "set_variable": {
      "name": "con-1",
      "value": 1
  }

Я хочу отключить все алфавиты/цифры/символы (или, по крайней мере, большинство из них), кроме aи b.

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

Я ценю ваше понимание заранее.

Ответы (1)

РЕДАКТИРОВАТЬ: я только что добавил две скобки "[ ]" в финальную часть "to":[{ -part, так как их нехватка стала настолько [ошибкой]!

================================================== ========================

Итак, вот «окончательная версия» (некоторые примечания к/из первой попытки добавлены внизу):

... некоторый пример кода, который исключает любой набор текста, кроме букв "a" и "b".
Этот пример работает только в TextEdit (в целях тестирования), но, конечно, вы можете изменить/удалить эти «условия» (в последнем манипуляторе).

– Подготовлено «Исключение», Shft-Ctrl-Aкоторое устанавливает "none_but_ab"значение true (1).
– Следующий на очереди Стоп-манипулятор (в первую очередь безопасность); он устанавливается "none_but_ab"в «0» после удержания «x» 2 сек.
– Обе следующие части выводят наши буквы «а» и «б», исключая их из последующего уничтожения .
– Последний фатальный манипулятор захватывает «любой: key_code» и преобразует его в «none»…
– Будьте осторожны со своим Стоп-механизмом: лучше всего работают одиночные клавиши, модифицированные комбинации могут не сработать!

- Еще несколько идей:
добавив «команда» («сдвиг») к последнему «от», вы можете предотвратить использование ярлыков приложений Cmd (заглавные буквы).
Карабин Эл. может запускаться до входа в систему (Настройки > «Копировать текущую…»); «пароль» будет затронут!
Я также хотел бы знать, как «Shift» можно применить к «любому»: «key_code», заставляя заглавные буквы, или можно ли как-то «выбрать» числа. Что ж, посмотрим…

{ "description": "=============  vk_none but a,b  ============= ",
   "manipulators": [
        {
           "from": { "key_code": "a",
                     "modifiers": {
                         "mandatory": ["left_shift", "left_control"]
                   }              },
             "to": [
                    { "set_variable": {
                      "name": "none_but_ab",
                      "value": 1 }    }
                   ],
           "type": "basic"
         },
         {
           "from": { "key_code": "x" },
     "parameters": { "basic.to_if_held_down_threshold_milliseconds": 2000 },
"to_if_held_down": [
                    { "key_code": "x" },
                    { "set_variable": {
                      "name": "none_but_ab",
                      "value": 0 }    }
                   ],
           "type": "basic"
         },
         { "from": { "key_code": "a" },
             "to": [ { "key_code": "a" } ],
           "type": "basic" }, 
         { "from": { "key_code": "b" },
             "to": [ { "key_code": "b" } ],
           "type": "basic" },
         { 
     "conditions": [
                    { "name": "none_but_ab",
                      "type": "variable_if",
                      "value": 1 },
                    { "bundle_identifiers": [
                              "^com.apple.TextEdit" ],
                      "type": "frontmost_application_if"
                    }
                   ],
           "from": { "any": "key_code",
                     "modifiers": {
                          "optional": ["any"] }
                   },
             "to": [ { "key_code": "vk_none" } ],
           "type": "basic"
                   }
                   ]
}

(Вот некоторые остатки первого (удаленного) ответа:

note the twisted "any: key_code" part that calls every key, including "modifiers…any"

Interestingly 'from-to' units within{manipulators: …} Karabiner.json are worked through from top to bottom , пока один из них не станет исполняемым .
So if you want particular letters (a, b) to work nonetheless, you must call them previously.

Starting value for any variable is "0"… значения будут «жить», пока карабин работает!

… while experimenting I made my monitor sleep, but when I typed my pw – one letter simply was not recognised. I had to start from an external drive and change my code.)

[Добавлю прежние комментарии (к удаленному 2-му "ответу"): ] ________________________________ Самое главное - спасибо за отличные ответы. – bmike♦ _______________________________ О, не за что – и, наверное, правильно. Позже я посмотрю, какую информацию из моей первой попытки стоит добавить к более новой; просто был настолько сосредоточен, что не сделал этого сразу. Спасибо за очки репутации! - Клемсам Ланг
Спасибо за ваше понимание. Я пытаюсь создать простую версию режима vi. Я хочу аннулировать ключи, отличные от тех, которые используются в обычном режиме, например «jkhlwbgG0$oOiI». Но ваш код выдает ошибку '[ошибка] [граббер] complex_modifications ошибка json: toдолжен быть массив: {"условия":[{"имя":"none_but_ab","тип":"variable_if","value":1} ,{"bundle_identifiers":["^com.apple.TextEdit"],"type":"frontmost_application_if"}],"from":{"любой":"key_code","modifiers":{"необязательно":[ "любой"]}},"to":{"key_code":"vk_none"},"type":"основной"}'. Я что-то пропустил?
Сначала я был не совсем уверен, что понял ваш вопрос (я вставил свой опубликованный код в karabiner.json, и это сработало). Кажется, что «[ошибка]…» просто ожидает скобки «[ ]». Они нужны только в «от», когда в вашем «от» есть более одного {}: [ {…}, {…}, {…} ], но «то» хочет их КАЖДЫЙ раз — забавно, что мой код тем не менее работал … но я ДЕЙСТВИТЕЛЬНО изменил это выше !!!
Спасибо за ваш замечательный код! Я использовал его в своем простом режиме Vim для KE. Вы можете найти его в файле Nullify_keys.jsonздесь , если вам интересно.
Привет, я не уверен, что то, что я думаю, правда: я просмотрел ваш код GitHub — вам действительно нужно повторно вызывать некоторые двойные клавиши, такие как «b» и «e»? … Если они будут «узнаны» в вашем 1-м «от… до», второй даже не будет вызван. Я подозреваю, что вы можете опустить эти (вторые) дублеты. Хорошая работа, ваши "режимы Vim"!