IntelliJとかJVMのIDE使いでもKarabinerなしでバックスラッシュを片手入力したい
上記を参考に eventtap
を使ってみる。
前準備
vimでインサートモードを抜ける時のあれ(Hammerspoon版)を参照
init.lua
init.lua
localVK_ESC=53localVK_LEFT_BRACKET=33localfunctionswitchToUs()localcmd='/usr/local/bin/keyboardSwitcher select U.S.'os.execute(cmd)-- hs.console.printStyledtext(cmd)endfunctionflagsMatches(flags,modifiers)localset={}for_,iinipairs(modifiers)doset[string.lower(i)]=trueendfor_,jinipairs({'fn','cmd','ctrl','alt','shift'})doifset[j]~=flags[j]thenreturnfalseendendreturntrueendkeyEventtap=hs.eventtap.new({hs.eventtap.event.types.keyDown},function(event)localkeyCode=event:getKeyCode()localflags=event:getFlags()-- hs.console.printStyledtext(keyCode)ifkeyCode==VK_ESCthenswitchToUs()endifkeyCode==VK_LEFT_BRACKETthenifflagsMatches(flags,{'ctrl'})thenswitchToUs()endendend)localfunctionhandleGlobalEvent(name,event,app)ifevent==hs.application.watcher.activatedthenlocalbundleId=string.lower(app.frontmostApplication():bundleID())ifbundleId=='com.apple.terminal'thenkeyEventtap:start()elsekeyEventtap:stop()endendendwatcher=hs.application.watcher.new(handleGlobalEvent)watcher:start()
結果
esc
にも対応できて概ね満足