diff options
author | Koen Kooi <koen@openembedded.org> | 2008-03-07 13:03:27 +0000 |
---|---|---|
committer | Koen Kooi <koen@openembedded.org> | 2008-03-07 13:03:27 +0000 |
commit | c9939aadda2a2f0449996be2ce2ce95c085439a8 (patch) | |
tree | b459493b797d7e1cfb7b0ef09d828a58dafaa6b5 | |
parent | 2cb014cbaf8e3845a8e8b99d65aa40a4e0c5dcb2 (diff) | |
download | openembedded-c9939aadda2a2f0449996be2ce2ce95c085439a8.tar.gz |
xserver-kdrive:
Revision: 3ea27c0c881e1f8965e9208c8a3d98d022602838
Ancestor: 6795ad85517140b388d2c168ea971686ade5c7e3
xserver-kdrive-1.3/1.4: keycode MEDIUMRAW patch, oebug 2637
* see details in bugtracker and mailinglist
applied changes from 6795ad85517140b388d2c168ea971686ade5c7e3
through 3ea27c0c881e1f8965e9208c8a3d98d022602838
5 files changed, 132 insertions, 2 deletions
diff --git a/BACKPORTS.txt b/BACKPORTS.txt index a915c93467..55b670e999 100644 --- a/BACKPORTS.txt +++ b/BACKPORTS.txt @@ -194,5 +194,5 @@ a9ec71b4b3a7b6500927fc2c0f61184d610a91e6 Added PXA27x resume fix from Russell Ki 95605d9087fdf6917d1950bf9008c71fe0efdfda linux-rp-2.6.24: add netfilter modules for qemux86, make 2.6.24 preferred (Hans, Koen) eb1c40b4c0c0e45af72840032d1f8ffdf59afecc linux-rp-2.6.24: Add tosa supprot from Dmitry Baryshkov (#3879) (Hans, Koen) 9a5df4f82194968b8ea8a94d7effc5bf61c1e650 zaurusd fixes (Stanislav, Koen) - +3ea27c0c881e1f8965e9208c8a3d98d022602838 xkdrive medium-raw fixes (Stanislav, Koen) diff --git a/packages/xorg-xserver/xserver-kdrive-1.3.0.0/linux-keyboard-mediumraw.patch b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/linux-keyboard-mediumraw.patch new file mode 100644 index 0000000000..997028ad8d --- /dev/null +++ b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/linux-keyboard-mediumraw.patch @@ -0,0 +1,83 @@ +Index: xorg-server-1.3.0.0/hw/kdrive/linux/keyboard.c +=================================================================== +--- xorg-server-1.3.0.0.orig/hw/kdrive/linux/keyboard.c 2006-11-16 18:01:23.000000000 +0000 ++++ xorg-server-1.3.0.0/hw/kdrive/linux/keyboard.c 2007-08-12 12:14:29.000000000 +0000 +@@ -384,14 +384,35 @@ + LinuxKeyboardRead (int fd, void *closure) + { + unsigned char buf[256], *b; +- int n; ++ int n, mediumraw_data, mediumraw_event; ++ static enum { LOWKEY, BYTE1, BYTE2 } mediumraw_state = LOWKEY; + + while ((n = read (fd, buf, sizeof (buf))) > 0) + { + b = buf; + while (n--) + { +- KdEnqueueKeyboardEvent (b[0] & 0x7f, b[0] & 0x80); ++ switch (mediumraw_state) ++ { ++ case LOWKEY: ++ if ( (b[0] & 0x7f) == 0) ++ { ++ mediumraw_state = BYTE1; ++ mediumraw_event = b[0] & 0x80; ++ } ++ else ++ KdEnqueueKeyboardEvent (b[0] & 0x7f, b[0] & 0x80); ++ break; ++ case BYTE1: ++ mediumraw_data = (b[0] & 0x7f) << 7; ++ mediumraw_state = BYTE2; ++ break; ++ case BYTE2: ++ /* FIXME: KdEnqueueKeyboardEvent should accept word size */ ++ KdEnqueueKeyboardEvent ( mediumraw_data | (b[0] & 0x7f), mediumraw_event); ++ mediumraw_state = LOWKEY; ++ break; ++ } + b++; + } + } +Index: xorg-server-1.3.0.0/hw/xfree86/os-support/linux/lnx_kbd.c +=================================================================== +--- xorg-server-1.3.0.0.orig/hw/xfree86/os-support/linux/lnx_kbd.c 2006-11-16 18:01:25.000000000 +0000 ++++ xorg-server-1.3.0.0/hw/xfree86/os-support/linux/lnx_kbd.c 2007-08-12 12:14:29.000000000 +0000 +@@ -430,12 +430,32 @@ + { + KbdDevPtr pKbd = (KbdDevPtr) pInfo->private; + unsigned char rBuf[64]; +- int nBytes, i; ++ int nBytes, i, mediumraw_data, mediumraw_event; ++ static enum { LOWKEY, BYTE1, BYTE2 } mediumraw_state = LOWKEY; + if ((nBytes = read( pInfo->fd, (char *)rBuf, sizeof(rBuf))) > 0) { +- for (i = 0; i < nBytes; i++) +- pKbd->PostEvent(pInfo, rBuf[i] & 0x7f, +- rBuf[i] & 0x80 ? FALSE : TRUE); ++ for (i = 0; i < nBytes; i++) { ++ switch (mediumraw_state) { ++ case LOWKEY: ++ if ( (rBuf[i] & 0x7f) == 0) { ++ mediumraw_state = BYTE1; ++ mediumraw_event = rBuf[i] & 0x80; ++ } ++ else ++ pKbd->PostEvent(pInfo, rBuf[i] & 0x7f, ++ rBuf[i] & 0x80 ? FALSE : TRUE); ++ break; ++ case BYTE1: ++ mediumraw_data = (rBuf[i] & 0x7f) << 7; ++ mediumraw_state = BYTE2; ++ break; ++ case BYTE2: ++ pKbd->PostEvent(pInfo, mediumraw_data | (rBuf[i] & 0x7f), ++ mediumraw_event ? FALSE : TRUE); ++ mediumraw_state = LOWKEY; ++ break; ++ } + } ++ } + } + + static Bool diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/linux-keyboard-mediumraw.patch b/packages/xorg-xserver/xserver-kdrive-1.4/linux-keyboard-mediumraw.patch new file mode 100644 index 0000000000..36d2f8eae8 --- /dev/null +++ b/packages/xorg-xserver/xserver-kdrive-1.4/linux-keyboard-mediumraw.patch @@ -0,0 +1,44 @@ +Index: git/hw/kdrive/linux/keyboard.c +=================================================================== +--- git.orig/hw/kdrive/linux/keyboard.c 2007-11-14 21:30:45.000000000 +0000 ++++ git/hw/kdrive/linux/keyboard.c 2007-11-15 12:00:11.000000000 +0000 +@@ -42,6 +42,8 @@ + #include <sys/ioctl.h> + + extern int LinuxConsoleFd; ++static unsigned char mediumraw_data, mediumraw_up; ++static enum { DEFAULT, EXTBYTE1, EXTBYTE2 } mediumraw_state = DEFAULT; + + static const KeySym linux_to_x[256] = { + NoSymbol, NoSymbol, NoSymbol, NoSymbol, +@@ -701,7 +703,29 @@ + else + #endif + scancode = b[0] & 0x7f; +- KdEnqueueKeyboardEvent (closure, scancode, b[0] & 0x80); ++ /* This is extended medium raw mode interpreter ++ see linux/drivers/keyboard.c (kbd->kbdmode == VC_MEDIUMRAW) */ ++ switch (mediumraw_state) ++ { ++ case DEFAULT: ++ if (scancode == 0) ++ { ++ mediumraw_state = EXTBYTE1; ++ mediumraw_up = b[0] & 0x80; ++ } ++ else ++ KdEnqueueKeyboardEvent (closure, scancode, b[0] & 0x80); ++ break; ++ case EXTBYTE1: ++ mediumraw_data = scancode; ++ mediumraw_state = EXTBYTE2; ++ break; ++ case EXTBYTE2: ++ /* Note: Only codes < 256 will pass correctly through KdEnqueueKeyboardEvent() */ ++ KdEnqueueKeyboardEvent (closure, (int)mediumraw_data << 7 | scancode, mediumraw_up); ++ mediumraw_state = DEFAULT; ++ break; ++ } + b++; + } + } diff --git a/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb b/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb index 4367e40adf..a86be5b260 100644 --- a/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb +++ b/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb @@ -3,7 +3,7 @@ require xserver-kdrive-common.inc DEPENDS += "libxkbfile libxcalibrate" PE = "1" -PR = "r23" +PR = "r24" SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \ ${KDRIVE_COMMON_PATCHES} \ @@ -20,6 +20,7 @@ SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \ file://w100-autofoo.patch;patch=1 \ file://w100-fix-offscreen-bmp.patch;patch=1 \ file://kdrive-1.3-18bpp.patch;patch=1 \ + file://linux-keyboard-mediumraw.patch;patch=1 \ file://gumstix-kmode.patch;patch=1 \ file://smedia-glamo.patch;patch=1 \ file://build-glamo.patch;patch=1 \ diff --git a/packages/xorg-xserver/xserver-kdrive_1.4.bb b/packages/xorg-xserver/xserver-kdrive_1.4.bb index 87880c9ef8..625e07e95e 100644 --- a/packages/xorg-xserver/xserver-kdrive_1.4.bb +++ b/packages/xorg-xserver/xserver-kdrive_1.4.bb @@ -3,6 +3,7 @@ require xserver-kdrive-common.inc DEPENDS += "libxkbfile libxcalibrate pixman" PE = "1" +PR = "r2" SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \ ${KDRIVE_COMMON_PATCHES} \ @@ -15,6 +16,7 @@ SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \ file://w100-autofoo.patch;patch=1 \ file://w100-fix-offscreen-bmp.patch;patch=1 \ file://w100-new-input-world-order.patch;patch=1 \ + file://linux-keyboard-mediumraw.patch;patch=1 \ file://xcalibrate-new-input-world-order.patch;patch=1 \ file://tslib-default-device.patch;patch=1 \ file://fbdev-evdev.patch;patch=1 \ |