Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- import Xlib
- import Xlib.display
- from Xlib import X, XK, protocol
- from Xlib.ext.xtest import fake_input
- import time
- def prepare_event_params(window, state, keycode):
- return {
- 'time': int(time.time()),
- 'root': display.screen().root,
- 'window': window,
- 'same_screen': 0, 'child': Xlib.X.NONE,
- 'root_x': 0, 'root_y': 0, 'event_x': 0, 'event_y': 0,
- 'state': state,
- 'detail': keycode
- }
- Shift = Xlib.X.ShiftMask
- Ctrl = Xlib.X.ControlMask
- Alt = Xlib.X.Mod1Mask
- CapsLock = Xlib.X.LockMask
- NumLock = Xlib.X.Mod2Mask
- ScrollLock = Xlib.X.Mod3Mask
- Win = Xlib.X.Mod4Mask
- display = Xlib.display.Display()
- root = display.screen().root
- root.change_attributes(event_mask=X.KeyPressMask | X.KeyReleaseMask)
- keycode_2 = display.keysym_to_keycode(XK.XK_2)
- keycode_w = display.keysym_to_keycode(XK.XK_w)
- modifiers = NumLock | Ctrl
- root.grab_key(keycode_2, modifiers, 1, X.GrabModeAsync, X.GrabModeAsync)
- while True:
- event = root.display.next_event()
- if event.type == X.KeyRelease:
- if event.detail == keycode_2 and modifiers == modifiers:
- window = display.get_input_focus()._data["focus"]
- event = protocol.event.KeyPress(**prepare_event_params(window, NumLock, keycode_w))
- window.send_event(event, propagate=True)
- event = protocol.event.KeyRelease(**prepare_event_params(window, NumLock, keycode_w))
- window.send_event(event, propagate=True)
- display.sync()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement