Add hammerspoon. Almost usable now...
This commit is contained in:
54
wm/hammerspoon/escapeControlDouble.lua
Executable file
54
wm/hammerspoon/escapeControlDouble.lua
Executable file
@@ -0,0 +1,54 @@
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user