summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaiki Ueno <ueno@unixuser.org>2013-04-19 15:24:52 +0900
committerDaiki Ueno <ueno@unixuser.org>2013-04-22 15:31:32 +0900
commit5c929ff1a50fae2c29437b2fd4909a2ac4c8d21c (patch)
tree6d24ae9adf762f175b7f2b3d67124e4219d65a3b
parent33ad8a8b2247d9c435970c0aa6d2262ecbc24269 (diff)
downloadcaribou-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.xml8
-rw-r--r--data/layouts/fullscale/common/symbols.xml8
-rw-r--r--data/layouts/touch/ara.xml.in4
-rw-r--r--data/layouts/touch/common/qwerty.xml8
-rw-r--r--data/layouts/touch/common/symbols.xml8
-rw-r--r--data/layouts/touch/il.xml.in4
-rw-r--r--libcaribou/key-model.vala18
-rw-r--r--libcaribou/xml-deserializer.vala2
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) {