Advertisement
Guest User

python-xlib listen for keypress example

a guest
Jan 10th, 2013
831
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.49 KB | None | 0 0
  1. from Xlib.display import Display
  2. from Xlib import X
  3. from Xlib.ext import record
  4. from Xlib.protocol import rq
  5.  
  6. disp = None
  7.  
  8. def handler(reply):
  9.     """ This function is called when a xlib event is fired """
  10.     data = reply.data
  11.     while len(data):
  12.         event, data = rq.EventField(None).parse_binary_value(data, disp.display, None, None)
  13.        
  14.         # KEYCODE IS FOUND USERING event.detail
  15.         print event.detail
  16.        
  17.         if event.type == X.KeyPress:
  18.             # BUTTON PRESSED
  19.             print "pressed"
  20.         elif event.type == X.KeyRelease:
  21.             # BUTTON RELEASED
  22.             print "released"
  23.  
  24. # get current display
  25. disp = Display()
  26. root = disp.screen().root
  27.    
  28. # Monitor keypress and button press
  29. ctx = disp.record_create_context(
  30.             0,
  31.             [record.AllClients],
  32.             [{
  33.                     'core_requests': (0, 0),
  34.                     'core_replies': (0, 0),
  35.                     'ext_requests': (0, 0, 0, 0),
  36.                     'ext_replies': (0, 0, 0, 0),
  37.                     'delivered_events': (0, 0),
  38.                     'device_events': (X.KeyReleaseMask, X.ButtonReleaseMask),
  39.                     'errors': (0, 0),
  40.                     'client_started': False,
  41.                     'client_died': False,
  42.             }])
  43. disp.record_enable_context(ctx, handler)
  44. disp.record_free_context(ctx)
  45.    
  46. while 1:
  47.     # Infinite wait, doesn't do anything as no events are grabbed
  48.     event = root.display.next_event()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement