Я использовал оригинальное приложение Karabiner 10.22 и мог очень точно ограничить любые действия через Apple Accessibility Inspector для работы с определенными диалоговыми окнами.
Это больше невозможно с Karabiner Elements.
Итак, чтобы (в Safari) щелкнуть пункт контекстного меню «Информация об элементе» (который я использую очень часто), я попробовал этот код в «Сложных модификациях»:
"to": [ { "pointing_button": "button2" },
{ "key_code": "e" },
{ "key_code": "return_or_enter"} ]
Что действительно работало , но поочередно только открывало/показывало контекстное меню или фактически выполняло «Информацию об элементе».
Экспериментируя, я нашел обходной путь, который в основном работает для меня:
"parameters": { "basic.to_if_held_down_threshold_milliseconds": 50 },
"to": [ { "pointing_button": "button2" } ],
"to_if_held_down":
[ { "key_code": "e" },
{ "key_code": "return_or_enter"} ]
Мои вопросы:
Почему не все «команды» в первом примере кода выполняются в надлежащем порядке (или: только поочередно) и (более интересно:) как вы можете гарантировать, что каждая «команда» будет выполняться каждый раз?
Я думаю, что ваш обходной путь прекрасно демонстрирует причину: вы выбираете «Информацию об элементе» через графический интерфейс, и вызов контекстного меню может занять несколько миллисекунд. Это не проблема специально для Karabiner — если коды клавиш Eи returnотправляются мгновенно после щелчка правой кнопкой мыши, контекстное меню может быть еще не в фокусе, и они не будут направлены должным образом.
Короче говоря, если вы создаете макрос графического интерфейса, вам может потребоваться дождаться ответа графического интерфейса.
Как я вижу, есть три возможных решения:
Мэтт Сефтон