Найдите, какой процесс получает данную команду клавиатуры

Я пытаюсь понять, почему не работает определенная комбинация клавиш.

Например, Sublime Text 2 поставляется с сочетанием клавиш для открытия панели «Найти/Заменить»:

Command+ Option+F

Эта комбинация работала нормально, пока я не сделал чистую установку OSX 10.8.5, после чего она таинственным образом перестала работать в Sublime Text.

Я знаю, что последовательности клавиатуры могут быть захвачены процессами, отличными от самых передних (например, ОС), поэтому мне было интересно, есть ли способ проверить, каким процессом была «потреблена» конкретная команда клавиатуры?

Для VSCode CMD+SHIFT+P см. github.com/prettier/prettier-vscode/issues/250 .

Ответы (3)

ShortcutDetective решит вашу проблему. Это бесплатно, просто и по делу.

Фантастическая рекомендация! Это помогло мне.
Спасибо!!! Это спасло меня от потери рассудка!
Отличное программное обеспечение, но, похоже, не работает для мультимедийных клавиш / ярлыков: [
Отлично, это приложение действительно помогает.
После переноса моего Intel MacBook Pro на новый Apple Silicon (M1 Max) Macbook Pro у меня иногда происходит сбой ShortcutDetective. Кто-нибудь еще испытывает эту проблему? (Я использовал его так часто, что продолжал работать на своем боковом мониторе, но из-за этого больше нет. Он по-прежнему полезен для разовых проблем, таких как вопрос ОП.)
Да, у меня также произошел сбой на моем M1 MacBook Air, но он работал достаточно долго, чтобы сказать мне, какое приложение крадет сочетание клавиш, которое я пытался использовать (это были параметры Logitech, и их обновление устранило проблему).
Он не обновлялся годами. Он вылетает каждый раз, когда запускается ярлык, который обрабатывается системой (например, ярлыки, определенные в Системных настройках).

Я не знаю никакого быстрого и эффективного способа найти получателя ярлыка. Но вот рецепт , чтобы начать охоту:

  1. Закройте большинство запущенных приложений, чтобы повысить эффективность поиска.

  2. Откройте Terminalокно и выполните следующую команду:

    /usr/bin/sudo opensnoop
    

    Эта команда будет отслеживать каждый openсистемный вызов.

  3. Переключитесь на контекст, в котором ваш ярлык перехвачен неизвестным приложением, и введите ⌘ cmd+ ⌥ option+ F.

    Ищите подсказку виновника в именах открытых файлов.

  4. whileнеудачно, добавьте одно приложение и GOTO 3.

Красивый! Если вы сделаете это достаточно быстро, у вас должен получиться довольно краткий список процессов. У меня было около 50 строк, половина из которых была фоновым процессом, который, как я знал, не прослушивал нажатия клавиш, поэтому я легко смог отфильтровать их в текстовом редакторе. Остальные 20 или около того строк записали 3 других процесса, и 75% из них содержали моего виновника. Большое спасибо, что поделились, @daniel
Спасибо Даниэль. Меня давно раздражало, что что-то еще перехватывает ярлык, предназначенный для одного из моих приложений (и, что еще хуже, воспроизводит небольшой звук пинга!). запустил это, увидел, может быть, 4 приложения, которые звонили, одно из них открывало «ping.aiff», привело меня прямо к виновнику!
Я использовал этот метод, чтобы обнаружить, что, к сожалению, Logi Tune захватывает CMD + N. Работал отлично.
Это отлично сработало, но в macOS 12 кажется, что opensnoopэто не работает из-за защиты целостности системы.
Вы получаете сообщение об ошибке или прочитали это ограничение в man opensnoop?

KeyCue обеспечивает визуальную обратную связь с сочетаниями клавиш. Его можно скачать в виде пробной версии.

KeyCue от Ergonis

Я настроил его так, что двойное нажатие и удержание клавиши Command отображает все активные в данный момент ярлыки.

После попытки KeyCue мне кажется, что он показывает только сочетания клавиш, связанные с командами меню для текущего активного приложения. Кроме того, он показывает глобальные горячие клавиши от Keybaord Maestro и, возможно, одно или два других конкретных поддерживаемых приложения. Он показывает глобальные горячие клавиши для всех приложений для вас?
Я нахожу несколько загадочным то, какие горячие клавиши отображаются для «других» приложений. Я думаю, что он пытается (но не полностью) показать глобальные горячие клавиши, которые имеют отношение к тому, где вы находитесь. В Руководстве пользователя конкретно упоминается Keyboard Maestro.