Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.52 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. import Xlib
  3. import Xlib.display
  4. from Xlib import X, XK, protocol
  5. from Xlib.ext.xtest import fake_input
  6. import time
  7.  
  8. def prepare_event_params(window, state, keycode):
  9.     return {
  10.         'time': int(time.time()),
  11.         'root': display.screen().root,
  12.         'window': window,
  13.         'same_screen': 0, 'child': Xlib.X.NONE,
  14.         'root_x': 0, 'root_y': 0, 'event_x': 0, 'event_y': 0,
  15.         'state': state,
  16.         'detail': keycode
  17.     }
  18.  
  19.  
  20. Shift = Xlib.X.ShiftMask
  21. Ctrl = Xlib.X.ControlMask
  22. Alt = Xlib.X.Mod1Mask
  23. CapsLock = Xlib.X.LockMask
  24. NumLock = Xlib.X.Mod2Mask
  25. ScrollLock = Xlib.X.Mod3Mask
  26. Win = Xlib.X.Mod4Mask
  27.  
  28. display = Xlib.display.Display()
  29. root = display.screen().root
  30.  
  31. root.change_attributes(event_mask=X.KeyPressMask | X.KeyReleaseMask)
  32. keycode_2 = display.keysym_to_keycode(XK.XK_2)
  33. keycode_w = display.keysym_to_keycode(XK.XK_w)
  34. modifiers = NumLock | Ctrl
  35. root.grab_key(keycode_2, modifiers, 1, X.GrabModeAsync, X.GrabModeAsync)
  36.  
  37. while True:
  38.     event = root.display.next_event()
  39.     if event.type == X.KeyRelease:
  40.         if event.detail == keycode_2 and modifiers == modifiers:
  41.             window = display.get_input_focus()._data["focus"]
  42.             event = protocol.event.KeyPress(**prepare_event_params(window, NumLock, keycode_w))
  43.             window.send_event(event, propagate=True)
  44.             event = protocol.event.KeyRelease(**prepare_event_params(window, NumLock, keycode_w))
  45.             window.send_event(event, propagate=True)
  46.             display.sync()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement