xkbd 0.8.15: Add default common slides.
authorPaul Sokolovsky <pmiscml@gmail.com>
Tue, 27 Nov 2007 20:47:28 +0000 (20:47 +0000)
committerPaul Sokolovsky <pmiscml@gmail.com>
Tue, 27 Nov 2007 20:47:28 +0000 (20:47 +0000)
* xkbd has supports for "slides", where instead of just click on key,
there's a gesture up, down, left, or right. These can be specified in
keyboard definition, and xkbd has defaults for each 4. But of 4 pristine
defaults, only 1 is useful - up is shift+key. The other are for ctrl, alt,
etc modifiers, which are less useful in real life. Instead, have following
defaults: left - backspace, right - space, down - Enter. This means that
on common xkbd file w/o slide definition, making a right-to-left gesture
anywhere on keyboard will be equivalent of backspace, etc.

packages/xkbd/xkbd-0.8.15/add-default-common-slides.patch [new file with mode: 0644]
packages/xkbd/xkbd_0.8.15.bb

diff --git a/packages/xkbd/xkbd-0.8.15/add-default-common-slides.patch b/packages/xkbd/xkbd-0.8.15/add-default-common-slides.patch
new file mode 100644 (file)
index 0000000..0423ee1
--- /dev/null
@@ -0,0 +1,44 @@
+diff -r 6b20ef8fbdee src/kb.c
+--- a/src/kb.c Tue Nov 27 21:28:21 2007 +0200
++++ b/src/kb.c Tue Nov 27 22:27:09 2007 +0200
+@@ -954,6 +954,13 @@ void kb_send_keypress(button *b)
+   int slide_flag = 0;
+   struct keycodeEntry vk_keycodes[10];
++  
++  static KeySym ksSpace, ksBackSpace, ksReturn;
++  if (!ksSpace) {
++    ksSpace = XStringToKeysym("space");
++    ksBackSpace = XStringToKeysym("BackSpace");
++    ksReturn = XStringToKeysym("Return");
++  }
+   if (b->kb->state & KB_STATE_SHIFT || b->kb->state & KB_STATE_CAPS)
+   {
+@@ -981,20 +988,17 @@ void kb_send_keypress(button *b)
+           ks = b->slide_up_ks;
+           if (ks == 0) ks = b->shift_ks;
+           break;
+-        case down : /* hold ctrl */
++        case down :
+           ks = b->slide_down_ks;
+-          if (ks == 0) slide_flag = KB_STATE_CTRL;
++          if (ks == 0) ks = ksReturn;
+           break;
+-        case left : /* hold alt */
++        case left :
+           ks = b->slide_left_ks;
+-          if (ks == 0) 
+-            {
+-              ks = b->mod_ks;
+-              slide_flag = KB_STATE_MOD;
+-            }
++          if (ks == 0) ks = ksBackSpace;
+           break;
+-        case right : /* hold alt */
++        case right :
+           ks = b->slide_right_ks;
++          if (ks == 0) ks = ksSpace;
+           break;
+         case none:
+           break;
index 2d070fd..f27189f 100644 (file)
@@ -2,9 +2,10 @@ SRC_URI = "http://handhelds.org/~mallum/xkbd/xkbd-${PV}-CVS.tar.gz \
            file://libtool-lossage.patch;patch=1;pnum=1 \
           file://fix-equalsign.patch;patch=1 \
           file://fix-circumkey.patch;patch=1 \
+          file://add-default-common-slides.patch;patch=1 \
           file://xkbd.png"
 LICENSE = "GPL"
-PR = "r2"
+PR = "r3"
 
 SECTION = "x11"
 DEPENDS = "libxpm libxtst libxft"