dotfiles/wm/hammerspoon/escapeControlDouble.lua

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