Skip to content

Instantly share code, notes, and snippets.

@meeuw
Last active September 27, 2021 09:40
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save meeuw/0271963355ce6667d87fc0b3fbafa45a to your computer and use it in GitHub Desktop.
Save meeuw/0271963355ce6667d87fc0b3fbafa45a to your computer and use it in GitHub Desktop.
Simple script to replace xdotool when using Gnome/Wayland for entering keystrokes using evdev. This requires root.
# MOVED TO: https://github.com/meeuw/injectinput
#!/usr/bin/python3
import evdev
import sys
upper = { '!': '1', '@': '2', '#': '3', '$': '4', '%': '5', '^': '6', '&': '7', '*': '8', '(': '9', ')': '0' }
with evdev.UInput() as ui:
escape = False
for letter in sys.argv[1]:
if letter == ' ':
key = evdev.ecodes.KEY_SPACE
elif letter in upper:
key = evdev.ecodes.ecodes['KEY_'+upper[letter]]
elif letter == '\\':
escape = True
continue
elif escape and letter == 'r':
escape = False
key = evdev.ecodes.KEY_ENTER
else:
key = evdev.ecodes.ecodes['KEY_'+letter.upper()]
if letter.isupper() or letter in upper:
ui.write(evdev.ecodes.EV_KEY, evdev.ecodes.KEY_LEFTSHIFT, 1)
print(key)
ui.write(evdev.ecodes.EV_KEY, key, 1)
ui.write(evdev.ecodes.EV_KEY, key, 0)
if letter.isupper() or letter in upper:
ui.write(evdev.ecodes.EV_KEY, evdev.ecodes.KEY_LEFTSHIFT, 0)
ui.syn()
@medicamin
Copy link

Could you please explain how to use this script?

p.s : I'm looking for a way to use xdotool for libinput-gestures in Gnome using Wayland.

@meeuw
Copy link
Author

meeuw commented Aug 19, 2017

@medicamin this script can only do keystrokes (like xdotool key). Other features aren't supported.

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