diff options
author | Daiki Ueno <ueno@unixuser.org> | 2013-04-19 15:24:52 +0900 |
---|---|---|
committer | Daiki Ueno <ueno@unixuser.org> | 2013-04-22 15:31:32 +0900 |
commit | 5c929ff1a50fae2c29437b2fd4909a2ac4c8d21c (patch) | |
tree | 6d24ae9adf762f175b7f2b3d67124e4219d65a3b | |
parent | 33ad8a8b2247d9c435970c0aa6d2262ecbc24269 (diff) | |
download | caribou-5c929ff1a50fae2c29437b2fd4909a2ac4c8d21c.tar.gz |
Make key repeat work again
https://bugzilla.gnome.org/show_bug.cgi?id=690435
-rw-r--r-- | data/layouts/fullscale/common/qwerty.xml | 8 | ||||
-rw-r--r-- | data/layouts/fullscale/common/symbols.xml | 8 | ||||
-rw-r--r-- | data/layouts/touch/ara.xml.in | 4 | ||||
-rw-r--r-- | data/layouts/touch/common/qwerty.xml | 8 | ||||
-rw-r--r-- | data/layouts/touch/common/symbols.xml | 8 | ||||
-rw-r--r-- | data/layouts/touch/il.xml.in | 4 | ||||
-rw-r--r-- | libcaribou/key-model.vala | 18 | ||||
-rw-r--r-- | libcaribou/xml-deserializer.vala | 2 |
8 files changed, 36 insertions, 24 deletions
diff --git a/data/layouts/fullscale/common/qwerty.xml b/data/layouts/fullscale/common/qwerty.xml index d430a6a..d1368a1 100644 --- a/data/layouts/fullscale/common/qwerty.xml +++ b/data/layouts/fullscale/common/qwerty.xml @@ -55,7 +55,7 @@ <key name="omacron"/> </key> <key name="p"/> - <key name="BackSpace"/> + <key name="BackSpace" repeatable="yes"/> </row> <row align="right"> <key name="Tab" width="1.5"/> @@ -100,7 +100,7 @@ <key align="left" name="Caribou_Symbols" toggle="symbols1" width="2.0"/> <key align="left" name="Control_L" width="1.5"/> <key align="left" name="Alt_L" width="1.5"/> - <key align="left" name="space" width="5.0"/> + <key align="left" name="space" width="5.0" repeatable="yes"/> <key align="right" name="Caribou_Prefs"/> </row> </level> @@ -159,7 +159,7 @@ <key name="Omacron"/> </key> <key name="P"/> - <key name="BackSpace"/> + <key name="BackSpace" repeatable="yes"/> </row> <row align="right"> <key name="Tab" width="1.5"/> @@ -204,7 +204,7 @@ <key align="left" name="Caribou_Symbols" toggle="symbols1" width="2.0"/> <key align="left" name="Control_L" width="1.5"/> <key align="left" name="Alt_L" width="1.5"/> - <key align="left" name="space" width="5.0"/> + <key align="left" name="space" width="5.0" repeatable="yes"/> <key align="right" name="Caribou_Prefs"/> </row> </level> diff --git a/data/layouts/fullscale/common/symbols.xml b/data/layouts/fullscale/common/symbols.xml index 98d28cf..e908993 100644 --- a/data/layouts/fullscale/common/symbols.xml +++ b/data/layouts/fullscale/common/symbols.xml @@ -27,7 +27,7 @@ <key name="8"/> <key name="9"/> <key name="0"/> - <key name="BackSpace"/> + <key name="BackSpace" repeatable="yes"/> </row> <row align="right"> <key name="Tab" width="1.5"/> @@ -61,7 +61,7 @@ <key align="left" name="Caribou_Alpha" toggle="default" width="2.0"/> <key align="left" name="Control_L" width="1.5"/> <key align="left" name="Alt_L" width="1.5"/> - <key align="left" name="space" width="5.0"/> + <key align="left" name="space" width="5.0" repeatable="yes"/> <key align="right" name="Caribou_Prefs"/> </row> </level> @@ -92,7 +92,7 @@ <key name="asterisk"/> <key name="plus"/> <key name="equal"/> - <key name="BackSpace"/> + <key name="BackSpace" repeatable="yes"/> </row> <row align="right"> <key name="Tab" width="1.5"/> @@ -126,7 +126,7 @@ <key align="left" name="Caribou_Alpha" toggle="default" width="2.0"/> <key align="left" name="Control_L" width="1.5"/> <key align="left" name="Alt_L" width="1.5"/> - <key align="left" name="space" width="5.0"/> + <key align="left" name="space" width="5.0" repeatable="yes"/> <key align="right" name="Caribou_Prefs"/> </row> </level> diff --git a/data/layouts/touch/ara.xml.in b/data/layouts/touch/ara.xml.in index f45d555..6b9230b 100644 --- a/data/layouts/touch/ara.xml.in +++ b/data/layouts/touch/ara.xml.in @@ -12,7 +12,7 @@ <key name="Arabic_khah"/> <key name="Arabic_hah"/> <key name="Arabic_jeem"/> - <key name="BackSpace"/> + <key name="BackSpace" repeatable="yes"/> </row> <row align="center"> <key name="Arabic_sheen"/> @@ -41,7 +41,7 @@ <row> <key align="left" name="Caribou_Symbols" toggle="symbols1" width="2.0"/> <key align="left" name="Arabic_fathatan"/> - <key align="left" name="space" width="6.0"/> + <key align="left" name="space" width="6.0" repeatable="yes"/> <key align="right" name="Caribou_Prefs"/> </row> </level> diff --git a/data/layouts/touch/common/qwerty.xml b/data/layouts/touch/common/qwerty.xml index 8947605..7c7aea4 100644 --- a/data/layouts/touch/common/qwerty.xml +++ b/data/layouts/touch/common/qwerty.xml @@ -40,7 +40,7 @@ <key name="omacron"/> </key> <key name="p"/> - <key name="BackSpace"/> + <key name="BackSpace" repeatable="yes"/> </row> <row align="right"> <key name="a"> @@ -82,7 +82,7 @@ </row> <row> <key align="left" name="Caribou_Symbols" toggle="symbols1" width="2.0"/> - <key align="center" name="space" width="6.0"/> + <key align="center" name="space" width="6.0" repeatable="yes"/> <key align="right" name="Caribou_Prefs"/> </row> </level> @@ -126,7 +126,7 @@ <key name="Omacron"/> </key> <key name="P"/> - <key name="BackSpace"/> + <key name="BackSpace" repeatable="yes"/> </row> <row align="right"> <key name="A"> @@ -168,7 +168,7 @@ </row> <row> <key align="left" name="Caribou_Symbols" toggle="symbols1" width="2.0"/> - <key align="center" name="space" width="6.0"/> + <key align="center" name="space" width="6.0" repeatable="yes"/> <key align="right" name="Caribou_Prefs"/> </row> </level> diff --git a/data/layouts/touch/common/symbols.xml b/data/layouts/touch/common/symbols.xml index 47ce01f..4510984 100644 --- a/data/layouts/touch/common/symbols.xml +++ b/data/layouts/touch/common/symbols.xml @@ -12,7 +12,7 @@ <key name="8"/> <key name="9"/> <key name="0"/> - <key name="BackSpace"/> + <key name="BackSpace" repeatable="yes"/> </row> <row align="right"> <key name="minus"/> @@ -43,7 +43,7 @@ </row> <row> <key align="left" name="Caribou_Alpha" toggle="default" width="2.0"/> - <key align="center" name="space" width="6.0"/> + <key align="center" name="space" width="6.0" repeatable="yes"/> <key align="right" name="Caribou_Prefs"/> </row> </level> @@ -59,7 +59,7 @@ <key name="asterisk"/> <key name="plus"/> <key name="equal"/> - <key name="BackSpace"/> + <key name="BackSpace" repeatable="yes"/> </row> <row align="right"> <key align="right" name="underscore"/> @@ -90,7 +90,7 @@ </row> <row> <key align="left" name="Caribou_Alpha" toggle="default" width="2.0"/> - <key align="center" name="space" width="6.0"/> + <key align="center" name="space" width="6.0" repeatable="yes"/> <key align="right" name="Caribou_Prefs"/> </row> </level> diff --git a/data/layouts/touch/il.xml.in b/data/layouts/touch/il.xml.in index ff29ff9..360c7aa 100644 --- a/data/layouts/touch/il.xml.in +++ b/data/layouts/touch/il.xml.in @@ -12,7 +12,7 @@ <key name="hebrew_finalnun"/> <key name="hebrew_finalmem"/> <key name="hebrew_pe"/> - <key name="BackSpace"/> + <key name="BackSpace" repeatable="yes"/> </row> <row align="center"> <key name="hebrew_shin"/> @@ -40,7 +40,7 @@ </row> <row> <key name="Caribou_Symbols" align="left" toggle="symbols1" width="2.0"/> - <key name="space" width="6.0" align="center"/> + <key name="space" width="6.0" align="center" repeatable="yes"/> <key name="Caribou_Prefs" align="right"/> </row> </level> diff --git a/libcaribou/key-model.vala b/libcaribou/key-model.vala index 8709280..ce6315b 100644 --- a/libcaribou/key-model.vala +++ b/libcaribou/key-model.vala @@ -8,6 +8,7 @@ namespace Caribou { public string align { get; set; default = "center"; } public double width { get; set; default = 1.0; } public string toggle { get; set; default = ""; } + public bool repeatable { get; set; default = false; } private Gdk.ModifierType mod_mask; public bool is_modifier { @@ -144,7 +145,12 @@ namespace Caribou { modifier_state = ModifierState.NONE; } } - hold_tid = GLib.Timeout.add(1000, on_key_held); + + if (repeatable) + xadapter.keyval_press (keyval); + else + hold_tid = GLib.Timeout.add (1000, on_key_held); + key_pressed(this); } @@ -160,9 +166,13 @@ namespace Caribou { } } - foreach (var keyval in _keyvals) { - xadapter.keyval_press(keyval); - xadapter.keyval_release(keyval); + if (repeatable) + xadapter.keyval_release (keyval); + else { + foreach (var keyval in _keyvals) { + xadapter.keyval_press (keyval); + xadapter.keyval_release (keyval); + } } key_released(this); diff --git a/libcaribou/xml-deserializer.vala b/libcaribou/xml-deserializer.vala index dd42309..e5a3239 100644 --- a/libcaribou/xml-deserializer.vala +++ b/libcaribou/xml-deserializer.vala @@ -160,6 +160,8 @@ namespace Caribou { key.align = prop->children->content; else if (prop->name == "width") key.width = double.parse (prop->children->content); + else if (prop->name == "repeatable" && text == null) + key.repeatable = prop->children->content == "yes"; } for (Xml.Node* i = node->children; i != null; i = i->next) { |