[caribou] Make key repeat work again
- From: Daiki Ueno <dueno src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [caribou] Make key repeat work again
- Date: Mon, 22 Apr 2013 06:32:05 +0000 (UTC)
commit 5c929ff1a50fae2c29437b2fd4909a2ac4c8d21c
Author: Daiki Ueno <ueno unixuser org>
Date: Fri Apr 19 15:24:52 2013 +0900
Make key repeat work again
https://bugzilla.gnome.org/show_bug.cgi?id=690435
data/layouts/fullscale/common/qwerty.xml | 8 ++++----
data/layouts/fullscale/common/symbols.xml | 8 ++++----
data/layouts/touch/ara.xml.in | 4 ++--
data/layouts/touch/common/qwerty.xml | 8 ++++----
data/layouts/touch/common/symbols.xml | 8 ++++----
data/layouts/touch/il.xml.in | 4 ++--
libcaribou/key-model.vala | 18 ++++++++++++++----
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) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]