55 lines
1.2 KiB
Lua
Executable File
55 lines
1.2 KiB
Lua
Executable File
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
|
|
|