summaryrefslogtreecommitdiffstats
path: root/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/linux-keyboard-mediumraw.patch
diff options
context:
space:
mode:
authorMarcin Juszkiewicz <hrw@openedhand.com>2008-04-23 10:29:06 +0000
committerMarcin Juszkiewicz <hrw@openedhand.com>2008-04-23 10:29:06 +0000
commitff2e381fd7fb8db0c13382ecf968bb6cb100e88a (patch)
tree240178210ae87b5987ec4250ec511316678fb6bc /meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/linux-keyboard-mediumraw.patch
parent6543b12207ff258e65429665198677e2130351c8 (diff)
downloadpoky-ff2e381fd7fb8db0c13382ecf968bb6cb100e88a.tar.gz
xserver-kdrive: added 1.4.99.901 (1.5-rc) from OE
- moved common (1.3.0.0/1.4.99.901) patches to xserver-kdrive TODO: merge xmodmap and "-mouse tslib" from OE git-svn-id: https://svn.o-hand.com/repos/poky/trunk@4317 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/linux-keyboard-mediumraw.patch')
-rw-r--r--meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/linux-keyboard-mediumraw.patch44
1 files changed, 44 insertions, 0 deletions
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/linux-keyboard-mediumraw.patch b/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/linux-keyboard-mediumraw.patch
new file mode 100644
index 0000000000..36d2f8eae8
--- /dev/null
+++ b/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/linux-keyboard-mediumraw.patch
@@ -0,0 +1,44 @@
1Index: git/hw/kdrive/linux/keyboard.c
2===================================================================
3--- git.orig/hw/kdrive/linux/keyboard.c 2007-11-14 21:30:45.000000000 +0000
4+++ git/hw/kdrive/linux/keyboard.c 2007-11-15 12:00:11.000000000 +0000
5@@ -42,6 +42,8 @@
6 #include <sys/ioctl.h>
7
8 extern int LinuxConsoleFd;
9+static unsigned char mediumraw_data, mediumraw_up;
10+static enum { DEFAULT, EXTBYTE1, EXTBYTE2 } mediumraw_state = DEFAULT;
11
12 static const KeySym linux_to_x[256] = {
13 NoSymbol, NoSymbol, NoSymbol, NoSymbol,
14@@ -701,7 +703,29 @@
15 else
16 #endif
17 scancode = b[0] & 0x7f;
18- KdEnqueueKeyboardEvent (closure, scancode, b[0] & 0x80);
19+ /* This is extended medium raw mode interpreter
20+ see linux/drivers/keyboard.c (kbd->kbdmode == VC_MEDIUMRAW) */
21+ switch (mediumraw_state)
22+ {
23+ case DEFAULT:
24+ if (scancode == 0)
25+ {
26+ mediumraw_state = EXTBYTE1;
27+ mediumraw_up = b[0] & 0x80;
28+ }
29+ else
30+ KdEnqueueKeyboardEvent (closure, scancode, b[0] & 0x80);
31+ break;
32+ case EXTBYTE1:
33+ mediumraw_data = scancode;
34+ mediumraw_state = EXTBYTE2;
35+ break;
36+ case EXTBYTE2:
37+ /* Note: Only codes < 256 will pass correctly through KdEnqueueKeyboardEvent() */
38+ KdEnqueueKeyboardEvent (closure, (int)mediumraw_data << 7 | scancode, mediumraw_up);
39+ mediumraw_state = DEFAULT;
40+ break;
41+ }
42 b++;
43 }
44 }