Skip to content

Instantly share code, notes, and snippets.

@stepango
Last active January 7, 2024 18:01
Show Gist options
  • Save stepango/3b7dda91c8ab82ec88a14a3ef89a296a to your computer and use it in GitHub Desktop.
Save stepango/3b7dda91c8ab82ec88a14a3ef89a296a to your computer and use it in GitHub Desktop.
Hammerspoon change layout from Russian to English
ctrlPressed = false
keyPressed = false
layoutWatcher = hs.eventtap.new({hs.eventtap.event.types.flagsChanged, hs.eventtap.event.types.keyUp}, function(e)
local flags = e:getFlags()
local keyCode = e:getKeyCode()
if flags.cmd and keyCode == 0x36 and not (flags.alt or flags.shift or flags.ctrl or flags.fn) then
ctrlPressed = true
keyPressed = false
elseif ctrlPressed and not (flags.cmd or flags.alt or flags.shift or flags.ctrl or flags.fn) and not keyPressed then
ctrlPressed = false
if keyCode == 0x36 then
local lay = hs.keycodes.currentLayout()
if lay == "U.S." then
hs.keycodes.setLayout("Russian")
else
hs.keycodes.setLayout("U.S.")
end
end
else
keyPressed = true
end
end):start()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment