local eventtap = require("hs.eventtap") local keycodes = require("hs.keycodes") keycodes = keycodes.map local events = eventtap.event.types local module = {} local escPressed = false local otherPressed = false local recursion = false module.addModifier = function(ev) ev:setFlags({['cmd'] = true}) return ev end module.eventWatcher = eventtap.new({events.keyDown, events.keyUp}, function(ev) if recursion then recursion = false return false end if ev:getKeyCode() == keycodes['escape'] then if ev:getType() == events.keyDown then if not escPressed then --hs.alert("esc down") escPressed = true otherPressed = false return true end else --hs.alert("esc up") escPressed = false if not otherPressed then --hs.alert("escape") ev = eventtap.event.newKeyEvent({}, 'escape', true) recursion = true ev:post() else --escPressed = false end return true end elseif escPressed and ev:getType() == events.keyDown then otherPressed = true ev = module.addModifier(ev) recursion = true ev:post() return true end return false end):start() return module