HammerspoonでRShiftを^と&にする
Sierra になってから Karabiner が使えなくなってしまったので、Hammerspoon で頑張るメモその1
今回は右の Shift を単押しで ^
、 左の Shift を押しながらで &
になるようにしたかったのでやってみた。
local LShift = false module.rshiftKeymaps = hs.eventtap.new({hs.eventtap.event.types.flagsChanged}, function(e) local flags = e:getFlags() local keyCode = e:getKeyCode() if keyCode == 0x38 then LShift = flags.shift end if keyCode == 0x3C then local rawFlags = e:getRawEventData().CGEventData.flags if LShift and rawFlags == 131334 then -- 131334 = LShift+RShift return keyStroke({"shift"}, "6")() -- & elseif rawFlags == 131332 then -- 131332 = RShift return keyStroke({}, 0x18)() -- ^ end end end) module.rshiftKeymaps:start()
Modifier Key に関しては keyDown / keyUp イベントが発火されないっぽいので、flagsChanged イベントで結構無理矢理頑張っていてちょっと辛い所。 あと、flagsChanged イベントだと、 keyDown / KeyUp 時両方とも発火されてしまうので、 rawEventData のフラグを見てどのキーが押されているのか判断している。