Skip to content

Instantly share code, notes, and snippets.

@maurofaccenda
Last active April 10, 2024 15:41
Show Gist options
  • Save maurofaccenda/aca92d695220e545c5e7ffd28dc365c4 to your computer and use it in GitHub Desktop.
Save maurofaccenda/aca92d695220e545c5e7ffd28dc365c4 to your computer and use it in GitHub Desktop.
hs.hotkey.bind({}, "§", function() hs.eventtap.keyStroke({}, "`") end )
hs.hotkey.bind({ "cmd" }, "§", function() hs.eventtap.keyStroke({ "cmd" }, "`") end )
hs.hotkey.bind({ "shift" }, "§", function() hs.eventtap.keyStroke({ "shift" }, "`") end )
hs.hotkey.bind({ "cmd", "shift" }, "§", function() hs.eventtap.keyStroke({ "cmd", "shift" }, "`") end )
@ghigt
Copy link

ghigt commented Jan 15, 2024

Thank you for the advice, I works well, but not for "~" (shift + §). I can't figure out how to do it (hammerspoon doesn't accept "~" character in its config). Did you find a way to solve it?

@maurofaccenda
Copy link
Author

Hi @ghigt , not sure what you meant. But shift + § = ± and I wanted it to behave like shift + backtick which produces ~ and it works fine. If you want it to enter another char, you can just replace the key combination on the keystroke part.

Remember to always use the key modifier and the "lowercase" key (eg. if you want ( use hs.eventtap.keyStroke({ "shift" }, "9"))

@ghigt
Copy link

ghigt commented Jan 15, 2024

I exactly want the same behavior you describe (shift + backtick producing ~). It doesn't works and still print ±.

It looks like hs.hotkey.bind({ "shift" }, "§", function() hs.eventtap.keyStroke({ "shift" }, "`") end ) doesn't behave well for me.

@maurofaccenda
Copy link
Author

maurofaccenda commented Jan 15, 2024

@ghigt I am sorry to hear that. It works fine for me. You can also play with some debugging and see what's going on.
I used this (paste on the console and once you are done, just reload config) it might help identify the problem:

local function keyCallback(event)
    hs.alert(hs.keycodes.map[event:getKeyCode()])
end

keyWatcher = hs.eventtap.new({ hs.eventtap.event.types.keyDown }, keyCallback)
keyWatcher:start()

As for reference, after pasting that on the console and pressing shift+§ I get 2 notifications: one with § and another with backtick.

@ghigt
Copy link

ghigt commented Jan 15, 2024

After testing with your debug, I finally saw that the ~ worked out of the MacOS Terminal app (it works fine with iTerm though). So I don't know why but it works everywhere except in the app I want to use it 😄

Big thanks for your help!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment