[beryl-commits] r2256 - trunk/beryl-settings-2
quinn at server.beryl-project.org
quinn at server.beryl-project.org
Tue Jan 2 09:39:09 CET 2007
Author: quinn
Date: 2007-01-02 08:39:08 +0000 (Tue, 02 Jan 2007)
New Revision: 2256
Modified:
trunk/beryl-settings-2/main.py
Log:
add key grabbing
Modified: trunk/beryl-settings-2/main.py
===================================================================
--- trunk/beryl-settings-2/main.py 2007-01-02 07:50:50 UTC (rev 2255)
+++ trunk/beryl-settings-2/main.py 2007-01-02 08:39:08 UTC (rev 2256)
@@ -399,6 +399,59 @@
def hideshowclick(wid):
UpdateBindingsList(wid.props.active)
+def kpe(win,ev,ent):
+ keygot=(ev.keyval,ev.state)
+ #check to see if its a modifier key
+ #currently this will be a hardcoded list, should perhaps be changed later
+ ModKeys=['Alt_L','Alt_R','AltGr','Super_L','Super_R','Control_L','Control_R','Shift_L','Shift_R','Meta_L','Meta_R','Multi_key']
+ if (ModKeys.__contains__(gdk.keyval_name(ev.keyval))):
+ return
+ ev=gdk.event_get()
+ win.grab_remove()
+ gdk.keyboard_ungrab()
+ win.destroy()
+ statemask=gdk.SHIFT_MASK | gdk.CONTROL_MASK | gdk.MOD1_MASK | gdk.MOD2_MASK | gdk.MOD3_MASK | \
+ gdk.MOD5_MASK | gdk.SUPER_MASK | gdk.HYPER_MASK | gdk.META_MASK
+ keygot=(keygot[0],keygot[1]&statemask)
+ win.destroy()
+ if (keygot[1]==0 and keygot[0]==gdk.keyval_from_name("Escape")):
+ return
+ if (keygot[1]==0 and keygot[0]==gdk.keyval_from_name("BackSpace")):
+ ent.set_text("Disabled")
+ else:
+ ent.set_text(gtk.accelerator_name(keygot[0],keygot[1]))
+
+
+def getkey(wid,ent):
+ global keygot
+ win=gtk.Window(gtk.WINDOW_POPUP)
+ win.set_position(gtk.WIN_POS_MOUSE)
+ win.set_resizable(False)
+ fram=gtk.Frame()
+ win.add(fram)
+ fram.set_shadow_type(gtk.SHADOW_OUT)
+ align=gtk.Alignment(0,0,0,0)
+ align.props.border_width=32
+ str="Please press the key on the keyboard\n"
+ str+="you wish to modify this keyboard-shortcut\n"
+ str+="to use from now on. Press BACKSPACE to clear,\n"
+ str+="Press ESCAPE to cancel."
+ lab=gtk.Label(str)
+ fram.add(align)
+ align.add(lab)
+ win.show_all()
+ while(gtk.events_pending()):
+ gtk.main_iteration()
+ gdk.flush()
+ while(gtk.events_pending()):
+ gtk.main_iteration()
+ win.window.set_events(gdk.KEY_PRESS_MASK)
+ gdk.keyboard_grab(win.window,True)
+ win.grab_add()
+ win.grab_focus()
+ keygot=None
+ win.connect("key-press-event",kpe,ent)
+
def BindingPopup(wid,path,col):
#why does this get a tuple? that makes no sense.
spath=None
@@ -434,6 +487,7 @@
tb.attach(ent,1,2,0,1)
grab=gtk.Button("Grab Key")
tb.attach(grab,2,3,0,1)
+ grab.connect("clicked",getkey,ent)
clear=gtk.Button("Clear")
tb.attach(clear,3,4,0,1)
rest=gtk.Button()
More information about the commits
mailing list