[caribou] Adjusted Caribou to use new C library.



commit 7b0e55576b198bbfce0854af2ebc4f295da1d0c7
Author: Eitan Isaacson <eitan monotonous org>
Date:   Sat Apr 16 15:06:03 2011 -0700

    Adjusted Caribou to use new C library.

 caribou/ui/keyboard.py        |   59 +++++++++++++++++-----------------------
 data/keyboards/hebrew.xml     |   12 ++++----
 data/keyboards/lexic_es.json  |    4 +-
 data/keyboards/qwerty.xml     |   12 ++++----
 data/keyboards/qwerty_en.json |   12 ++++----
 data/keyboards/qwerty_es.json |   32 +++++++++++-----------
 data/keyboards/qwerty_ja.xml  |   16 +++++-----
 7 files changed, 69 insertions(+), 78 deletions(-)
---
diff --git a/caribou/ui/keyboard.py b/caribou/ui/keyboard.py
index 1fb43ba..c390d49 100644
--- a/caribou/ui/keyboard.py
+++ b/caribou/ui/keyboard.py
@@ -30,8 +30,8 @@ import gobject
 from gi.repository import Gdk
 from gi.repository import Gtk
 from gi.repository import Pango
+from gi.repository import Caribou
 import sys
-import virtkey
 import os
 import traceback
 from caribou.ui.i18n import _
@@ -48,20 +48,6 @@ from xml.dom import minidom
 import gettext
 import i18n
 
-KEY_MASKS = {'shift': Gdk.ModifierType.SHIFT_MASK,
-             'lock': Gdk.ModifierType.LOCK_MASK,
-             'control': Gdk.ModifierType.CONTROL_MASK,
-             'mod1': Gdk.ModifierType.MOD1_MASK,
-             'mod2': Gdk.ModifierType.MOD2_MASK,
-             'mod3': Gdk.ModifierType.MOD3_MASK,
-             'mod4': Gdk.ModifierType.MOD4_MASK,
-             'mod5': Gdk.ModifierType.MOD5_MASK,
-             'button1': Gdk.ModifierType.BUTTON1_MASK,
-             'button2': Gdk.ModifierType.BUTTON2_MASK,
-             'button3': Gdk.ModifierType.BUTTON3_MASK,
-             'button4': Gdk.ModifierType.BUTTON4_MASK,
-             'button5': Gdk.ModifierType.BUTTON5_MASK}
-
 class BaseKey(object):
     '''An abstract class the represents a key on the keyboard.
     Inheriting classes also need to inherit from Gtk.Button or any
@@ -122,7 +108,6 @@ class BaseKey(object):
         raise NotImplemented
 
     def _on_image_key_mapped(self, key):
-        print
         key_width = key.get_allocated_height()
         icon_size = Gtk.IconSize.MENU
         image = Gtk.Image()
@@ -134,7 +119,6 @@ class BaseKey(object):
                      Gtk.IconSize.DIALOG]:
             pixbuf = image.render_icon_pixbuf(Gtk.STOCK_PREFERENCES, size)
             pixel_size = pixbuf.get_width()
-            print size, pixel_size, key_width
             if pixel_size > key_width:
                 break
             icon_size = size
@@ -151,7 +135,7 @@ class BaseKey(object):
         return self._value
 
     def _set_value(self, value):
-        if self.key_type == const.NORMAL_KEY_TYPE:
+        if self.key_type in (const.NORMAL_KEY_TYPE, const.MASK_KEY_TYPE):
             if type(value) == str:
                 value = value.decode('utf-8')
             if type(value) == unicode:
@@ -161,11 +145,6 @@ class BaseKey(object):
                     key_value = Gdk.keyval_from_name(value)
                     if key_value:
                         self._value = key_value
-        elif self.key_type == const.MASK_KEY_TYPE:
-            if type(value) == str or type(value) == unicode:
-                for key, mask in KEY_MASKS.items():
-                    if value == key:
-                        self._value = mask
         else:
             self._value = value
 
@@ -377,10 +356,10 @@ class CaribouKeyboard(Gtk.Notebook):
     def __init__(self):
         gobject.GObject.__init__(self)
         self.set_show_tabs(False)
-        self.vk = virtkey.virtkey()
+        self.vk = Caribou.VirtualKeyboard()
         self.key_size = 30
-        self.current_mask = 0
         self.current_page = 0
+        self.depressed_mods = []
 
         self.row_height = -1
 
@@ -405,8 +384,10 @@ class CaribouKeyboard(Gtk.Notebook):
                         key.connect('clicked',
                                     self._pressed_preferences_key)
                     else:
-                        key.connect('clicked',
+                        key.connect('pressed',
                                     self._pressed_normal_key)
+                        key.connect('released',
+                                    self._released_normal_key)
 
     def _clear(self):
         n_pages = self.get_n_pages()
@@ -414,20 +395,30 @@ class CaribouKeyboard(Gtk.Notebook):
             self.remove_page(i)
 
     def _pressed_normal_key(self, key):
-        self.vk.press_keysym(key.value)
-        self.vk.release_keysym(key.value)
-        self.current_mask = 0
+        self.vk.keyval_press(key.value)
+
+    def _released_normal_key(self, key):
+        self.vk.keyval_release(key.value)
+        while True:
+            try:
+                mod = self.depressed_mods.pop()
+            except IndexError:
+                break
+            mod.set_active (False)
 
     def _pressed_layout_switcher_key(self, key):
         self._switch_to_layout(key.value)
 
     def _toggled_mask_key(self, key):
-        if not key.get_active():
-            self.vk.unlatch_mod(key.value)
-            self.current_mask &= ~key.value
+        if key.get_active():
+            self.vk.keyval_press(key.value)
+            self.depressed_mods.append(key)
         else:
-            self.current_mask |= key.value
-            self.vk.latch_mod(self.current_mask)
+            self.vk.keyval_release(key.value)
+            try:
+                mod = self.depressed_mods.remove(key)
+            except ValueError:
+                pass
 
     def show_all_(self):
         self.set_current_page(self.current_page)
diff --git a/data/keyboards/hebrew.xml b/data/keyboards/hebrew.xml
index 98f4429..251ec81 100644
--- a/data/keyboards/hebrew.xml
+++ b/data/keyboards/hebrew.xml
@@ -69,13 +69,13 @@
 	</key>
 	<key>
 	  <label>&lt;small&gt;&lt;b&gt;Ctrl&lt;/b&gt;&lt;/small&gt;</label>
-	  <value>control</value>
+	  <value>Control_L</value>
 	  <key_type>mask</key_type>
 	  <width>1.5</width>
 	</key>
 	<key>
 	  <label>&lt;small&gt;&lt;b&gt;Alt&lt;/b&gt;&lt;/small&gt;</label>
-	  <value>mod1</value>
+	  <value>Alt_L</value>
 	  <key_type>mask</key_type>
 	  <width>1.5</width>
 	</key>
@@ -162,13 +162,13 @@
 	</key>
 	<key>
 	  <label>&lt;small&gt;&lt;b&gt;Ctrl&lt;/b&gt;&lt;/small&gt;</label>
-	  <value>control</value>
+	  <value>Control_L</value>
 	  <key_type>mask</key_type>
 	  <width>1.5</width>
 	</key>
 	<key>
 	  <label>&lt;small&gt;&lt;b&gt;Alt&lt;/b&gt;&lt;/small&gt;</label>
-	  <value>mod1</value>
+	  <value>Alt_L</value>
 	  <key_type>mask</key_type>
 	  <width>1.5</width>
 	</key>
@@ -249,13 +249,13 @@
 	</key>
 	<key>
 	  <label>&lt;small&gt;&lt;b&gt;Ctrl&lt;/b&gt;&lt;/small&gt;</label>
-	  <value>control</value>
+	  <value>Control_L</value>
 	  <key_type>mask</key_type>
 	  <width>1.5</width>
 	</key>
 	<key>
 	  <label>&lt;small&gt;&lt;b&gt;Alt&lt;/b&gt;&lt;/small&gt;</label>
-	  <value>mod1</value>
+	  <value>Alt_L</value>
 	  <key_type>mask</key_type>
 	  <width>1.5</width>
 	</key>
diff --git a/data/keyboards/lexic_es.json b/data/keyboards/lexic_es.json
index 569d910..1d72adc 100644
--- a/data/keyboards/lexic_es.json
+++ b/data/keyboards/lexic_es.json
@@ -161,7 +161,7 @@
                 {"value": "#", 
                 "width": 2},
                 {"key_type": "mask",
-                "value": "control", 
+                "value": "Control_L", 
                 "label": "<b>Ctrl I</b>",
                 "width": 2}
                ]
@@ -188,7 +188,7 @@
                 "width": 2},
                 {"key_type": "mask",
                 "label": "<b>Alt I</b>", 
-                "value": "mod1", 
+                "value": "Alt_L", 
                 "width": 2}
                 ]
 	}
diff --git a/data/keyboards/qwerty.xml b/data/keyboards/qwerty.xml
index 0d444fb..af5bb6e 100644
--- a/data/keyboards/qwerty.xml
+++ b/data/keyboards/qwerty.xml
@@ -71,13 +71,13 @@
 	</key>
 	<key>
 	  <label>&lt;small&gt;&lt;b&gt;Ctrl&lt;/b&gt;&lt;/small&gt;</label>
-	  <value>control</value>
+	  <value>Control_L</value>
 	  <key_type>mask</key_type>
 	  <width>1.5</width>
 	</key>
 	<key>
 	  <label>&lt;small&gt;&lt;b&gt;Alt&lt;/b&gt;&lt;/small&gt;</label>
-	  <value>mod1</value>
+	  <value>Alt_L</value>
 	  <key_type>mask</key_type>
 	  <width>1.5</width>
 	</key>
@@ -164,13 +164,13 @@
 	</key>
 	<key>
 	  <label>&lt;small&gt;&lt;b&gt;Ctrl&lt;/b&gt;&lt;/small&gt;</label>
-	  <value>control</value>
+	  <value>Control_L</value>
 	  <key_type>mask</key_type>
 	  <width>1.5</width>
 	</key>
 	<key>
 	  <label>&lt;small&gt;&lt;b&gt;Alt&lt;/b&gt;&lt;/small&gt;</label>
-	  <value>mod1</value>
+	  <value>Alt_L</value>
 	  <key_type>mask</key_type>
 	  <width>1.5</width>
 	</key>
@@ -251,13 +251,13 @@
 	</key>
 	<key>
 	  <label>&lt;small&gt;&lt;b&gt;Ctrl&lt;/b&gt;&lt;/small&gt;</label>
-	  <value>control</value>
+	  <value>Control_L</value>
 	  <key_type>mask</key_type>
 	  <width>1.5</width>
 	</key>
 	<key>
 	  <label>&lt;small&gt;&lt;b&gt;Alt&lt;/b&gt;&lt;/small&gt;</label>
-	  <value>mod1</value>
+	  <value>Alt_L</value>
 	  <key_type>mask</key_type>
 	  <width>1.5</width>
 	</key>
diff --git a/data/keyboards/qwerty_en.json b/data/keyboards/qwerty_en.json
index ab5081d..8864085 100644
--- a/data/keyboards/qwerty_en.json
+++ b/data/keyboards/qwerty_en.json
@@ -62,11 +62,11 @@
 	       			"value": "special",
 	       			"width": 1.5},
 	     		       {"label": "<small><b>Ctrl</b></small>",
-	      		        "value": "control",
+	      		        "value": "Control_L",
 	      			"key_type": "mask",
 	      			"width": 1.5},
 	     		       {"label": "<small><b>Alt</b></small>",
-	      		        "value": "mod1",
+	      		        "value": "Alt_L",
 	      			"key_type": "mask",
 	      			"width": 1.5},
 	     		       {"key_type": "dummy",
@@ -147,11 +147,11 @@
 	       			"value": "special",
 	       			"width": 1.5},
 	     		       {"label": "<small><b>Ctrl</b></small>",
-	      		        "value": "control",
+	      		        "value": "Control_L",
 	      			"key_type": "mask",
 	      			"width": 1.5},
 	     		       {"label": "<small><b>Alt</b></small>",
-	      		        "value": "mod1",
+	      		        "value": "Alt_L",
 	      			"key_type": "mask",
 	      			"width": 1.5},
 	     		       {"key_type": "dummy",
@@ -231,11 +231,11 @@
 	       			"value": "lowercase",
 	       			"width": 1.5},
 	     		       {"label": "<small><b>Ctrl</b></small>",
-	      		        "value": "control",
+	      		        "value": "Control_L",
 	      			"key_type": "mask",
 	      			"width": 1.5},
 	     		       {"label": "<small><b>Alt</b></small>",
-	      		        "value": "mod1",
+	      		        "value": "Alt_L",
 	      			"key_type": "mask",
 	      			"width": 1.5},
 	     		       {"key_type": "dummy",
diff --git a/data/keyboards/qwerty_es.json b/data/keyboards/qwerty_es.json
index 9072fb0..4136d08 100644
--- a/data/keyboards/qwerty_es.json
+++ b/data/keyboards/qwerty_es.json
@@ -130,7 +130,7 @@
     },
     {"key":[
 	     {"label": "<small><b>Ctrl</b></small>",
-	      "value": "control",
+	      "value": "Control_L",
 	      "key_type": "mask",
 	      "width": 1.8},
 	     {"label": "<small><b>Win</b></small>",
@@ -138,7 +138,7 @@
 	      "key_type": "mask",
 	      "width": 1.6},
 	     {"label": "<small><b>Alt</b></small>",
-	      "value": "mod1",
+	      "value": "Alt_L",
 	      "key_type": "mask",
 	      "width": 1.6},
 	     {"key_type": "dummy",
@@ -296,7 +296,7 @@
     },
     {"key":[
 	     {"label": "<small><b>Ctrl</b></small>",
-	      "value": "control",
+	      "value": "Control_L",
 	      "key_type": "mask",
 	      "width": 1.8},
 	     {"label": "<small><b>Win</b></small>",
@@ -304,7 +304,7 @@
 	      "key_type": "mask",
 	      "width": 1.6},
 	     {"label": "<small><b>Alt</b></small>",
-	      "value": "mod1",
+	      "value": "Alt_L",
 	      "key_type": "mask",
 	      "width": 1.6},
 	     {"key_type": "dummy",
@@ -460,7 +460,7 @@
     },
     {"key":[
 	     {"label": "<small><b>Ctrl</b></small>",
-	      "value": "control",
+	      "value": "Control_L",
 	      "key_type": "mask",
 	      "width": 1.8},
 	     {"label": "<small><b>Win</b></small>",
@@ -468,7 +468,7 @@
 	      "key_type": "mask",
 	      "width": 1.6},
 	     {"label": "<small><b>Alt</b></small>",
-	      "value": "mod1",
+	      "value": "Alt_L",
 	      "key_type": "mask",
 	      "width": 1.6},
 	     {"key_type": "dummy",
@@ -624,7 +624,7 @@
     },
     {"key":[
 	     {"label": "<small><b>Ctrl</b></small>",
-	      "value": "control",
+	      "value": "Control_L",
 	      "key_type": "mask",
 	      "width": 1.8},
 	     {"label": "<small><b>Win</b></small>",
@@ -632,7 +632,7 @@
 	      "key_type": "mask",
 	      "width": 1.6},
 	     {"label": "<small><b>Alt</b></small>",
-	      "value": "mod1",
+	      "value": "Alt_L",
 	      "key_type": "mask",
 	      "width": 1.6},
 	     {"key_type": "dummy",
@@ -788,7 +788,7 @@
     },
     {"key":[
 	     {"label": "<small><b>Ctrl</b></small>",
-	      "value": "control",
+	      "value": "Control_L",
 	      "key_type": "mask",
 	      "width": 1.8},
 	     {"label": "<small><b>Win</b></small>",
@@ -796,7 +796,7 @@
 	      "key_type": "mask",
 	      "width": 1.6},
 	     {"label": "<small><b>Alt</b></small>",
-	      "value": "mod1",
+	      "value": "Alt_L",
 	      "key_type": "mask",
 	      "width": 1.6},
 	     {"key_type": "dummy",
@@ -952,7 +952,7 @@
     },
     {"key":[
 	     {"label": "<small><b>Ctrl</b></small>",
-	      "value": "control",
+	      "value": "Control_L",
 	      "key_type": "mask",
 	      "width": 1.8},
 	     {"label": "<small><b>Win</b></small>",
@@ -960,7 +960,7 @@
 	      "key_type": "mask",
 	      "width": 1.6},
 	     {"label": "<small><b>Alt</b></small>",
-	      "value": "mod1",
+	      "value": "Alt_L",
 	      "key_type": "mask",
 	      "width": 1.6},
 	     {"key_type": "dummy",
@@ -1116,7 +1116,7 @@
     },
     {"key":[
 	     {"label": "<small><b>Ctrl</b></small>",
-	      "value": "control",
+	      "value": "Control_L",
 	      "key_type": "mask",
 	      "width": 1.8},
 	     {"label": "<small><b>Win</b></small>",
@@ -1124,7 +1124,7 @@
 	      "key_type": "mask",
 	      "width": 1.6},
 	     {"label": "<small><b>Alt</b></small>",
-	      "value": "mod1",
+	      "value": "Alt_L",
 	      "key_type": "mask",
 	      "width": 1.6},
 	     {"key_type": "dummy",
@@ -1280,7 +1280,7 @@
     },
     {"key":[
 	     {"label": "<small><b>Ctrl</b></small>",
-	      "value": "control",
+	      "value": "Control_L",
 	      "key_type": "mask",
 	      "width": 1.8},
 	     {"label": "<small><b>Win</b></small>",
@@ -1288,7 +1288,7 @@
 	      "key_type": "mask",
 	      "width": 1.6},
 	     {"label": "<small><b>Alt</b></small>",
-	      "value": "mod1",
+	      "value": "Alt_L",
 	      "key_type": "mask",
 	      "width": 1.6},
 	     {"key_type": "dummy",
diff --git a/data/keyboards/qwerty_ja.xml b/data/keyboards/qwerty_ja.xml
index ea3733d..6515f15 100644
--- a/data/keyboards/qwerty_ja.xml
+++ b/data/keyboards/qwerty_ja.xml
@@ -328,7 +328,7 @@
       </row>
       <row>
         <key>
-          <value>control</value>
+          <value>Control_L</value>
           <label>&lt;small&gt;&lt;b&gt;Ctrl&lt;/b&gt;&lt;/small&gt;</label>
           <key_type>mask</key_type>
           <width>1.8</width>
@@ -339,7 +339,7 @@
           <width>1.5</width>
         </key>
         <key>
-          <value>mod1</value>
+          <value>Alt_L</value>
           <label>&lt;small&gt;&lt;b&gt;Alt&lt;/b&gt;&lt;/small&gt;</label>
           <key_type>mask</key_type>
           <width>1.5</width>
@@ -361,7 +361,7 @@
           <width>1.5</width>
         </key>
         <key>
-          <value>mod1</value>
+          <value>Alt_L</value>
           <label>&lt;small&gt;&lt;b&gt;Alt&lt;/b&gt;&lt;/small&gt;</label>
           <key_type>mask</key_type>
           <width>1.2</width>
@@ -377,7 +377,7 @@
           <width>1.2</width>
         </key>
         <key>
-          <value>control</value>
+          <value>Control_L</value>
           <label>&lt;small&gt;&lt;b&gt;Ctrl&lt;/b&gt;&lt;/small&gt;</label>
           <key_type>mask</key_type>
           <width>1.5</width>
@@ -718,7 +718,7 @@
       </row>
       <row>
         <key>
-          <value>control</value>
+          <value>Control_L</value>
           <label>&lt;small&gt;&lt;b&gt;Ctrl&lt;/b&gt;&lt;/small&gt;</label>
           <key_type>mask</key_type>
           <width>1.8</width>
@@ -729,7 +729,7 @@
           <width>1.5</width>
         </key>
         <key>
-          <value>mod1</value>
+          <value>Alt_L</value>
           <label>&lt;small&gt;&lt;b&gt;Alt&lt;/b&gt;&lt;/small&gt;</label>
           <key_type>mask</key_type>
           <width>1.5</width>
@@ -751,7 +751,7 @@
           <width>1.5</width>
         </key>
         <key>
-          <value>mod1</value>
+          <value>Alt_L</value>
           <label>&lt;small&gt;&lt;b&gt;Alt&lt;/b&gt;&lt;/small&gt;</label>
           <key_type>mask</key_type>
           <width>1.2</width>
@@ -767,7 +767,7 @@
           <width>1.2</width>
         </key>
         <key>
-          <value>control</value>
+          <value>Control_L</value>
           <label>&lt;small&gt;&lt;b&gt;Ctrl&lt;/b&gt;&lt;/small&gt;</label>
           <key_type>mask</key_type>
           <width>1.5</width>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]