diff options
15 files changed, 1558 insertions, 0 deletions
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/calibrateext.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/calibrateext.patch new file mode 100644 index 0000000000..df5bbe2abf --- /dev/null +++ b/meta/packages/xorg-xserver/xserver-kdrive-xomap/calibrateext.patch | |||
| @@ -0,0 +1,137 @@ | |||
| 1 | --- | ||
| 2 | configure |38107 ----------------------------------------------------------- | ||
| 3 | configure.ac | 2 - | ||
| 4 | hw/kdrive/linux/tslib.c | 68 ++++++++++++++++++++++++++---------------------- | ||
| 5 | 2 files changed, 39 insertions(+), 31 deletions(-) | ||
| 6 | |||
| 7 | |||
| 8 | Index: xorg-server-1.1.99.3/configure.ac | ||
| 9 | =================================================================== | ||
| 10 | --- xorg-server-1.1.99.3.orig/configure.ac 2007-01-30 00:22:41.000000000 +0000 | ||
| 11 | +++ xorg-server-1.1.99.3/configure.ac 2007-01-30 00:22:41.000000000 +0000 | ||
| 12 | @@ -717,7 +717,7 @@ fi | ||
| 13 | |||
| 14 | if test "x$XCALIBRATE" = xyes && test "$KDRIVE" = yes; then | ||
| 15 | AC_DEFINE(XCALIBRATE, 1, [Build XCalibrate extension]) | ||
| 16 | - REQUIRED_MODULES="$REQUIRED_MODULES xcalibrateproto" | ||
| 17 | + REQUIRED_MODULES="$REQUIRED_MODULES xcalibrateext" | ||
| 18 | else | ||
| 19 | XCALIBRATE=no | ||
| 20 | fi | ||
| 21 | Index: xorg-server-1.1.99.3/hw/kdrive/linux/tslib.c | ||
| 22 | =================================================================== | ||
| 23 | --- xorg-server-1.1.99.3.orig/hw/kdrive/linux/tslib.c 2007-01-30 00:44:13.000000000 +0000 | ||
| 24 | +++ xorg-server-1.1.99.3/hw/kdrive/linux/tslib.c 2007-01-30 21:55:52.000000000 +0000 | ||
| 25 | @@ -47,6 +47,10 @@ | ||
| 26 | |||
| 27 | #define TSLIB_QUEUE_SIZE 3 | ||
| 28 | |||
| 29 | +/* For XCalibrate extension */ | ||
| 30 | +void (*tslib_raw_event_hook)(int x, int y, int pressure, void *closure); | ||
| 31 | +void *tslib_raw_event_closure; | ||
| 32 | + | ||
| 33 | struct TslibPrivate { | ||
| 34 | int fd; | ||
| 35 | int lastx, lasty; | ||
| 36 | @@ -76,6 +80,19 @@ TsRead (int fd, void *closure) | ||
| 37 | unsigned long flags = 0; | ||
| 38 | int discard = 0; | ||
| 39 | |||
| 40 | + if (tslib_raw_event_hook) | ||
| 41 | + { | ||
| 42 | + /* XCalibrate Ext */ | ||
| 43 | + if (ts_read_raw(private->tsDev, &event, 1) == 1) | ||
| 44 | + { | ||
| 45 | + tslib_raw_event_hook (event.x, | ||
| 46 | + event.y, | ||
| 47 | + event.pressure, | ||
| 48 | + tslib_raw_event_closure); | ||
| 49 | + } | ||
| 50 | + return; | ||
| 51 | + } | ||
| 52 | + | ||
| 53 | if (!private->tsDev) { | ||
| 54 | DebugF("[tslib] EXTREME BADNESS: TsRead called while tsDev is null!\n"); | ||
| 55 | return; | ||
| 56 | @@ -322,14 +339,14 @@ TsRead (int fd, void *closure) | ||
| 57 | } | ||
| 58 | } | ||
| 59 | |||
| 60 | -/* must always be NULL-terminated. */ | ||
| 61 | -char *valid_ts_names[] = { | ||
| 62 | - "ADS784x Touchscreen", | ||
| 63 | - "omap-ts", | ||
| 64 | - "TSC2301 touchscreen", | ||
| 65 | - NULL | ||
| 66 | +static char *TsNames[] = { | ||
| 67 | + NULL, /* set via TSLIB_TSDEVICE */ | ||
| 68 | + "/dev/ts", | ||
| 69 | + "/dev/touchscreen/0", | ||
| 70 | }; | ||
| 71 | |||
| 72 | +#define NUM_TS_NAMES (sizeof (TsNames) / sizeof (TsNames[0])) | ||
| 73 | + | ||
| 74 | #define TS_NAME_SIZE 32 | ||
| 75 | |||
| 76 | static Status | ||
| 77 | @@ -383,11 +400,10 @@ TslibDisable (KdPointerInfo *pi) | ||
| 78 | private->tsDev = NULL; | ||
| 79 | } | ||
| 80 | |||
| 81 | - | ||
| 82 | static Status | ||
| 83 | TslibInit (KdPointerInfo *pi) | ||
| 84 | { | ||
| 85 | - int fd = 0, i = 0; | ||
| 86 | + int fd = 0, i = 0, j = 0; | ||
| 87 | char devpath[PATH_MAX], devname[TS_NAME_SIZE]; | ||
| 88 | DIR *inputdir = NULL; | ||
| 89 | struct dirent *inputent = NULL; | ||
| 90 | @@ -397,33 +413,25 @@ TslibInit (KdPointerInfo *pi) | ||
| 91 | return !Success; | ||
| 92 | |||
| 93 | if (!pi->path || strcmp(pi->path, "auto") == 0) { | ||
| 94 | - if (!(inputdir = opendir("/dev/input"))) { | ||
| 95 | - ErrorF("[tslib/TslibInit]: couldn't open /dev/input!\n"); | ||
| 96 | - return BadMatch; | ||
| 97 | - } | ||
| 98 | |||
| 99 | - while ((inputent = readdir(inputdir))) { | ||
| 100 | - if (strncmp(inputent->d_name, "event", 5) != 0) | ||
| 101 | - continue; | ||
| 102 | + if ((TsNames[0] = getenv("TSLIB_TSDEVICE")) == NULL) | ||
| 103 | + j++; | ||
| 104 | + | ||
| 105 | + for (i = j; i < NUM_TS_NAMES; i++) | ||
| 106 | + { | ||
| 107 | + struct tsdev *tsDev; | ||
| 108 | |||
| 109 | - snprintf(devpath, PATH_MAX, "/dev/input/%s", inputent->d_name); | ||
| 110 | - fd = open(devpath, O_RDWR); | ||
| 111 | + if(!(tsDev = ts_open(TsNames[i], 0))) | ||
| 112 | + continue; | ||
| 113 | |||
| 114 | - if (!ioctl(fd, EVIOCGNAME(sizeof(devname)), devname)) { | ||
| 115 | - close(fd); | ||
| 116 | + if (ts_config(tsDev)) | ||
| 117 | continue; | ||
| 118 | - } | ||
| 119 | - close(fd); | ||
| 120 | |||
| 121 | - for (i = 0; valid_ts_names[i]; i++) { | ||
| 122 | - if (strcmp(devname, valid_ts_names[i]) == 0) { | ||
| 123 | - pi->path = KdSaveString(devpath); | ||
| 124 | - break; | ||
| 125 | - } | ||
| 126 | - } | ||
| 127 | - } | ||
| 128 | - | ||
| 129 | - closedir(inputdir); | ||
| 130 | + ts_close(tsDev); | ||
| 131 | + | ||
| 132 | + pi->path = KdSaveString(TsNames[i]); | ||
| 133 | + break; | ||
| 134 | + } | ||
| 135 | } | ||
| 136 | |||
| 137 | if (!pi->path || strcmp(pi->path, "auto") == 0) { | ||
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/disable-apm.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/disable-apm.patch new file mode 100644 index 0000000000..bd8842721b --- /dev/null +++ b/meta/packages/xorg-xserver/xserver-kdrive-xomap/disable-apm.patch | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | --- xserver/hw/kdrive/linux/linux.c.orig 2005-04-23 15:56:13.988849232 +0000 | ||
| 2 | +++ xserver/hw/kdrive/linux/linux.c 2005-04-23 15:57:05.001094192 +0000 | ||
| 3 | @@ -342,7 +342,7 @@ | ||
| 4 | /* | ||
| 5 | * Open the APM driver | ||
| 6 | */ | ||
| 7 | - LinuxApmFd = open ("/dev/apm_bios", 2); | ||
| 8 | + /*LinuxApmFd = open ("/dev/apm_bios", 2); | ||
| 9 | if (LinuxApmFd < 0 && errno == ENOENT) | ||
| 10 | LinuxApmFd = open ("/dev/misc/apm_bios", 2); | ||
| 11 | if (LinuxApmFd >= 0) | ||
| 12 | @@ -352,7 +352,7 @@ | ||
| 13 | RegisterBlockAndWakeupHandlers (LinuxApmBlock, LinuxApmWakeup, 0); | ||
| 14 | AddEnabledDevice (LinuxApmFd); | ||
| 15 | } | ||
| 16 | - | ||
| 17 | + */ | ||
| 18 | /* | ||
| 19 | * now get the VT | ||
| 20 | */ | ||
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/disable-xf86-dga-xorgcfg.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/disable-xf86-dga-xorgcfg.patch new file mode 100644 index 0000000000..9c43e52ead --- /dev/null +++ b/meta/packages/xorg-xserver/xserver-kdrive-xomap/disable-xf86-dga-xorgcfg.patch | |||
| @@ -0,0 +1,37 @@ | |||
| 1 | --- git/configure.ac.orig 2006-05-22 22:40:00.000000000 +0200 | ||
| 2 | +++ git/configure.ac 2006-06-10 15:10:14.000000000 +0200 | ||
| 3 | @@ -505,7 +505,11 @@ | ||
| 4 | XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la' | ||
| 5 | |||
| 6 | dnl Core modules for most extensions, et al. | ||
| 7 | +if test "$KDRIVE" = yes; then | ||
| 8 | +REQUIRED_MODULES="randrproto renderproto [fixesproto >= 4.0] damageproto xcmiscproto xextproto xproto xtrans xf86bigfontproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto" | ||
| 9 | +else | ||
| 10 | REQUIRED_MODULES="randrproto renderproto [fixesproto >= 4.0] damageproto xcmiscproto xextproto xproto xtrans xf86miscproto xf86vidmodeproto xf86bigfontproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto xf86dgaproto" | ||
| 11 | +fi | ||
| 12 | REQUIRED_LIBS="xfont xau fontenc" | ||
| 13 | |||
| 14 | AM_CONDITIONAL(XV, [test "x$XV" = xyes]) | ||
| 15 | @@ -1514,7 +1526,9 @@ | ||
| 16 | AC_SUBST(XKB_COMPILED_DIR) | ||
| 17 | |||
| 18 | dnl and the rest of these are generic, so they're in config.h | ||
| 19 | +if test ! x"$KDRIVE" = xyes; then | ||
| 20 | AC_DEFINE(XFreeXDGA, 1, [Build XDGA support]) | ||
| 21 | +fi | ||
| 22 | AC_DEFINE(XResExtension, 1, [Build XRes extension]) | ||
| 23 | |||
| 24 | dnl CYGWIN does not define fd_set if _POSIX_SOURCE is defined | ||
| 25 | @@ -1534,10 +1548,12 @@ | ||
| 26 | |||
| 27 | AC_DEFINE_DIR(PROJECTROOT, prefix, [Overall prefix]) | ||
| 28 | |||
| 29 | +if test ! "x$KDRIVE" = xyes ; then | ||
| 30 | dnl xorgconfig CLI configuration utility | ||
| 31 | PKG_CHECK_MODULES([XORGCONFIG_DEP], [xkbfile x11]) | ||
| 32 | AC_SUBST(XORGCONFIG_DEP_CFLAGS) | ||
| 33 | AC_SUBST(XORGCONFIG_DEP_LIBS) | ||
| 34 | +fi | ||
| 35 | |||
| 36 | dnl xorgcfg GUI configuration utility | ||
| 37 | AC_ARG_ENABLE(xorgcfg, AS_HELP_STRING([--enable-xorgcfg], | ||
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/enable-builtin-fonts.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/enable-builtin-fonts.patch new file mode 100644 index 0000000000..13a6c2c954 --- /dev/null +++ b/meta/packages/xorg-xserver/xserver-kdrive-xomap/enable-builtin-fonts.patch | |||
| @@ -0,0 +1,12 @@ | |||
| 1 | --- xorg-server-X11R7.1-1.1.0/dix/dixfonts.c.orig 2006-06-08 14:49:12.158684250 +0200 | ||
| 2 | +++ xorg-server-X11R7.1-1.1.0/dix/dixfonts.c 2006-06-08 14:49:52.493205000 +0200 | ||
| 3 | @@ -52,8 +52,8 @@ | ||
| 4 | /* $Xorg: dixfonts.c,v 1.4 2000/08/17 19:48:18 cpqbld Exp $ */ | ||
| 5 | |||
| 6 | #define NEED_REPLIES | ||
| 7 | #ifdef HAVE_DIX_CONFIG_H | ||
| 8 | -#include <dix-config.h> | ||
| 9 | +#include <kdrive-config.h> | ||
| 10 | #endif | ||
| 11 | |||
| 12 | #include <X11/X.h> | ||
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/enable-tslib.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/enable-tslib.patch new file mode 100644 index 0000000000..e488657b74 --- /dev/null +++ b/meta/packages/xorg-xserver/xserver-kdrive-xomap/enable-tslib.patch | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | --- git/configure.ac.orig 2006-05-22 22:40:00.000000000 +0200 | ||
| 2 | +++ git/configure.ac 2006-06-10 15:10:14.000000000 +0200 | ||
| 3 | @@ -1438,6 +1446,10 @@ | ||
| 4 | fi | ||
| 5 | |||
| 6 | - # tslib... | ||
| 7 | + AC_CHECK_HEADERS([tslib.h]) | ||
| 8 | + if test "$ac_cv_header_tslib_h" = yes; then | ||
| 9 | + AC_DEFINE(TSLIB, 1, [Build kdrive with tslib support]) | ||
| 10 | + AC_DEFINE(TOUCHSCREEN, 1, [Build kdrive with touchscreen support]) | ||
| 11 | + fi | ||
| 12 | |||
| 13 | # damage shadow extension glx (NOTYET) fb mi | ||
| 14 | KDRIVE_INC='-I$(top_srcdir)/hw/kdrive/src' | ||
| 15 | @@ -1467,7 +1479,7 @@ | ||
| 16 | AC_SUBST(KDRIVE_CFLAGS) | ||
| 17 | AC_SUBST(KDRIVE_PURE_LIBS) | ||
| 18 | AC_SUBST(KDRIVE_LIBS) | ||
| 19 | -AM_CONDITIONAL(TSLIB, false) | ||
| 20 | +AM_CONDITIONAL(TSLIB, [test x"$ac_cv_header_tslib_h" = xyes]) | ||
| 21 | AM_CONDITIONAL(H3600_TS, false) | ||
| 22 | AM_CONDITIONAL(KDRIVEVESA, [test x"$ac_cv_header_sys_vm86_h" = xyes]) | ||
| 23 | AM_CONDITIONAL(KDRIVEFBDEV, [test x"$ac_cv_header_linux_fb_h" = xyes]) | ||
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/fbdev-not-fix.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/fbdev-not-fix.patch new file mode 100644 index 0000000000..f87e7cc2cd --- /dev/null +++ b/meta/packages/xorg-xserver/xserver-kdrive-xomap/fbdev-not-fix.patch | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | --- xserver/hw/kdrive/fbdev/fbdev.c~ 2004-09-15 00:08:10.000000000 +0100 | ||
| 2 | +++ xserver/hw/kdrive/fbdev/fbdev.c 2004-11-13 17:47:02.000000000 +0000 | ||
| 3 | @@ -198,6 +198,11 @@ | ||
| 4 | return FALSE; | ||
| 5 | } | ||
| 6 | |||
| 7 | + /* Re-get the "fixed" parameters since they might have changed */ | ||
| 8 | + k = ioctl (priv->fd, FBIOGET_FSCREENINFO, &priv->fix); | ||
| 9 | + if (k < 0) | ||
| 10 | + perror ("FBIOGET_FSCREENINFO"); | ||
| 11 | + | ||
| 12 | /* Now get the new screeninfo */ | ||
| 13 | ioctl (priv->fd, FBIOGET_VSCREENINFO, &priv->var); | ||
| 14 | depth = priv->var.bits_per_pixel; | ||
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/fixups.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/fixups.patch new file mode 100644 index 0000000000..09c9e8909c --- /dev/null +++ b/meta/packages/xorg-xserver/xserver-kdrive-xomap/fixups.patch | |||
| @@ -0,0 +1,446 @@ | |||
| 1 | --- | ||
| 2 | Xi/chgdctl.c | 55 +++++++++++++++++++------ | ||
| 3 | Xi/getdctl.c | 87 +++++++++++++++++++++++++++++++---------- | ||
| 4 | Xi/getdctl.h | 11 +++-- | ||
| 5 | Xi/stubs.c | 2 | ||
| 6 | configure.ac | 2 | ||
| 7 | dix/devices.c | 31 +++++++++----- | ||
| 8 | hw/kdrive/linux/tslib.c | 8 +-- | ||
| 9 | hw/kdrive/src/kinput.c | 6 +- | ||
| 10 | hw/xfree86/common/xf86Xinput.c | 3 - | ||
| 11 | include/input.h | 2 | ||
| 12 | include/inputstr.h | 18 +++++++- | ||
| 13 | 11 files changed, 162 insertions(+), 63 deletions(-) | ||
| 14 | |||
| 15 | Index: xorg-server-1.1.99.3/Xi/chgdctl.c | ||
| 16 | =================================================================== | ||
| 17 | --- xorg-server-1.1.99.3.orig/Xi/chgdctl.c 2007-01-29 22:58:18.000000000 +0000 | ||
| 18 | +++ xorg-server-1.1.99.3/Xi/chgdctl.c 2007-01-29 22:59:27.000000000 +0000 | ||
| 19 | @@ -104,8 +104,10 @@ ProcXChangeDeviceControl(ClientPtr clien | ||
| 20 | xChangeDeviceControlReply rep; | ||
| 21 | AxisInfoPtr a; | ||
| 22 | CARD32 *resolution; | ||
| 23 | - xDeviceTSCtl *ts; | ||
| 24 | + xDeviceAbsCalibCtl *calib; | ||
| 25 | + xDeviceAbsAreaCtl *area; | ||
| 26 | xDeviceCoreCtl *c; | ||
| 27 | + xDeviceEnableCtl *e; | ||
| 28 | |||
| 29 | REQUEST(xChangeDeviceControlReq); | ||
| 30 | REQUEST_AT_LEAST_SIZE(xChangeDeviceControlReq); | ||
| 31 | @@ -170,25 +172,28 @@ ProcXChangeDeviceControl(ClientPtr clien | ||
| 32 | return Success; | ||
| 33 | } | ||
| 34 | break; | ||
| 35 | - case DEVICE_TOUCHSCREEN: | ||
| 36 | - ts = (xDeviceTSCtl *)&stuff[1]; | ||
| 37 | - | ||
| 38 | - if (ts->button_threshold < 0 || ts->button_threshold > 255) { | ||
| 39 | + case DEVICE_ABS_CALIB: | ||
| 40 | + calib = (xDeviceAbsCalibCtl *)&stuff[1]; | ||
| 41 | + | ||
| 42 | + if (calib->button_threshold < 0 || calib->button_threshold > 255) { | ||
| 43 | SendErrorToClient(client, IReqCode, X_ChangeDeviceControl, 0, | ||
| 44 | BadValue); | ||
| 45 | return Success; | ||
| 46 | } | ||
| 47 | |||
| 48 | - status = ChangeDeviceControl(client, dev, (xDeviceCtl *) ts); | ||
| 49 | + status = ChangeDeviceControl(client, dev, (xDeviceCtl *) calib); | ||
| 50 | |||
| 51 | if (status == Success) { | ||
| 52 | - dev->touchscreen->min_x = ts->min_x; | ||
| 53 | - dev->touchscreen->max_x = ts->max_x; | ||
| 54 | - dev->touchscreen->min_y = ts->min_y; | ||
| 55 | - dev->touchscreen->max_y = ts->max_y; | ||
| 56 | - dev->touchscreen->button_threshold = ts->button_threshold; | ||
| 57 | - } else if (status == DeviceBusy) { | ||
| 58 | - rep.status = DeviceBusy; | ||
| 59 | + dev->absolute->min_x = calib->min_x; | ||
| 60 | + dev->absolute->max_x = calib->max_x; | ||
| 61 | + dev->absolute->min_y = calib->min_y; | ||
| 62 | + dev->absolute->max_y = calib->max_y; | ||
| 63 | + dev->absolute->flip_x = calib->flip_x; | ||
| 64 | + dev->absolute->flip_y = calib->flip_y; | ||
| 65 | + dev->absolute->rotation = calib->rotation; | ||
| 66 | + dev->absolute->button_threshold = calib->button_threshold; | ||
| 67 | + } else if (status == DeviceBusy || status == BadValue) { | ||
| 68 | + rep.status = status; | ||
| 69 | WriteReplyToClient(client, sizeof(xChangeDeviceControlReply), | ||
| 70 | &rep); | ||
| 71 | return Success; | ||
| 72 | @@ -199,6 +204,30 @@ ProcXChangeDeviceControl(ClientPtr clien | ||
| 73 | } | ||
| 74 | |||
| 75 | break; | ||
| 76 | + case DEVICE_ABS_AREA: | ||
| 77 | + area = (xDeviceAbsAreaCtl *)&stuff[1]; | ||
| 78 | + | ||
| 79 | + status = ChangeDeviceControl(client, dev, (xDeviceCtl *) area); | ||
| 80 | + | ||
| 81 | + if (status == Success) { | ||
| 82 | + dev->absolute->offset_x = area->offset_x; | ||
| 83 | + dev->absolute->offset_y = area->offset_y; | ||
| 84 | + dev->absolute->width = area->width; | ||
| 85 | + dev->absolute->height = area->height; | ||
| 86 | + dev->absolute->screen = area->screen; | ||
| 87 | + dev->absolute->following = area->following; | ||
| 88 | + } else if (status == DeviceBusy || status == BadValue) { | ||
| 89 | + rep.status = status; | ||
| 90 | + WriteReplyToClient(client, sizeof(xChangeDeviceControlReply), | ||
| 91 | + &rep); | ||
| 92 | + return Success; | ||
| 93 | + } else { | ||
| 94 | + SendErrorToClient(client, IReqCode, X_ChangeDeviceControl, 0, | ||
| 95 | + BadMatch); | ||
| 96 | + return Success; | ||
| 97 | + } | ||
| 98 | + | ||
| 99 | + break; | ||
| 100 | case DEVICE_CORE: | ||
| 101 | c = (xDeviceCoreCtl *)&stuff[1]; | ||
| 102 | |||
| 103 | Index: xorg-server-1.1.99.3/Xi/getdctl.c | ||
| 104 | =================================================================== | ||
| 105 | --- xorg-server-1.1.99.3.orig/Xi/getdctl.c 2007-01-29 22:58:18.000000000 +0000 | ||
| 106 | +++ xorg-server-1.1.99.3/Xi/getdctl.c 2007-01-29 22:59:27.000000000 +0000 | ||
| 107 | @@ -124,14 +124,23 @@ ProcXGetDeviceControl(ClientPtr client) | ||
| 108 | total_length = sizeof(xDeviceResolutionState) + | ||
| 109 | (3 * sizeof(int) * dev->valuator->numAxes); | ||
| 110 | break; | ||
| 111 | - case DEVICE_TOUCHSCREEN: | ||
| 112 | - if (!dev->touchscreen) { | ||
| 113 | + case DEVICE_ABS_CALIB: | ||
| 114 | + if (!dev->absolute) { | ||
| 115 | SendErrorToClient(client, IReqCode, X_GetDeviceControl, 0, | ||
| 116 | BadMatch); | ||
| 117 | return Success; | ||
| 118 | } | ||
| 119 | |||
| 120 | - total_length = sizeof(xDeviceTSCtl); | ||
| 121 | + total_length = sizeof(xDeviceAbsCalibCtl); | ||
| 122 | + break; | ||
| 123 | + case DEVICE_ABS_AREA: | ||
| 124 | + if (!dev->absolute) { | ||
| 125 | + SendErrorToClient(client, IReqCode, X_GetDeviceControl, 0, | ||
| 126 | + BadMatch); | ||
| 127 | + return Success; | ||
| 128 | + } | ||
| 129 | + | ||
| 130 | + total_length = sizeof(xDeviceAbsAreaCtl); | ||
| 131 | break; | ||
| 132 | case DEVICE_CORE: | ||
| 133 | total_length = sizeof(xDeviceCoreCtl); | ||
| 134 | @@ -152,8 +161,11 @@ ProcXGetDeviceControl(ClientPtr client) | ||
| 135 | case DEVICE_RESOLUTION: | ||
| 136 | CopySwapDeviceResolution(client, dev->valuator, buf, total_length); | ||
| 137 | break; | ||
| 138 | - case DEVICE_TOUCHSCREEN: | ||
| 139 | - CopySwapDeviceTouchscreen(client, dev->touchscreen, buf); | ||
| 140 | + case DEVICE_ABS_CALIB: | ||
| 141 | + CopySwapDeviceAbsCalib(client, dev->absolute, buf); | ||
| 142 | + break; | ||
| 143 | + case DEVICE_ABS_AREA: | ||
| 144 | + CopySwapDeviceAbsArea(client, dev->absolute, buf); | ||
| 145 | break; | ||
| 146 | case DEVICE_CORE: | ||
| 147 | CopySwapDeviceCore(client, dev, buf); | ||
| 148 | @@ -206,28 +218,61 @@ CopySwapDeviceResolution(ClientPtr clien | ||
| 149 | } | ||
| 150 | } | ||
| 151 | |||
| 152 | -void CopySwapDeviceTouchscreen (ClientPtr client, TouchscreenClassPtr dts, | ||
| 153 | +void CopySwapDeviceAbsCalib (ClientPtr client, AbsoluteClassPtr dts, | ||
| 154 | char *buf) | ||
| 155 | { | ||
| 156 | register char n; | ||
| 157 | - xDeviceTSState *ts = (xDeviceTSState *) buf; | ||
| 158 | + xDeviceAbsCalibState *calib = (xDeviceAbsCalibState *) buf; | ||
| 159 | |||
| 160 | - ts->control = DEVICE_TOUCHSCREEN; | ||
| 161 | - ts->length = sizeof(ts); | ||
| 162 | - ts->min_x = dts->min_x; | ||
| 163 | - ts->max_x = dts->max_x; | ||
| 164 | - ts->min_y = dts->min_y; | ||
| 165 | - ts->max_y = dts->max_y; | ||
| 166 | - ts->button_threshold = dts->button_threshold; | ||
| 167 | + calib->control = DEVICE_ABS_CALIB; | ||
| 168 | + calib->length = sizeof(calib); | ||
| 169 | + calib->min_x = dts->min_x; | ||
| 170 | + calib->max_x = dts->max_x; | ||
| 171 | + calib->min_y = dts->min_y; | ||
| 172 | + calib->max_y = dts->max_y; | ||
| 173 | + calib->flip_x = dts->flip_x; | ||
| 174 | + calib->flip_y = dts->flip_y; | ||
| 175 | + calib->rotation = dts->rotation; | ||
| 176 | + calib->button_threshold = dts->button_threshold; | ||
| 177 | |||
| 178 | if (client->swapped) { | ||
| 179 | - swaps(&ts->control, n); | ||
| 180 | - swaps(&ts->length, n); | ||
| 181 | - swapl(&ts->min_x, n); | ||
| 182 | - swapl(&ts->max_x, n); | ||
| 183 | - swapl(&ts->min_y, n); | ||
| 184 | - swapl(&ts->max_y, n); | ||
| 185 | - swapl(&ts->button_threshold, n); | ||
| 186 | + swaps(&calib->control, n); | ||
| 187 | + swaps(&calib->length, n); | ||
| 188 | + swapl(&calib->min_x, n); | ||
| 189 | + swapl(&calib->max_x, n); | ||
| 190 | + swapl(&calib->min_y, n); | ||
| 191 | + swapl(&calib->max_y, n); | ||
| 192 | + swapl(&calib->flip_x, n); | ||
| 193 | + swapl(&calib->flip_y, n); | ||
| 194 | + swapl(&calib->rotation, n); | ||
| 195 | + swapl(&calib->button_threshold, n); | ||
| 196 | + } | ||
| 197 | +} | ||
| 198 | + | ||
| 199 | +void CopySwapDeviceAbsArea (ClientPtr client, AbsoluteClassPtr dts, | ||
| 200 | + char *buf) | ||
| 201 | +{ | ||
| 202 | + register char n; | ||
| 203 | + xDeviceAbsAreaState *area = (xDeviceAbsAreaState *) buf; | ||
| 204 | + | ||
| 205 | + area->control = DEVICE_ABS_AREA; | ||
| 206 | + area->length = sizeof(area); | ||
| 207 | + area->offset_x = dts->offset_x; | ||
| 208 | + area->offset_y = dts->offset_y; | ||
| 209 | + area->width = dts->width; | ||
| 210 | + area->height = dts->height; | ||
| 211 | + area->screen = dts->screen; | ||
| 212 | + area->following = dts->following; | ||
| 213 | + | ||
| 214 | + if (client->swapped) { | ||
| 215 | + swaps(&area->control, n); | ||
| 216 | + swaps(&area->length, n); | ||
| 217 | + swapl(&area->offset_x, n); | ||
| 218 | + swapl(&area->offset_y, n); | ||
| 219 | + swapl(&area->width, n); | ||
| 220 | + swapl(&area->height, n); | ||
| 221 | + swapl(&area->screen, n); | ||
| 222 | + swapl(&area->following, n); | ||
| 223 | } | ||
| 224 | } | ||
| 225 | |||
| 226 | Index: xorg-server-1.1.99.3/Xi/getdctl.h | ||
| 227 | =================================================================== | ||
| 228 | --- xorg-server-1.1.99.3.orig/Xi/getdctl.h 2007-01-29 22:58:18.000000000 +0000 | ||
| 229 | +++ xorg-server-1.1.99.3/Xi/getdctl.h 2007-01-29 22:59:27.000000000 +0000 | ||
| 230 | @@ -42,10 +42,13 @@ void CopySwapDeviceResolution(ClientPtr | ||
| 231 | int /* length */ | ||
| 232 | ); | ||
| 233 | |||
| 234 | -void CopySwapDeviceTouchscreen(ClientPtr /* client */ , | ||
| 235 | - TouchscreenClassPtr /* ts */ , | ||
| 236 | - char * /* buf */ | ||
| 237 | - ); | ||
| 238 | +void CopySwapDeviceAbsCalib (ClientPtr client, | ||
| 239 | + AbsoluteClassPtr dts, | ||
| 240 | + char *buf); | ||
| 241 | + | ||
| 242 | +void CopySwapDeviceAbsArea (ClientPtr client, | ||
| 243 | + AbsoluteClassPtr dts, | ||
| 244 | + char *buf); | ||
| 245 | |||
| 246 | void CopySwapDeviceCore(ClientPtr /* client */ , | ||
| 247 | DeviceIntPtr /* dev */ , | ||
| 248 | Index: xorg-server-1.1.99.3/Xi/stubs.c | ||
| 249 | =================================================================== | ||
| 250 | --- xorg-server-1.1.99.3.orig/Xi/stubs.c 2007-01-29 22:58:18.000000000 +0000 | ||
| 251 | +++ xorg-server-1.1.99.3/Xi/stubs.c 2007-01-29 22:59:27.000000000 +0000 | ||
| 252 | @@ -287,7 +287,7 @@ ChangeDeviceControl(register ClientPtr c | ||
| 253 | switch (control->control) { | ||
| 254 | case DEVICE_RESOLUTION: | ||
| 255 | return (BadMatch); | ||
| 256 | - case DEVICE_TOUCHSCREEN: | ||
| 257 | + case DEVICE_ABS_CALIB: | ||
| 258 | return (BadMatch); | ||
| 259 | case DEVICE_CORE: | ||
| 260 | return (BadMatch); | ||
| 261 | Index: xorg-server-1.1.99.3/dix/devices.c | ||
| 262 | =================================================================== | ||
| 263 | --- xorg-server-1.1.99.3.orig/dix/devices.c 2007-01-29 22:58:18.000000000 +0000 | ||
| 264 | +++ xorg-server-1.1.99.3/dix/devices.c 2007-01-29 22:59:27.000000000 +0000 | ||
| 265 | @@ -117,7 +117,7 @@ AddInputDevice(DeviceProc deviceProc, Bo | ||
| 266 | dev->button = (ButtonClassPtr)NULL; | ||
| 267 | dev->focus = (FocusClassPtr)NULL; | ||
| 268 | dev->proximity = (ProximityClassPtr)NULL; | ||
| 269 | - dev->touchscreen = (TouchscreenClassPtr)NULL; | ||
| 270 | + dev->absolute = (AbsoluteClassPtr)NULL; | ||
| 271 | dev->kbdfeed = (KbdFeedbackPtr)NULL; | ||
| 272 | dev->ptrfeed = (PtrFeedbackPtr)NULL; | ||
| 273 | dev->intfeed = (IntegerFeedbackPtr)NULL; | ||
| 274 | @@ -821,22 +821,31 @@ InitValuatorClassDeviceStruct(DeviceIntP | ||
| 275 | } | ||
| 276 | |||
| 277 | _X_EXPORT Bool | ||
| 278 | -InitTouchscreenClassDeviceStruct(DeviceIntPtr dev) | ||
| 279 | +InitAbsoluteClassDeviceStruct(DeviceIntPtr dev) | ||
| 280 | { | ||
| 281 | - register TouchscreenClassPtr tsc; | ||
| 282 | + register AbsoluteClassPtr abs; | ||
| 283 | |||
| 284 | - tsc = (TouchscreenClassPtr)xalloc(sizeof(TouchscreenClassRec)); | ||
| 285 | - if (!tsc) | ||
| 286 | + abs = (AbsoluteClassPtr)xalloc(sizeof(AbsoluteClassRec)); | ||
| 287 | + if (!abs) | ||
| 288 | return FALSE; | ||
| 289 | |||
| 290 | /* we don't do anything sensible with these, but should */ | ||
| 291 | - tsc->min_x = -1; | ||
| 292 | - tsc->min_y = -1; | ||
| 293 | - tsc->max_x = -1; | ||
| 294 | - tsc->max_y = -1; | ||
| 295 | + abs->min_x = -1; | ||
| 296 | + abs->min_y = -1; | ||
| 297 | + abs->max_x = -1; | ||
| 298 | + abs->max_y = -1; | ||
| 299 | + abs->flip_x = 0; | ||
| 300 | + abs->flip_y = 0; | ||
| 301 | + abs->rotation = 0; | ||
| 302 | + abs->button_threshold = 0; | ||
| 303 | |||
| 304 | - tsc->button_threshold = 0; | ||
| 305 | - dev->touchscreen = tsc; | ||
| 306 | + abs->offset_x = 0; | ||
| 307 | + abs->offset_y = 0; | ||
| 308 | + abs->width = -1; | ||
| 309 | + abs->height = -1; | ||
| 310 | + abs->following = 0; | ||
| 311 | + | ||
| 312 | + dev->absolute = abs; | ||
| 313 | |||
| 314 | return TRUE; | ||
| 315 | } | ||
| 316 | Index: xorg-server-1.1.99.3/hw/xfree86/common/xf86Xinput.c | ||
| 317 | =================================================================== | ||
| 318 | --- xorg-server-1.1.99.3.orig/hw/xfree86/common/xf86Xinput.c 2007-01-29 22:58:18.000000000 +0000 | ||
| 319 | +++ xorg-server-1.1.99.3/hw/xfree86/common/xf86Xinput.c 2007-01-29 22:59:27.000000000 +0000 | ||
| 320 | @@ -538,7 +538,8 @@ ChangeDeviceControl (ClientPtr client, D | ||
| 321 | switch (control->control) { | ||
| 322 | case DEVICE_CORE: | ||
| 323 | case DEVICE_RESOLUTION: | ||
| 324 | - case DEVICE_TOUCHSCREEN: | ||
| 325 | + case DEVICE_ABS_CALIB: | ||
| 326 | + case DEVICE_ABS_AREA: | ||
| 327 | return Success; | ||
| 328 | default: | ||
| 329 | return BadMatch; | ||
| 330 | Index: xorg-server-1.1.99.3/include/input.h | ||
| 331 | =================================================================== | ||
| 332 | --- xorg-server-1.1.99.3.orig/include/input.h 2007-01-29 22:58:18.000000000 +0000 | ||
| 333 | +++ xorg-server-1.1.99.3/include/input.h 2007-01-29 22:59:27.000000000 +0000 | ||
| 334 | @@ -238,7 +238,7 @@ extern Bool InitValuatorClassDeviceStruc | ||
| 335 | int /*numMotionEvents*/, | ||
| 336 | int /*mode*/); | ||
| 337 | |||
| 338 | -extern Bool InitTouchscreenClassDeviceStruct( | ||
| 339 | +extern Bool InitAbsoluteClassDeviceStruct( | ||
| 340 | DeviceIntPtr /*device*/); | ||
| 341 | |||
| 342 | extern Bool InitFocusClassDeviceStruct( | ||
| 343 | Index: xorg-server-1.1.99.3/include/inputstr.h | ||
| 344 | =================================================================== | ||
| 345 | --- xorg-server-1.1.99.3.orig/include/inputstr.h 2007-01-29 22:58:18.000000000 +0000 | ||
| 346 | +++ xorg-server-1.1.99.3/include/inputstr.h 2007-01-29 22:59:27.000000000 +0000 | ||
| 347 | @@ -185,13 +185,25 @@ typedef struct _ProximityClassRec { | ||
| 348 | char pad; | ||
| 349 | } ProximityClassRec, *ProximityClassPtr; | ||
| 350 | |||
| 351 | -typedef struct _TouchscreenClassRec { | ||
| 352 | +typedef struct _AbsoluteClassRec { | ||
| 353 | + /* Calibration. */ | ||
| 354 | int min_x; | ||
| 355 | int max_x; | ||
| 356 | int min_y; | ||
| 357 | int max_y; | ||
| 358 | + int flip_x; | ||
| 359 | + int flip_y; | ||
| 360 | + int rotation; | ||
| 361 | int button_threshold; | ||
| 362 | -} TouchscreenClassRec, *TouchscreenClassPtr; | ||
| 363 | + | ||
| 364 | + /* Area. */ | ||
| 365 | + int offset_x; | ||
| 366 | + int offset_y; | ||
| 367 | + int width; | ||
| 368 | + int height; | ||
| 369 | + int screen; | ||
| 370 | + XID following; | ||
| 371 | +} AbsoluteClassRec, *AbsoluteClassPtr; | ||
| 372 | |||
| 373 | typedef struct _KbdFeedbackClassRec *KbdFeedbackPtr; | ||
| 374 | typedef struct _PtrFeedbackClassRec *PtrFeedbackPtr; | ||
| 375 | @@ -293,7 +305,7 @@ typedef struct _DeviceIntRec { | ||
| 376 | ButtonClassPtr button; | ||
| 377 | FocusClassPtr focus; | ||
| 378 | ProximityClassPtr proximity; | ||
| 379 | - TouchscreenClassPtr touchscreen; | ||
| 380 | + AbsoluteClassPtr absolute; | ||
| 381 | KbdFeedbackPtr kbdfeed; | ||
| 382 | PtrFeedbackPtr ptrfeed; | ||
| 383 | IntegerFeedbackPtr intfeed; | ||
| 384 | Index: xorg-server-1.1.99.3/configure.ac | ||
| 385 | =================================================================== | ||
| 386 | --- xorg-server-1.1.99.3.orig/configure.ac 2007-01-29 22:58:18.000000000 +0000 | ||
| 387 | +++ xorg-server-1.1.99.3/configure.ac 2007-01-29 22:59:27.000000000 +0000 | ||
| 388 | @@ -1586,7 +1586,7 @@ if test "$KDRIVE" = yes; then | ||
| 389 | #KDRIVE_PURE_LIBS="$DIX_LIB $OS_LIB $FB_LIB $XEXT_LIB $MIEXT_DAMAGE_LIB \ | ||
| 390 | # $MIEXT_SHADOW_LIB $XPSTUBS_LIB" | ||
| 391 | KDRIVE_XKB_DDX_LIB='$(top_builddir)/hw/kdrive/src/libkdrivexkb.a' | ||
| 392 | - KDRIVE_PURE_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $KDRIVE_XKB_DDX_LIB $XKB_LIB $KDRIVE_XKB_DDX_LIB$COMPOSITE_LIB $XPSTUBS_LIB $OS_LIB $CONFIG_LIB" | ||
| 393 | + KDRIVE_PURE_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $KDRIVE_XKB_DDX_LIB $XKB_LIB $KDRIVE_XKB_DDX_LIB $COMPOSITE_LIB $XPSTUBS_LIB $OS_LIB $CONFIG_LIB" | ||
| 394 | KDRIVE_LIB='$(top_builddir)/hw/kdrive/src/libkdrive.a' | ||
| 395 | KDRIVE_OS_LIB='$(top_builddir)/hw/kdrive/linux/liblinux.a' | ||
| 396 | KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.a' | ||
| 397 | Index: xorg-server-1.1.99.3/hw/kdrive/linux/tslib.c | ||
| 398 | =================================================================== | ||
| 399 | --- xorg-server-1.1.99.3.orig/hw/kdrive/linux/tslib.c 2007-01-29 22:58:18.000000000 +0000 | ||
| 400 | +++ xorg-server-1.1.99.3/hw/kdrive/linux/tslib.c 2007-01-29 22:59:27.000000000 +0000 | ||
| 401 | @@ -94,7 +94,7 @@ TsRead (int fd, void *closure) | ||
| 402 | event.pressure); | ||
| 403 | discard = 0; | ||
| 404 | if (event.pressure) { | ||
| 405 | - if (event.pressure > pi->dixdev->touchscreen->button_threshold) | ||
| 406 | + if (event.pressure > pi->dixdev->absolute->button_threshold) | ||
| 407 | flags = KD_BUTTON_8; | ||
| 408 | else | ||
| 409 | flags = KD_BUTTON_1; | ||
| 410 | @@ -356,9 +356,9 @@ TslibEnable (KdPointerInfo *pi) | ||
| 411 | close(private->fd); | ||
| 412 | return BadAlloc; | ||
| 413 | } | ||
| 414 | - if (pi->dixdev && pi->dixdev->touchscreen && | ||
| 415 | - pi->dixdev->touchscreen->button_threshold == 0) | ||
| 416 | - pi->dixdev->touchscreen->button_threshold = 115; | ||
| 417 | + if (pi->dixdev && pi->dixdev->absolute && | ||
| 418 | + pi->dixdev->absolute->button_threshold == 0) | ||
| 419 | + pi->dixdev->absolute->button_threshold = 115; | ||
| 420 | |||
| 421 | DebugF("[tslib/TslibEnable] successfully enabled %s\n", pi->path); | ||
| 422 | KdRegisterFd(private->fd, TsRead, pi); | ||
| 423 | Index: xorg-server-1.1.99.3/hw/kdrive/src/kinput.c | ||
| 424 | =================================================================== | ||
| 425 | --- xorg-server-1.1.99.3.orig/hw/kdrive/src/kinput.c 2007-01-29 22:58:18.000000000 +0000 | ||
| 426 | +++ xorg-server-1.1.99.3/hw/kdrive/src/kinput.c 2007-01-29 22:59:27.000000000 +0000 | ||
| 427 | @@ -444,7 +444,7 @@ KdPointerProc(DeviceIntPtr pDevice, int | ||
| 428 | |||
| 429 | #ifdef XINPUT | ||
| 430 | if (pi->inputClass == KD_TOUCHSCREEN) { | ||
| 431 | - InitTouchscreenClassDeviceStruct(pDevice); | ||
| 432 | + InitAbsoluteClassDeviceStruct(pDevice); | ||
| 433 | xiclass = AtomFromName(XI_TOUCHSCREEN); | ||
| 434 | } | ||
| 435 | else { | ||
| 436 | @@ -2323,8 +2323,8 @@ ChangeDeviceControl(register ClientPtr c | ||
| 437 | /* FIXME do something more intelligent here */ | ||
| 438 | return BadMatch; | ||
| 439 | |||
| 440 | - case DEVICE_TOUCHSCREEN: | ||
| 441 | - if (!pDev->touchscreen) | ||
| 442 | + case DEVICE_ABS_CALIB: | ||
| 443 | + if (!pDev->absolute) | ||
| 444 | return BadDevice; | ||
| 445 | else | ||
| 446 | return Success; | ||
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-evdev.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-evdev.patch new file mode 100644 index 0000000000..06eab817bd --- /dev/null +++ b/meta/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-evdev.patch | |||
| @@ -0,0 +1,503 @@ | |||
| 1 | # Kdrive evdev support patch, posted by Ander Conselvan de Oliveira at | ||
| 2 | # http://lists.freedesktop.org/archives/xorg/2005-December/011635.html | ||
| 3 | --- | ||
| 4 | # hw/kdrive/linux/evdev.c | 385 ++++++++++++++++++++++++++++++++++++++++++++++-- | ||
| 5 | # hw/kdrive/src/kdrive.c | 9 + | ||
| 6 | # hw/kdrive/src/kdrive.h | 4 | ||
| 7 | # 3 files changed, 386 insertions(+), 12 deletions(-) | ||
| 8 | # | ||
| 9 | Index: xorg-server-1.1.99.3/hw/kdrive/linux/evdev.c | ||
| 10 | =================================================================== | ||
| 11 | --- xorg-server-1.1.99.3.orig/hw/kdrive/linux/evdev.c 2006-11-03 14:49:05.000000000 +0000 | ||
| 12 | +++ xorg-server-1.1.99.3/hw/kdrive/linux/evdev.c 2007-01-25 22:05:48.000000000 +0000 | ||
| 13 | @@ -31,9 +31,11 @@ | ||
| 14 | #include <X11/X.h> | ||
| 15 | #include <X11/Xproto.h> | ||
| 16 | #include <X11/Xpoll.h> | ||
| 17 | +#include <X11/keysym.h> | ||
| 18 | #include "inputstr.h" | ||
| 19 | #include "scrnintstr.h" | ||
| 20 | #include "kdrive.h" | ||
| 21 | +#include "kkeymap.h" | ||
| 22 | |||
| 23 | #define NUM_EVENTS 128 | ||
| 24 | #define ABS_UNSET -65535 | ||
| 25 | @@ -107,9 +109,10 @@ EvdevRead (int evdevPort, void *closure) | ||
| 26 | { | ||
| 27 | KdPointerInfo *pi = closure; | ||
| 28 | Kevdev *ke = pi->driverPrivate; | ||
| 29 | - int i; | ||
| 30 | + int i, j; | ||
| 31 | struct input_event events[NUM_EVENTS]; | ||
| 32 | int n; | ||
| 33 | + int flags; | ||
| 34 | |||
| 35 | n = read (evdevPort, &events, NUM_EVENTS * sizeof (struct input_event)); | ||
| 36 | if (n <= 0) | ||
| 37 | @@ -117,22 +120,64 @@ EvdevRead (int evdevPort, void *closure) | ||
| 38 | n /= sizeof (struct input_event); | ||
| 39 | for (i = 0; i < n; i++) | ||
| 40 | { | ||
| 41 | + flags = KD_MOUSE_DELTA | kdPointerInfo->buttonState; | ||
| 42 | switch (events[i].type) { | ||
| 43 | case EV_SYN: | ||
| 44 | break; | ||
| 45 | case EV_KEY: | ||
| 46 | - EvdevMotion (pi); | ||
| 47 | - ASSIGNBIT(ke->key,events[i].code, events[i].value); | ||
| 48 | - if (events[i].code < 0x100) | ||
| 49 | - ErrorF ("key %d %d\n", events[i].code, events[i].value); | ||
| 50 | - else | ||
| 51 | - ErrorF ("key 0x%x %d\n", events[i].code, events[i].value); | ||
| 52 | + if (events[i].code >= BTN_MOUSE && events[i].code < BTN_JOYSTICK) { | ||
| 53 | + switch (events[i].code) { | ||
| 54 | + case BTN_LEFT: | ||
| 55 | + if (events[i].value == 1) | ||
| 56 | + flags |= KD_BUTTON_1; | ||
| 57 | + else | ||
| 58 | + flags &= ~KD_BUTTON_1; | ||
| 59 | + break; | ||
| 60 | + case BTN_MIDDLE: | ||
| 61 | + if (events[i].value == 1) | ||
| 62 | + flags |= KD_BUTTON_2; | ||
| 63 | + else | ||
| 64 | + flags &= ~KD_BUTTON_2; | ||
| 65 | + break; | ||
| 66 | + case BTN_RIGHT: | ||
| 67 | + if (events[i].value == 1) | ||
| 68 | + flags |= KD_BUTTON_3; | ||
| 69 | + else | ||
| 70 | + flags &= ~KD_BUTTON_3; | ||
| 71 | + break; | ||
| 72 | + default: | ||
| 73 | + /* Unknow button */ | ||
| 74 | + break; | ||
| 75 | + } | ||
| 76 | + KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0); | ||
| 77 | + } | ||
| 78 | break; | ||
| 79 | case EV_REL: | ||
| 80 | - ke->rel[events[i].code] += events[i].value; | ||
| 81 | + if (events[i].code == REL_X) { | ||
| 82 | + KdEnqueueMouseEvent (kdMouseInfo, flags, events[i].value, 0); | ||
| 83 | + } | ||
| 84 | + else if (events[i].code == REL_Y) { | ||
| 85 | + KdEnqueueMouseEvent (kdMouseInfo, flags, 0, events[i].value); | ||
| 86 | + } | ||
| 87 | + else if (events[i].code == REL_WHEEL) { | ||
| 88 | + for (j = 0; j < abs (events[i].value); j++) { | ||
| 89 | + if (events[i].value > 0) | ||
| 90 | + flags |= KD_BUTTON_4; | ||
| 91 | + else | ||
| 92 | + flags |= KD_BUTTON_5; | ||
| 93 | + | ||
| 94 | + KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0); | ||
| 95 | + | ||
| 96 | + if (events[i].value > 0) | ||
| 97 | + flags &= ~KD_BUTTON_4; | ||
| 98 | + else | ||
| 99 | + flags &= ~KD_BUTTON_5; | ||
| 100 | + | ||
| 101 | + KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0); | ||
| 102 | + } /* events[i].code == REL_WHEEL */ | ||
| 103 | + } | ||
| 104 | break; | ||
| 105 | case EV_ABS: | ||
| 106 | - ke->abs[events[i].code] = events[i].value; | ||
| 107 | break; | ||
| 108 | } | ||
| 109 | } | ||
| 110 | @@ -162,6 +207,12 @@ EvdevInit (KdPointerInfo *pi) | ||
| 111 | for (i = 0; i < NUM_DEFAULT_EVDEV; i++) { | ||
| 112 | fd = open (kdefaultEvdev[i], 2); | ||
| 113 | if (fd >= 0) { | ||
| 114 | + if (ioctl (fd, EVIOCGRAB, 1) < 0) | ||
| 115 | + { | ||
| 116 | + close (fd); | ||
| 117 | + continue; | ||
| 118 | + } | ||
| 119 | + | ||
| 120 | pi->path = KdSaveString (kdefaultEvdev[i]); | ||
| 121 | break; | ||
| 122 | } | ||
| 123 | @@ -300,7 +351,319 @@ KdPointerDriver LinuxEvdevMouseDriver = | ||
| 124 | NULL, | ||
| 125 | }; | ||
| 126 | |||
| 127 | -#if 0 | ||
| 128 | +/* Keyboard */ | ||
| 129 | + | ||
| 130 | +int kbd_fd = -1; | ||
| 131 | +int EvdevInputType = 0; | ||
| 132 | + | ||
| 133 | +KeySym evdevKeymap[(194 - 1 + 1) * 2] = { | ||
| 134 | +/* These are directly mapped from DOS scanset 0 */ | ||
| 135 | +/* 1 8 */ XK_Escape, NoSymbol, | ||
| 136 | +/* 2 9 */ XK_1, XK_exclam, | ||
| 137 | +/* 3 10 */ XK_2, XK_at, | ||
| 138 | +/* 4 11 */ XK_3, XK_numbersign, | ||
| 139 | +/* 5 12 */ XK_4, XK_dollar, | ||
| 140 | +/* 6 13 */ XK_5, XK_percent, | ||
| 141 | +/* 7 14 */ XK_6, XK_asciicircum, | ||
| 142 | +/* 8 15 */ XK_7, XK_ampersand, | ||
| 143 | +/* 9 16 */ XK_8, XK_asterisk, | ||
| 144 | +/* 10 17 */ XK_9, XK_parenleft, | ||
| 145 | +/* 11 18 */ XK_0, XK_parenright, | ||
| 146 | +/* 12 19 */ XK_minus, XK_underscore, | ||
| 147 | +/* 13 20 */ XK_equal, XK_plus, | ||
| 148 | +/* 14 21 */ XK_BackSpace, NoSymbol, | ||
| 149 | +/* 15 22 */ XK_Tab, NoSymbol, | ||
| 150 | +/* 16 23 */ XK_Q, NoSymbol, | ||
| 151 | +/* 17 24 */ XK_W, NoSymbol, | ||
| 152 | +/* 18 25 */ XK_E, NoSymbol, | ||
| 153 | +/* 19 26 */ XK_R, NoSymbol, | ||
| 154 | +/* 20 27 */ XK_T, NoSymbol, | ||
| 155 | +/* 21 28 */ XK_Y, NoSymbol, | ||
| 156 | +/* 22 29 */ XK_U, NoSymbol, | ||
| 157 | +/* 23 30 */ XK_I, NoSymbol, | ||
| 158 | +/* 24 31 */ XK_O, NoSymbol, | ||
| 159 | +/* 25 32 */ XK_P, NoSymbol, | ||
| 160 | +/* 26 33 */ XK_bracketleft, XK_braceleft, | ||
| 161 | +/* 27 34 */ XK_bracketright, XK_braceright, | ||
| 162 | +/* 28 35 */ XK_Return, NoSymbol, | ||
| 163 | +/* 29 36 */ XK_Control_L, NoSymbol, | ||
| 164 | +/* 30 37 */ XK_A, NoSymbol, | ||
| 165 | +/* 31 38 */ XK_S, NoSymbol, | ||
| 166 | +/* 32 39 */ XK_D, NoSymbol, | ||
| 167 | +/* 33 40 */ XK_F, NoSymbol, | ||
| 168 | +/* 34 41 */ XK_G, NoSymbol, | ||
| 169 | +/* 35 42 */ XK_H, NoSymbol, | ||
| 170 | +/* 36 43 */ XK_J, NoSymbol, | ||
| 171 | +/* 37 44 */ XK_K, NoSymbol, | ||
| 172 | +/* 38 45 */ XK_L, NoSymbol, | ||
| 173 | +/* 39 46 */ XK_semicolon, XK_colon, | ||
| 174 | +/* 40 47 */ XK_apostrophe, XK_quotedbl, | ||
| 175 | +/* 41 48 */ XK_grave, XK_asciitilde, | ||
| 176 | +/* 42 49 */ XK_Shift_L, NoSymbol, | ||
| 177 | +/* 43 50 */ XK_backslash, XK_bar, | ||
| 178 | +/* 44 51 */ XK_Z, NoSymbol, | ||
| 179 | +/* 45 52 */ XK_X, NoSymbol, | ||
| 180 | +/* 46 53 */ XK_C, NoSymbol, | ||
| 181 | +/* 47 54 */ XK_V, NoSymbol, | ||
| 182 | +/* 48 55 */ XK_B, NoSymbol, | ||
| 183 | +/* 49 56 */ XK_N, NoSymbol, | ||
| 184 | +/* 50 57 */ XK_M, NoSymbol, | ||
| 185 | +/* 51 58 */ XK_comma, XK_less, | ||
| 186 | +/* 52 59 */ XK_period, XK_greater, | ||
| 187 | +/* 53 60 */ XK_slash, XK_question, | ||
| 188 | +/* 54 61 */ XK_Shift_R, NoSymbol, | ||
| 189 | +/* 55 62 */ XK_KP_Multiply, NoSymbol, | ||
| 190 | +/* 56 63 */ XK_Alt_L, XK_Meta_L, | ||
| 191 | +/* 57 64 */ XK_space, NoSymbol, | ||
| 192 | +/* 58 65 */ XK_Caps_Lock, NoSymbol, | ||
| 193 | +/* 59 66 */ XK_F1, NoSymbol, | ||
| 194 | +/* 60 67 */ XK_F2, NoSymbol, | ||
| 195 | +/* 61 68 */ XK_F3, NoSymbol, | ||
| 196 | +/* 62 69 */ XK_F4, NoSymbol, | ||
| 197 | +/* 63 70 */ XK_F5, NoSymbol, | ||
| 198 | +/* 64 71 */ XK_F6, NoSymbol, | ||
| 199 | +/* 65 72 */ XK_F7, NoSymbol, | ||
| 200 | +/* 66 73 */ XK_F8, NoSymbol, | ||
| 201 | +/* 67 74 */ XK_F9, NoSymbol, | ||
| 202 | +/* 68 75 */ XK_F10, NoSymbol, | ||
| 203 | +/* 69 76 */ XK_Break, XK_Pause, | ||
| 204 | +/* 70 77 */ XK_Scroll_Lock, NoSymbol, | ||
| 205 | +/* 71 78 */ XK_KP_Home, XK_KP_7, | ||
| 206 | +/* 72 79 */ XK_KP_Up, XK_KP_8, | ||
| 207 | +/* 73 80 */ XK_KP_Page_Up, XK_KP_9, | ||
| 208 | +/* 74 81 */ XK_KP_Subtract, NoSymbol, | ||
| 209 | +/* 75 82 */ XK_KP_Left, XK_KP_4, | ||
| 210 | +/* 76 83 */ XK_KP_5, NoSymbol, | ||
| 211 | +/* 77 84 */ XK_KP_Right, XK_KP_6, | ||
| 212 | +/* 78 85 */ XK_KP_Add, NoSymbol, | ||
| 213 | +/* 79 86 */ XK_KP_End, XK_KP_1, | ||
| 214 | +/* 80 87 */ XK_KP_Down, XK_KP_2, | ||
| 215 | +/* 81 88 */ XK_KP_Page_Down, XK_KP_3, | ||
| 216 | +/* 82 89 */ XK_KP_Insert, XK_KP_0, | ||
| 217 | +/* 83 90 */ XK_KP_Delete, XK_KP_Decimal, | ||
| 218 | +/* 84 91 */ NoSymbol, NoSymbol, | ||
| 219 | +/* 85 92 */ NoSymbol, NoSymbol, | ||
| 220 | +/* 86 93 */ NoSymbol, NoSymbol, | ||
| 221 | +/* 87 94 */ XK_F11, NoSymbol, | ||
| 222 | +/* 88 95 */ XK_F12, NoSymbol, | ||
| 223 | + | ||
| 224 | +/* These are remapped from the extended set (using ExtendMap) */ | ||
| 225 | + | ||
| 226 | +/* 89 96 */ XK_Control_R, NoSymbol, | ||
| 227 | +/* 90 97 */ XK_KP_Enter, NoSymbol, | ||
| 228 | +/* 91 98 */ XK_KP_Divide, NoSymbol, | ||
| 229 | +/* 92 99 */ XK_Sys_Req, XK_Print, | ||
| 230 | +/* 93 100 */ XK_Alt_R, XK_Meta_R, | ||
| 231 | +/* 94 101 */ XK_Num_Lock, NoSymbol, | ||
| 232 | +/* 95 102 */ XK_Home, NoSymbol, | ||
| 233 | +/* 96 103 */ XK_Up, NoSymbol, | ||
| 234 | +/* 97 104 */ XK_Page_Up, NoSymbol, | ||
| 235 | +/* 98 105 */ XK_Left, NoSymbol, | ||
| 236 | +/* 99 106 */ XK_Right, NoSymbol, | ||
| 237 | +/* 100 107 */ XK_End, NoSymbol, | ||
| 238 | +/* 101 108 */ XK_Down, NoSymbol, | ||
| 239 | +/* 102 109 */ XK_Page_Down, NoSymbol, | ||
| 240 | +/* 103 110 */ XK_Insert, NoSymbol, | ||
| 241 | +/* 104 111 */ XK_Delete, NoSymbol, | ||
| 242 | +/* 105 112 */ XK_Super_L, NoSymbol, | ||
| 243 | +/* 106 113 */ XK_Super_R, NoSymbol, | ||
| 244 | +/* 107 114 */ XK_Menu, NoSymbol, | ||
| 245 | +/* 108 115 */ NoSymbol, NoSymbol, | ||
| 246 | +/* 109 116 */ NoSymbol, NoSymbol, | ||
| 247 | +/* 110 117 */ NoSymbol, NoSymbol, | ||
| 248 | +/* 111 118 */ NoSymbol, NoSymbol, | ||
| 249 | +/* 112 119 */ NoSymbol, NoSymbol, | ||
| 250 | + | ||
| 251 | +/* 113 120 */ NoSymbol, NoSymbol, | ||
| 252 | +/* 114 121 */ NoSymbol, NoSymbol, | ||
| 253 | +/* 115 122 */ NoSymbol, NoSymbol, | ||
| 254 | +/* 116 123 */ NoSymbol, NoSymbol, | ||
| 255 | +/* 117 124 */ NoSymbol, NoSymbol, | ||
| 256 | +/* 118 125 */ NoSymbol, NoSymbol, | ||
| 257 | +/* 119 126 */ NoSymbol, NoSymbol, | ||
| 258 | +/* 120 127 */ NoSymbol, NoSymbol, | ||
| 259 | +/* 121 128 */ NoSymbol, NoSymbol, | ||
| 260 | +/* 122 129 */ NoSymbol, NoSymbol, | ||
| 261 | +/* 123 130 */ NoSymbol, NoSymbol, | ||
| 262 | +/* 124 131 */ NoSymbol, NoSymbol, | ||
| 263 | +/* 125 132 */ NoSymbol, NoSymbol, | ||
| 264 | +/* 126 133 */ NoSymbol, NoSymbol, | ||
| 265 | +/* 127 134 */ NoSymbol, NoSymbol, | ||
| 266 | +/* 128 135 */ NoSymbol, NoSymbol, | ||
| 267 | +/* 129 136 */ NoSymbol, NoSymbol, | ||
| 268 | +/* 130 137 */ NoSymbol, NoSymbol, | ||
| 269 | +/* 131 138 */ NoSymbol, NoSymbol, | ||
| 270 | +/* 132 139 */ NoSymbol, NoSymbol, | ||
| 271 | +/* 133 140 */ NoSymbol, NoSymbol, | ||
| 272 | +/* 134 141 */ NoSymbol, NoSymbol, | ||
| 273 | +/* 135 142 */ NoSymbol, NoSymbol, | ||
| 274 | +/* 136 143 */ NoSymbol, NoSymbol, | ||
| 275 | +/* 137 144 */ NoSymbol, NoSymbol, | ||
| 276 | +/* 138 145 */ NoSymbol, NoSymbol, | ||
| 277 | +/* 139 146 */ NoSymbol, NoSymbol, | ||
| 278 | +/* 140 147 */ NoSymbol, NoSymbol, | ||
| 279 | +/* 141 148 */ NoSymbol, NoSymbol, | ||
| 280 | +/* 142 149 */ NoSymbol, NoSymbol, | ||
| 281 | +/* 143 150 */ NoSymbol, NoSymbol, | ||
| 282 | +/* 144 151 */ NoSymbol, NoSymbol, | ||
| 283 | +/* 145 152 */ NoSymbol, NoSymbol, | ||
| 284 | +/* 146 153 */ NoSymbol, NoSymbol, | ||
| 285 | +/* 147 154 */ NoSymbol, NoSymbol, | ||
| 286 | +/* 148 155 */ NoSymbol, NoSymbol, | ||
| 287 | +/* 149 156 */ NoSymbol, NoSymbol, | ||
| 288 | +/* 150 157 */ NoSymbol, NoSymbol, | ||
| 289 | +/* 151 158 */ NoSymbol, NoSymbol, | ||
| 290 | +/* 152 159 */ NoSymbol, NoSymbol, | ||
| 291 | +/* 153 160 */ NoSymbol, NoSymbol, | ||
| 292 | +/* 154 161 */ NoSymbol, NoSymbol, | ||
| 293 | +/* 155 162 */ NoSymbol, NoSymbol, | ||
| 294 | +/* 156 163 */ NoSymbol, NoSymbol, | ||
| 295 | +/* 157 164 */ NoSymbol, NoSymbol, | ||
| 296 | +/* 158 165 */ NoSymbol, NoSymbol, | ||
| 297 | +/* 159 166 */ NoSymbol, NoSymbol, | ||
| 298 | +/* 160 167 */ NoSymbol, NoSymbol, | ||
| 299 | +/* 161 168 */ NoSymbol, NoSymbol, | ||
| 300 | +/* 162 169 */ NoSymbol, NoSymbol, | ||
| 301 | +/* 163 170 */ NoSymbol, NoSymbol, | ||
| 302 | +/* 164 171 */ NoSymbol, NoSymbol, | ||
| 303 | +/* 165 172 */ NoSymbol, NoSymbol, | ||
| 304 | +/* 166 173 */ NoSymbol, NoSymbol, | ||
| 305 | +/* 167 174 */ NoSymbol, NoSymbol, | ||
| 306 | +/* 168 175 */ NoSymbol, NoSymbol, | ||
| 307 | +/* 169 176 */ NoSymbol, NoSymbol, | ||
| 308 | +/* 170 177 */ NoSymbol, NoSymbol, | ||
| 309 | +/* 171 178 */ NoSymbol, NoSymbol, | ||
| 310 | +/* 172 179 */ NoSymbol, NoSymbol, | ||
| 311 | +/* 173 180 */ NoSymbol, NoSymbol, | ||
| 312 | +/* 174 181 */ NoSymbol, NoSymbol, | ||
| 313 | +/* 175 182 */ NoSymbol, NoSymbol, | ||
| 314 | +/* 176 183 */ NoSymbol, NoSymbol, | ||
| 315 | +/* 177 184 */ NoSymbol, NoSymbol, | ||
| 316 | +/* 178 185 */ NoSymbol, NoSymbol, | ||
| 317 | +/* 179 186 */ NoSymbol, NoSymbol, | ||
| 318 | +/* 180 187 */ NoSymbol, NoSymbol, | ||
| 319 | +/* 181 188 */ NoSymbol, NoSymbol, | ||
| 320 | +/* 182 189 */ NoSymbol, NoSymbol, | ||
| 321 | +/* 183 190 */ NoSymbol, NoSymbol, | ||
| 322 | +/* 184 191 */ NoSymbol, NoSymbol, | ||
| 323 | +/* 185 192 */ NoSymbol, NoSymbol, | ||
| 324 | +/* 186 193 */ NoSymbol, NoSymbol, | ||
| 325 | +/* 187 194 */ NoSymbol, NoSymbol, | ||
| 326 | +/* 188 195 */ NoSymbol, NoSymbol, | ||
| 327 | +/* 189 196 */ NoSymbol, NoSymbol, | ||
| 328 | +/* 190 197 */ NoSymbol, NoSymbol, | ||
| 329 | +/* 191 198 */ NoSymbol, NoSymbol, | ||
| 330 | +/* 192 199 */ NoSymbol, NoSymbol, | ||
| 331 | +/* 193 200 */ NoSymbol, NoSymbol, | ||
| 332 | +/* 194 201 */ NoSymbol, NoSymbol, | ||
| 333 | +}; | ||
| 334 | + | ||
| 335 | +static void | ||
| 336 | +EvdevKbdRead (int fd, void *closure) | ||
| 337 | +{ | ||
| 338 | + int i, n; | ||
| 339 | + struct input_event events[NUM_EVENTS]; | ||
| 340 | + | ||
| 341 | + n = read (fd, &events, NUM_EVENTS * sizeof (struct input_event)); | ||
| 342 | + if (n <= 0) | ||
| 343 | + return; | ||
| 344 | + | ||
| 345 | + n /= sizeof (struct input_event); | ||
| 346 | + | ||
| 347 | + for (i = 0; i < n; i++) | ||
| 348 | + { | ||
| 349 | + if (events[i].type == EV_KEY) | ||
| 350 | + KdEnqueueKeyboardEvent (events[i].code, !events[i].value); | ||
| 351 | + } | ||
| 352 | +} | ||
| 353 | + | ||
| 354 | +static void | ||
| 355 | +EvdevKbdLoad (void) | ||
| 356 | +{ | ||
| 357 | + kdMinScanCode = 0; | ||
| 358 | + kdMaxScanCode = 193; | ||
| 359 | + kdKeymapWidth = 2; | ||
| 360 | + memcpy (kdKeymap, evdevKeymap, sizeof (evdevKeymap)); | ||
| 361 | +} | ||
| 362 | + | ||
| 363 | +static int | ||
| 364 | +EvdevKbdInit (void) | ||
| 365 | +{ | ||
| 366 | + int fd, i; | ||
| 367 | + | ||
| 368 | + if (!EvdevInputType) | ||
| 369 | + EvdevInputType = KdAllocInputType (); | ||
| 370 | + | ||
| 371 | + if (!kdKeyboard) | ||
| 372 | + { | ||
| 373 | + for (i = 0; i < NUM_DEFAULT_EVDEV; i++) | ||
| 374 | + { | ||
| 375 | + fd = open (kdefaultEvdev[i], 2); | ||
| 376 | + if (fd >= 0) | ||
| 377 | + { | ||
| 378 | + kdKeyboard = KdSaveString (kdefaultEvdev[i]); | ||
| 379 | + break; | ||
| 380 | + } | ||
| 381 | + } | ||
| 382 | + } | ||
| 383 | + else | ||
| 384 | + { | ||
| 385 | + fd = open (kdKeyboard, O_RDWR); | ||
| 386 | + if (fd < 0) | ||
| 387 | + return FALSE; | ||
| 388 | + } | ||
| 389 | + | ||
| 390 | + if (ioctl (fd, EVIOCGRAB, 1) < 0) | ||
| 391 | + { | ||
| 392 | + close (fd); | ||
| 393 | + return FALSE; | ||
| 394 | + } | ||
| 395 | + | ||
| 396 | + if (!KdRegisterFd (EvdevInputType, fd, EvdevKbdRead, NULL)) | ||
| 397 | + return FALSE; | ||
| 398 | + | ||
| 399 | + kbd_fd = fd; | ||
| 400 | + return TRUE; | ||
| 401 | +} | ||
| 402 | + | ||
| 403 | +static void | ||
| 404 | +EvdevKbdFini (void) | ||
| 405 | +{ | ||
| 406 | +} | ||
| 407 | + | ||
| 408 | +static void | ||
| 409 | +EvdevKbdLeds (int leds) | ||
| 410 | +{ | ||
| 411 | + struct input_event event; | ||
| 412 | + | ||
| 413 | + memset(&event, 0, sizeof(event)); | ||
| 414 | + | ||
| 415 | + event.type = EV_LED; | ||
| 416 | + event.code = LED_CAPSL; | ||
| 417 | + event.value = leds & (1 << 0) ? 1 : 0; | ||
| 418 | + write(kbd_fd, (char *) &event, sizeof(event)); | ||
| 419 | + | ||
| 420 | + event.type = EV_LED; | ||
| 421 | + event.code = LED_NUML; | ||
| 422 | + event.value = leds & (1 << 1) ? 1 : 0; | ||
| 423 | + write(kbd_fd, (char *) &event, sizeof(event)); | ||
| 424 | + | ||
| 425 | + event.type = EV_LED; | ||
| 426 | + event.code = LED_SCROLLL; | ||
| 427 | + event.value = leds & (1 << 2) ? 1 : 0; | ||
| 428 | + write(kbd_fd, (char *) &event, sizeof(event)); | ||
| 429 | + | ||
| 430 | + event.type = EV_LED; | ||
| 431 | + event.code = LED_COMPOSE; | ||
| 432 | + event.value = leds & (1 << 3) ? 1 : 0; | ||
| 433 | + write(kbd_fd, (char *) &event, sizeof(event)); | ||
| 434 | +} | ||
| 435 | + | ||
| 436 | +static void | ||
| 437 | +EvdevKbdBell (int volume, int frequency, int duration) | ||
| 438 | +{ | ||
| 439 | +} | ||
| 440 | + | ||
| 441 | KdKeyboardFuncs LinuxEvdevKeyboardFuncs = { | ||
| 442 | EvdevKbdLoad, | ||
| 443 | EvdevKbdInit, | ||
| 444 | @@ -309,4 +672,4 @@ KdKeyboardFuncs LinuxEvdevKeyboardFuncs | ||
| 445 | EvdevKbdFini, | ||
| 446 | 0, | ||
| 447 | }; | ||
| 448 | -#endif | ||
| 449 | + | ||
| 450 | Index: xorg-server-1.1.99.3/hw/kdrive/src/kdrive.c | ||
| 451 | =================================================================== | ||
| 452 | --- xorg-server-1.1.99.3.orig/hw/kdrive/src/kdrive.c 2006-11-03 14:49:05.000000000 +0000 | ||
| 453 | +++ xorg-server-1.1.99.3/hw/kdrive/src/kdrive.c 2007-01-25 21:56:32.000000000 +0000 | ||
| 454 | @@ -80,6 +80,7 @@ Bool kdDontZap; | ||
| 455 | Bool kdEnabled; | ||
| 456 | int kdSubpixelOrder; | ||
| 457 | int kdVirtualTerminal = -1; | ||
| 458 | +char *kdKeyboard = 0; | ||
| 459 | Bool kdSwitchPending; | ||
| 460 | char *kdSwitchCmd; | ||
| 461 | DDXPointRec kdOrigin; | ||
| 462 | @@ -707,6 +708,14 @@ KdProcessArgument (int argc, char **argv | ||
| 463 | UseMsg (); | ||
| 464 | return 2; | ||
| 465 | } | ||
| 466 | + if (!strcmp (argv[i], "-keyboard")) | ||
| 467 | + { | ||
| 468 | + if ((i+1) < argc) | ||
| 469 | + kdKeyboard = argv[i+1]; | ||
| 470 | + else | ||
| 471 | + UseMsg (); | ||
| 472 | + return 2; | ||
| 473 | + } | ||
| 474 | if (!strcmp (argv[i], "-rgba")) | ||
| 475 | { | ||
| 476 | if ((i+1) < argc) | ||
| 477 | Index: xorg-server-1.1.99.3/hw/kdrive/src/kdrive.h | ||
| 478 | =================================================================== | ||
| 479 | --- xorg-server-1.1.99.3.orig/hw/kdrive/src/kdrive.h 2006-11-03 14:49:05.000000000 +0000 | ||
| 480 | +++ xorg-server-1.1.99.3/hw/kdrive/src/kdrive.h 2007-01-25 21:58:26.000000000 +0000 | ||
| 481 | @@ -512,6 +512,7 @@ extern Bool kdEmulateMiddleButton; | ||
| 482 | extern Bool kdDisableZaphod; | ||
| 483 | extern Bool kdDontZap; | ||
| 484 | extern int kdVirtualTerminal; | ||
| 485 | +extern char *kdKeyboard; | ||
| 486 | extern char *kdSwitchCmd; | ||
| 487 | extern KdOsFuncs *kdOsFuncs; | ||
| 488 | |||
| 489 | @@ -875,12 +876,13 @@ void | ||
| 490 | ProcessInputEvents (void); | ||
| 491 | |||
| 492 | extern KdPointerDriver LinuxMouseDriver; | ||
| 493 | -extern KdPointerDriver LinuxEvdevDriver; | ||
| 494 | +extern KdPointerDriver LinuxEvdevMouseFuncs; | ||
| 495 | extern KdPointerDriver Ps2MouseDriver; | ||
| 496 | extern KdPointerDriver BusMouseDriver; | ||
| 497 | extern KdPointerDriver MsMouseDriver; | ||
| 498 | extern KdPointerDriver TsDriver; | ||
| 499 | extern KdKeyboardDriver LinuxKeyboardDriver; | ||
| 500 | +extern KdKeyboardFuncs LinuxEvdevKeyboardFuncs; | ||
| 501 | extern KdOsFuncs LinuxFuncs; | ||
| 502 | |||
| 503 | extern KdPointerDriver VxWorksMouseDriver; | ||
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-use-evdev.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-use-evdev.patch new file mode 100644 index 0000000000..d4f885ee26 --- /dev/null +++ b/meta/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-use-evdev.patch | |||
| @@ -0,0 +1,53 @@ | |||
| 1 | --- xserver/hw/kdrive/fbdev/fbinit.c~ 2006-01-31 17:09:33.000000000 +0100 | ||
| 2 | +++ xserver/hw/kdrive/fbdev/fbinit.c 2006-01-31 17:11:55.000000000 +0100 | ||
| 3 | @@ -28,6 +28,8 @@ | ||
| 4 | #endif | ||
| 5 | #include <fbdev.h> | ||
| 6 | |||
| 7 | +extern int use_evdev; | ||
| 8 | + | ||
| 9 | void | ||
| 10 | InitCard (char *name) | ||
| 11 | { | ||
| 12 | @@ -45,7 +47,10 @@ | ||
| 13 | void | ||
| 14 | InitInput (int argc, char **argv) | ||
| 15 | { | ||
| 16 | - KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs); | ||
| 17 | + if (use_evdev) | ||
| 18 | + KdInitInput (&LinuxEvdevMouseFuncs, &LinuxEvdevKeyboardFuncs); | ||
| 19 | + else | ||
| 20 | + KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs); | ||
| 21 | #ifdef TOUCHSCREEN | ||
| 22 | KdAddMouseDriver (&TsFuncs); | ||
| 23 | #endif | ||
| 24 | --- xserver/hw/kdrive/src/kdrive.c.orig 2006-01-31 17:13:28.000000000 +0100 | ||
| 25 | +++ xserver/hw/kdrive/src/kdrive.c 2006-01-31 17:15:28.000000000 +0100 | ||
| 26 | @@ -44,6 +44,8 @@ | ||
| 27 | #include "dpmsproc.h" | ||
| 28 | #endif | ||
| 29 | |||
| 30 | +int use_evdev = 0; | ||
| 31 | + | ||
| 32 | typedef struct _kdDepths { | ||
| 33 | CARD8 depth; | ||
| 34 | CARD8 bpp; | ||
| 35 | @@ -687,6 +689,7 @@ | ||
| 36 | ErrorF("-videoTest Start the server, pause momentarily and exit\n"); | ||
| 37 | ErrorF("-origin X,Y Locates the next screen in the the virtual screen (Xinerama)\n"); | ||
| 38 | ErrorF("-mouse path[,n] Filename of mouse device, n is number of buttons\n"); | ||
| 39 | + ErrorF("-use-evdev Use Linux evdev input\n"); | ||
| 40 | ErrorF("-switchCmd Command to execute on vt switch\n"); | ||
| 41 | ErrorF("-nozap Don't terminate server on Ctrl+Alt+Backspace\n"); | ||
| 42 | ErrorF("vtxx Use virtual terminal xx instead of the next available\n"); | ||
| 43 | @@ -796,6 +799,10 @@ | ||
| 44 | UseMsg (); | ||
| 45 | return 2; | ||
| 46 | } | ||
| 47 | + if (!strcmp (argv[i], "-use-evdev")) | ||
| 48 | + { | ||
| 49 | + use_evdev = 1; | ||
| 50 | + } | ||
| 51 | if (!strcmp (argv[i], "-keyboard")) | ||
| 52 | { | ||
| 53 | if ((i+1) < argc) | ||
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/kmode.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/kmode.patch new file mode 100644 index 0000000000..23a0f7eae8 --- /dev/null +++ b/meta/packages/xorg-xserver/xserver-kdrive-xomap/kmode.patch | |||
| @@ -0,0 +1,43 @@ | |||
| 1 | --- | ||
| 2 | hw/kdrive/src/kmode.c | 21 +++++++++++++++++++++ | ||
| 3 | 1 file changed, 21 insertions(+) | ||
| 4 | |||
| 5 | Index: xorg-server-1.1.99.3/hw/kdrive/src/kmode.c | ||
| 6 | =================================================================== | ||
| 7 | --- xorg-server-1.1.99.3.orig/hw/kdrive/src/kmode.c 2007-01-25 23:53:59.000000000 +0000 | ||
| 8 | +++ xorg-server-1.1.99.3/hw/kdrive/src/kmode.c 2007-01-27 17:17:09.000000000 +0000 | ||
| 9 | @@ -41,6 +41,11 @@ const KdMonitorTiming kdMonitorTimings[ | ||
| 10 | 1, 11, 14, KdSyncNegative, | ||
| 11 | }, | ||
| 12 | |||
| 13 | + { 240, 320, 64, 0, | ||
| 14 | + 0, 0, 0, KdSyncNegative, | ||
| 15 | + 0, 0, 0, KdSyncNegative, | ||
| 16 | + }, | ||
| 17 | + | ||
| 18 | /* Other VESA modes */ | ||
| 19 | { 640, 350, 85, 31500, /* VESA */ | ||
| 20 | 32, 96, 192, KdSyncPositive, /* 26.413 */ | ||
| 21 | @@ -80,6 +85,22 @@ const KdMonitorTiming kdMonitorTimings[ | ||
| 22 | 16, 48, 160, KdSyncNegative, /* 31.469 */ | ||
| 23 | 10, 33, 45, KdSyncNegative, /* 59.940 */ | ||
| 24 | }, | ||
| 25 | + | ||
| 26 | + | ||
| 27 | + { 480, 640, 60, 0, | ||
| 28 | + 0, 0, 0, KdSyncNegative, | ||
| 29 | + 0, 0, 0, KdSyncNegative, | ||
| 30 | + }, | ||
| 31 | + | ||
| 32 | + { 800, 480, 51, 0, | ||
| 33 | + 0, 0, 0, KdSyncNegative, | ||
| 34 | + 0, 0, 0, KdSyncNegative, | ||
| 35 | + }, | ||
| 36 | + | ||
| 37 | + { 480, 800, 51, 0, | ||
| 38 | + 0, 0, 0, KdSyncNegative, | ||
| 39 | + 0, 0, 0, KdSyncNegative, | ||
| 40 | + }, | ||
| 41 | |||
| 42 | /* 800x600 modes */ | ||
| 43 | { 800, 600, 85, 56250, /* VESA */ | ||
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/no-serial-probing.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/no-serial-probing.patch new file mode 100644 index 0000000000..35ccadaa8d --- /dev/null +++ b/meta/packages/xorg-xserver/xserver-kdrive-xomap/no-serial-probing.patch | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | --- xserver/hw/kdrive/linux/mouse.c.orig 2004-05-13 14:25:51.000000000 -0700 | ||
| 2 | +++ xserver/hw/kdrive/linux/mouse.c 2005-09-22 12:20:47.000000000 -0700 | ||
| 3 | @@ -927,8 +927,10 @@ char *kdefaultMouse[] = { | ||
| 4 | "/dev/psaux", | ||
| 5 | "/dev/input/mice", | ||
| 6 | "/dev/adbmouse", | ||
| 7 | +#ifdef BREAK_MY_SERIAL_CONSOLE | ||
| 8 | "/dev/ttyS0", | ||
| 9 | "/dev/ttyS1", | ||
| 10 | +#endif | ||
| 11 | }; | ||
| 12 | |||
| 13 | #define NUM_DEFAULT_MOUSE (sizeof (kdefaultMouse) / sizeof (kdefaultMouse[0])) | ||
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/optional-xkb.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/optional-xkb.patch new file mode 100644 index 0000000000..d9ef51c5ba --- /dev/null +++ b/meta/packages/xorg-xserver/xserver-kdrive-xomap/optional-xkb.patch | |||
| @@ -0,0 +1,54 @@ | |||
| 1 | --- git/Makefile.am.orig 2006-06-09 16:01:51.000000000 +0200 | ||
| 2 | +++ git/Makefile.am 2006-06-09 16:02:59.000000000 +0200 | ||
| 3 | @@ -35,6 +35,10 @@ | ||
| 4 | XINPUT_DIR=Xi | ||
| 5 | endif | ||
| 6 | |||
| 7 | +if XKB | ||
| 8 | +XKB_DIR=xkb | ||
| 9 | +endif | ||
| 10 | + | ||
| 11 | if DBE | ||
| 12 | DBE_DIR=dbe | ||
| 13 | endif | ||
| 14 | @@ -51,7 +55,7 @@ | ||
| 15 | randr \ | ||
| 16 | render \ | ||
| 17 | $(XINPUT_DIR) \ | ||
| 18 | - xkb \ | ||
| 19 | + $(XKB_DIR) \ | ||
| 20 | $(DBE_DIR) \ | ||
| 21 | $(MFB_DIR) \ | ||
| 22 | $(AFB_DIR) \ | ||
| 23 | --- git/configure.ac.orig 2006-05-22 22:40:00.000000000 +0200 | ||
| 24 | +++ git/configure.ac 2006-06-10 15:10:14.000000000 +0200 | ||
| 25 | @@ -418,6 +418,7 @@ | ||
| 26 | AC_ARG_ENABLE(xf86bigfont, AS_HELP_STRING([--disable-xf86bigfont], [Build XF86 Big Font extension (default: enabled)]), [XF86BIGFONT=$enableval], [XF86BIGFONT=yes]) | ||
| 27 | AC_ARG_ENABLE(dpms, AS_HELP_STRING([--disable-dpms], [Build DPMS extension (default: enabled)]), [DPMS=$enableval], [DPMSExtension=yes]) | ||
| 28 | AC_ARG_ENABLE(xinput, AS_HELP_STRING([--disable-xinput], [Build XInput Extension (default: enabled)]), [XINPUT=$enableval], [XINPUT=yes]) | ||
| 29 | +AC_ARG_ENABLE(xkb, AS_HELP_STRING([--disable-xkb], [Build XKB (default: enabled)]), [XKB=$enableval], [XKB=yes]) | ||
| 30 | |||
| 31 | dnl DDXes. | ||
| 32 | AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto]) | ||
| 33 | @@ -739,12 +740,15 @@ | ||
| 34 | |||
| 35 | AC_DEFINE(SHAPE, 1, [Support SHAPE extension]) | ||
| 36 | |||
| 37 | -AC_DEFINE(XKB, 1, [Build XKB]) | ||
| 38 | -AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server]) | ||
| 39 | -AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default]) | ||
| 40 | -REQUIRED_MODULES="$REQUIRED_MODULES xkbfile" | ||
| 41 | -XKB_LIB='$(top_builddir)/xkb/libxkb.la' | ||
| 42 | -XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la' | ||
| 43 | +AM_CONDITIONAL(XKB, [test "x$XKB" = xyes]) | ||
| 44 | +if test "x$XKB" = xyes; then | ||
| 45 | + AC_DEFINE(XKB, 1, [Build XKB]) | ||
| 46 | + AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server]) | ||
| 47 | + AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default]) | ||
| 48 | + REQUIRED_MODULES="$REQUIRED_MODULES xkbfile" | ||
| 49 | + XKB_LIB='$(top_builddir)/xkb/libxkb.la' | ||
| 50 | + XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la' | ||
| 51 | +fi | ||
| 52 | |||
| 53 | AC_CHECK_FUNC(strcasecmp, [], AC_DEFINE([NEED_STRCASECMP], 1, | ||
| 54 | [Do not have `strcasecmp'.])) | ||
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/xcalibrate.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/xcalibrate.patch new file mode 100644 index 0000000000..2a10f13d40 --- /dev/null +++ b/meta/packages/xorg-xserver/xserver-kdrive-xomap/xcalibrate.patch | |||
| @@ -0,0 +1,73 @@ | |||
| 1 | --- | ||
| 2 | Xext/Makefile.am | 5 | ||
| 3 | Xext/xcalibrate.c | 262 +++++++++++++++++++++++++++++++++++++++++++++ | ||
| 4 | configure.ac | 8 + | ||
| 5 | include/kdrive-config.h.in | 3 | ||
| 6 | mi/miinitext.c | 6 + | ||
| 7 | 5 files changed, 283 insertions(+), 1 deletion(-) | ||
| 8 | |||
| 9 | Index: xorg-server-1.1.99.3/mi/miinitext.c | ||
| 10 | =================================================================== | ||
| 11 | --- xorg-server-1.1.99.3.orig/mi/miinitext.c 2006-11-03 14:49:06.000000000 +0000 | ||
| 12 | +++ xorg-server-1.1.99.3/mi/miinitext.c 2007-01-27 17:59:40.000000000 +0000 | ||
| 13 | @@ -368,6 +368,9 @@ extern void ResExtensionInit(INITARGS); | ||
| 14 | #ifdef DMXEXT | ||
| 15 | extern void DMXExtensionInit(INITARGS); | ||
| 16 | #endif | ||
| 17 | +#ifdef XCALIBRATE | ||
| 18 | +extern void XCalibrateExtensionInit(INITARGS); | ||
| 19 | +#endif | ||
| 20 | #ifdef XEVIE | ||
| 21 | extern void XevieExtensionInit(INITARGS); | ||
| 22 | #endif | ||
| 23 | @@ -662,6 +665,9 @@ InitExtensions(argc, argv) | ||
| 24 | #ifdef XSP | ||
| 25 | if (!noXspExtension) XSPExtensionInit(); | ||
| 26 | #endif | ||
| 27 | +#ifdef XCALIBRATE | ||
| 28 | + XCalibrateExtensionInit (); | ||
| 29 | +#endif | ||
| 30 | } | ||
| 31 | |||
| 32 | void | ||
| 33 | Index: xorg-server-1.1.99.3/configure.ac | ||
| 34 | =================================================================== | ||
| 35 | --- xorg-server-1.1.99.3.orig/configure.ac 2006-11-03 14:49:05.000000000 +0000 | ||
| 36 | +++ xorg-server-1.1.99.3/configure.ac 2007-01-29 22:58:18.000000000 +0000 | ||
| 37 | @@ -1584,7 +1590,7 @@ if test "$KDRIVE" = yes; then | ||
| 38 | KDRIVE_LIB='$(top_builddir)/hw/kdrive/src/libkdrive.a' | ||
| 39 | KDRIVE_OS_LIB='$(top_builddir)/hw/kdrive/linux/liblinux.a' | ||
| 40 | KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.a' | ||
| 41 | - KDRIVE_LIBS="$XSERVERLIBS_LIBS $DIX_LIB $XSP_LIB $KDRIVE_LIB $TSLIB_LIBS $KDRIVE_OS_LIB $KDRIVE_PURE_LIBS $KDRIVE_STUB_LIB" | ||
| 42 | + KDRIVE_LIBS="$XSERVERLIBS_LIBS $DIX_LIB $XSP_LIB $KDRIVE_LIB $TSLIB_LIBS $KDRIVE_PURE_LIBS $KDRIVE_OS_LIB $KDRIVE_STUB_LIB" | ||
| 43 | |||
| 44 | # check if we can build Xephyr | ||
| 45 | PKG_CHECK_MODULES(XEPHYR, x11 xext xfont xau xdmcp, [xephyr="yes"], [xephyr="no"]) | ||
| 46 | Index: xorg-server-1.1.99.3/include/kdrive-config.h.in | ||
| 47 | =================================================================== | ||
| 48 | --- xorg-server-1.1.99.3.orig/include/kdrive-config.h.in 2006-11-03 14:49:06.000000000 +0000 | ||
| 49 | +++ xorg-server-1.1.99.3/include/kdrive-config.h.in 2007-01-27 17:59:40.000000000 +0000 | ||
| 50 | @@ -28,4 +28,7 @@ | ||
| 51 | /* Have the backtrace() functiln. */ | ||
| 52 | #undef HAVE_BACKTRACE | ||
| 53 | |||
| 54 | +/* Enable XCalibrate extension */ | ||
| 55 | +#undef XCALIBRATE | ||
| 56 | + | ||
| 57 | #endif /* _KDRIVE_CONFIG_H_ */ | ||
| 58 | Index: xorg-server-1.1.99.3/Xext/Makefile.am | ||
| 59 | =================================================================== | ||
| 60 | --- xorg-server-1.1.99.3.orig/Xext/Makefile.am 2006-11-03 14:49:05.000000000 +0000 | ||
| 61 | +++ xorg-server-1.1.99.3/Xext/Makefile.am 2007-01-29 22:58:33.000000000 +0000 | ||
| 62 | @@ -81,6 +81,11 @@ BUILTIN_SRCS += $(XCALIBRATE_SRCS) | ||
| 63 | # XCalibrare needs tslib | ||
| 64 | endif | ||
| 65 | |||
| 66 | +XCALIBRATE_SRCS = xcalibrate.c | ||
| 67 | +if XCALIBRATE | ||
| 68 | +BUILTIN_SRCS += $(XCALIBRATE_SRCS) | ||
| 69 | +endif | ||
| 70 | + | ||
| 71 | # X EVent Interception Extension: allows accessibility helpers & composite | ||
| 72 | # managers to intercept events from input devices and transform as needed | ||
| 73 | # before the clients see them. | ||
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/xfbdev-fb-opt.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/xfbdev-fb-opt.patch new file mode 100644 index 0000000000..a8f002ea2a --- /dev/null +++ b/meta/packages/xorg-xserver/xserver-kdrive-xomap/xfbdev-fb-opt.patch | |||
| @@ -0,0 +1,82 @@ | |||
| 1 | --- | ||
| 2 | hw/kdrive/fbdev/fbdev.c | 17 ++++++++++++----- | ||
| 3 | hw/kdrive/fbdev/fbdev.h | 1 + | ||
| 4 | hw/kdrive/fbdev/fbinit.c | 20 ++++++++++++++++---- | ||
| 5 | 3 files changed, 29 insertions(+), 9 deletions(-) | ||
| 6 | |||
| 7 | --- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/fbdev/fbdev.c | ||
| 8 | +++ xorg-server-X11R7.1-1.1.0/hw/kdrive/fbdev/fbdev.c | ||
| 9 | @@ -33,16 +33,23 @@ | ||
| 10 | |||
| 11 | extern int KdTsPhyScreen; | ||
| 12 | |||
| 13 | +char *fbdevDevicePath = NULL; | ||
| 14 | Bool | ||
| 15 | fbdevInitialize (KdCardInfo *card, FbdevPriv *priv) | ||
| 16 | { | ||
| 17 | int k; | ||
| 18 | unsigned long off; | ||
| 19 | - if ((priv->fd = open("/dev/fb0", O_RDWR)) < 0 && \ | ||
| 20 | - (priv->fd = open("/dev/fb/0", O_RDWR)) < 0) { | ||
| 21 | - perror("Error opening /dev/fb0"); | ||
| 22 | - return FALSE; | ||
| 23 | - } | ||
| 24 | + | ||
| 25 | + if (fbdevDevicePath == NULL) | ||
| 26 | + fbdevDevicePath = "/dev/fb0"; | ||
| 27 | + | ||
| 28 | + if ((priv->fd = open(fbdevDevicePath, O_RDWR)) < 0) | ||
| 29 | + { | ||
| 30 | + ErrorF("Error opening framebuffer %s: %s\n", | ||
| 31 | + fbdevDevicePath, strerror(errno)); | ||
| 32 | + return FALSE; | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | /* quiet valgrind */ | ||
| 36 | memset (&priv->fix, '\0', sizeof (priv->fix)); | ||
| 37 | if ((k=ioctl(priv->fd, FBIOGET_FSCREENINFO, &priv->fix)) < 0) { | ||
| 38 | --- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/fbdev/fbdev.h | ||
| 39 | +++ xorg-server-X11R7.1-1.1.0/hw/kdrive/fbdev/fbdev.h | ||
| 40 | @@ -53,6 +53,7 @@ typedef struct _fbdevScrPriv { | ||
| 41 | } FbdevScrPriv; | ||
| 42 | |||
| 43 | extern KdCardFuncs fbdevFuncs; | ||
| 44 | +extern char* fbdevDevicePath; | ||
| 45 | |||
| 46 | Bool | ||
| 47 | fbdevInitialize (KdCardInfo *card, FbdevPriv *priv); | ||
| 48 | --- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/fbdev/fbinit.c | ||
| 49 | +++ xorg-server-X11R7.1-1.1.0/hw/kdrive/fbdev/fbinit.c | ||
| 50 | @@ -59,16 +59,28 @@ InitInput (int argc, char **argv) | ||
| 51 | void | ||
| 52 | ddxUseMsg (void) | ||
| 53 | { | ||
| 54 | - KdUseMsg(); | ||
| 55 | + KdUseMsg(); | ||
| 56 | + ErrorF("\nXfbdev Device Usage:\n"); | ||
| 57 | + ErrorF("-fb path Framebuffer device to use. Defaults to /dev/fb0\n"); | ||
| 58 | + ErrorF("\n"); | ||
| 59 | } | ||
| 60 | |||
| 61 | int | ||
| 62 | ddxProcessArgument (int argc, char **argv, int i) | ||
| 63 | { | ||
| 64 | - return KdProcessArgument (argc, argv, i); | ||
| 65 | -} | ||
| 66 | - | ||
| 67 | + if (!strcmp (argv[i], "-fb")) | ||
| 68 | + { | ||
| 69 | + if (i+1 < argc) | ||
| 70 | + { | ||
| 71 | + fbdevDevicePath = argv[i+1]; | ||
| 72 | + return 2; | ||
| 73 | + } | ||
| 74 | + UseMsg(); | ||
| 75 | + exit(1); | ||
| 76 | + } | ||
| 77 | |||
| 78 | + return KdProcessArgument (argc, argv, i); | ||
| 79 | +} | ||
| 80 | |||
| 81 | KdCardFuncs fbdevFuncs = { | ||
| 82 | fbdevCardInit, /* cardinit */ | ||
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap_X11R7.1-1.1.99.3.bb b/meta/packages/xorg-xserver/xserver-kdrive-xomap_X11R7.1-1.1.99.3.bb new file mode 100644 index 0000000000..f643226217 --- /dev/null +++ b/meta/packages/xorg-xserver/xserver-kdrive-xomap_X11R7.1-1.1.99.3.bb | |||
| @@ -0,0 +1,48 @@ | |||
| 1 | LICENSE = "MIT" | ||
| 2 | DEPENDS = "tslib xproto libxdmcp xextproto xtrans libxau virtual/libx11 libxext libxrandr fixesproto damageproto libxfont resourceproto compositeproto xcalibrateext recordproto videoproto scrnsaverproto xpext xsp libxkbfile dbus" | ||
| 3 | |||
| 4 | PROVIDES = "virtual/xserver" | ||
| 5 | PACKAGES =+ "xserver-kdrive-xomap" | ||
| 6 | SECTION = "x11/base" | ||
| 7 | DESCRIPTION = "X server from freedesktop.org" | ||
| 8 | DESCRIPTION_xserver-kdrive-xomap = "X server for the OMAP in the Nokia 800" | ||
| 9 | |||
| 10 | PR = "r0" | ||
| 11 | |||
| 12 | COMPATIBLE_MACHINE = "nokia800" | ||
| 13 | |||
| 14 | FILES_${PN} = "${libdir}/xserver /etc/dbus-1/*" | ||
| 15 | FILES_xserver-kdrive-xomap = "${bindir}/Xomap" | ||
| 16 | |||
| 17 | RDEPENDS_xserver-kdrive-xomap = "${PN}" | ||
| 18 | |||
| 19 | SRC_URI = "http://repository.maemo.org/pool/maemo3.0/free/source/xorg-server_1.1.99.3-0osso21.tar.gz \ | ||
| 20 | file://kmode.patch;patch=1 \ | ||
| 21 | file://disable-apm.patch;patch=1 \ | ||
| 22 | file://no-serial-probing.patch;patch=1 \ | ||
| 23 | file://fbdev-not-fix.patch;patch=1 \ | ||
| 24 | file://enable-builtin-fonts.patch;patch=1 \ | ||
| 25 | file://xcalibrate.patch;patch=1 \ | ||
| 26 | file://fixups.patch;patch=1 \ | ||
| 27 | file://calibrateext.patch;patch=1" | ||
| 28 | # file://kdrive-evdev.patch;patch=1 \ | ||
| 29 | # file://kdrive-use-evdev.patch;patch=1 \ | ||
| 30 | # file://optional-xkb.patch;patch=1 \ | ||
| 31 | # file://disable-xf86-dga-xorgcfg.patch;patch=1 \ | ||
| 32 | # file://enable-tslib.patch;patch=1 \ | ||
| 33 | # file://xfbdev-fb-opt.patch;patch=1" | ||
| 34 | |||
| 35 | S = "${WORKDIR}/xorg-server-1.1.99.3" | ||
| 36 | |||
| 37 | inherit autotools pkgconfig | ||
| 38 | |||
| 39 | EXTRA_OECONF = "--enable-composite --enable-kdrive --enable-builtin-fonts \ | ||
| 40 | --disable-dga --disable-dri --disable-xinerama \ | ||
| 41 | --disable-xf86misc --disable-xf86vidmode \ | ||
| 42 | --disable-xorg --disable-xorgcfg \ | ||
| 43 | --disable-dmx --enable-xcalibrate \ | ||
| 44 | --disable-xkb --disable-xnest --disable-xvfb \ | ||
| 45 | --disable-xevie --disable-xprint --disable-xtrap \ | ||
| 46 | --with-default-font-path=built-ins \ | ||
| 47 | ac_cv_file__usr_share_X11_sgml_defs_ent=no \ | ||
| 48 | --enable-xomap" | ||
