Hammerspoon: непрерывно отправлять нажатия клавиш в одно приложение, в то время как другие обычно используются

Итак, у меня есть скрипт с Hammerspoon, который выполняет нажатия клавиш за меня. Простой пример:

hs.hotkey.bind({'cmd','alt','ctrl'}, "b", function() 
    hs.eventtap.keyStroke({}, "Left", 200000)
    hs.eventtap.keyStroke({}, "Left", 200000)
    hs.eventtap.keyStroke({}, "Right", 200000)
    hs.eventtap.keyStroke({}, "Right", 200000)
end)

Я знаю, что могу отфильтровать этот скрипт, чтобы он работал только в определенных приложениях, но мой вопрос: можно ли отправить эти нажатия клавиш в одно приложение, используя мою физическую клавиатуру в другом приложении? Например, нажатия клавиш отправляются «в фоновом режиме», поэтому они не регистрируются в приложении, которое я сейчас использую.


person Ian    schedule 17.01.2021    source источник


Ответы (1)


Вы можете запросить приложение, сохранить его в переменной, а затем использовать ее для отправки этих нажатий клавиш в это приложение:

local myApp = hs.application.applicationsForBundleID('com.apple.finder')
hs.eventtap.keyStroke({"cmd"}, "2", 200, myApp)

Это отправит CMD + 2 в приложение Finder.

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

person Chris Spiegl    schedule 15.04.2021