Switch to using hardware_keycodes when fetching keyboard events, to

portnov [2008-08-27 07:35:32]
Switch to using hardware_keycodes when fetching keyboard events, to
recognize keys in any keyboard layout.
Filename
qwerty.py
diff --git a/qwerty.py b/qwerty.py
index dbe3d0a..0f9450c 100755
--- a/qwerty.py
+++ b/qwerty.py
@@ -502,6 +502,11 @@ class GUI(object):
     def exit(self,widget=None):
         save_config()
         gtk.main_quit()
+
+    def get_key(self,hw_code):
+        km = gtk.gdk.keymap_get_default()
+        kv = km.lookup_key(hw_code,0,0)
+        return gtk.gdk.keyval_name(kv)

     def on_key(self,widget,event):
         global speckeys
@@ -516,20 +521,20 @@ class GUI(object):
                 self.exit()
                 return

-        k = event.string.upper()
+        k = self.get_key(event.hardware_keycode)
         if k in DIGITS:
             self.show_section(k)
-        elif k in ALPHABET:
-            self.do_button(k)
         elif k == ' ':
             self.switch_taskbar()
+        elif k in ALPHABET.lower():
+            self.do_button(k)

     def key_exec(self,key):
         cmd = self.S.keys[key].command
         os.system(cmd + " &")

     def do_button(self,key):
-        self.on_button(self.buttons[key])
+        self.on_button(self.buttons[key.upper()])

     def send_event(self,win,ctype,data):
         data = (data+[0]*(5-len(data)))[:5]
ViewGit