xserver-kdrive: add evdev support to cvs version
authorPhilipp Zabel <philipp.zabel@gmail.com>
Tue, 31 Jan 2006 16:27:42 +0000 (16:27 +0000)
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>
Tue, 31 Jan 2006 16:27:42 +0000 (16:27 +0000)
packages/xserver/xserver-kdrive/kdrive-evdev.patch [new file with mode: 0644]
packages/xserver/xserver-kdrive/kdrive-use-evdev.patch [new file with mode: 0644]
packages/xserver/xserver-kdrive_cvs.bb

diff --git a/packages/xserver/xserver-kdrive/kdrive-evdev.patch b/packages/xserver/xserver-kdrive/kdrive-evdev.patch
new file mode 100644 (file)
index 0000000..2dc22bf
--- /dev/null
@@ -0,0 +1,515 @@
+# Kdrive evdev support patch, posted by Ander Conselvan de Oliveira at
+# http://lists.freedesktop.org/archives/xorg/2005-December/011635.html
+diff -u -r --exclude=CVS --exclude=Makefile --exclude='*.o' --exclude=ephyr --exclude='*.Po' xserver.original/hw/kdrive/linux/evdev.c xserver/hw/kdrive/linux/evdev.c
+--- xserver.original/hw/kdrive/linux/evdev.c   2005-12-16 10:36:05.000000000 -0200
++++ xserver/hw/kdrive/linux/evdev.c    2005-12-16 10:40:51.077410192 -0200
+@@ -31,9 +31,11 @@
+ #include <X11/X.h>
+ #include <X11/Xproto.h>
+ #include <X11/Xpoll.h>
++#include <X11/keysym.h>
+ #include "inputstr.h"
+ #include "scrnintstr.h"
+ #include "kdrive.h"
++#include "kkeymap.h"
+ #define NUM_EVENTS  128
+ #define ABS_UNSET   -65535
+@@ -105,9 +107,10 @@
+ {
+     KdMouseInfo               *mi = closure;
+     Kevdev            *ke = mi->driver;
+-    int                       i;
++    int                       i, j;
+     struct input_event        events[NUM_EVENTS];
+     int                       n;
++    int                 flags;
+     n = read (evdevPort, &events, NUM_EVENTS * sizeof (struct input_event));
+     if (n <= 0)
+@@ -115,22 +118,64 @@
+     n /= sizeof (struct input_event);
+     for (i = 0; i < n; i++)
+     {
++      flags = KD_MOUSE_DELTA | kdMouseInfo->buttonState;
+       switch (events[i].type) {
+       case EV_SYN:
+           break;
+       case EV_KEY:
+-          EvdevMotion (mi);
+-          ASSIGNBIT(ke->key,events[i].code, events[i].value);
+-          if (events[i].code < 0x100)
+-              ErrorF ("key %d %d\n", events[i].code, events[i].value);
+-          else
+-              ErrorF ("key 0x%x %d\n", events[i].code, events[i].value);
++        if (events[i].code >= BTN_MOUSE && events[i].code < BTN_JOYSTICK) {
++              switch (events[i].code) {
++              case BTN_LEFT:
++                if (events[i].value == 1)
++                  flags |= KD_BUTTON_1;
++                else
++                  flags &= ~KD_BUTTON_1;
++                break;
++              case BTN_MIDDLE:
++                if (events[i].value == 1)
++                  flags |= KD_BUTTON_2;
++                else
++                  flags &= ~KD_BUTTON_2;
++                break;
++              case BTN_RIGHT:
++                if (events[i].value == 1)
++                  flags |= KD_BUTTON_3;
++                else
++                  flags &= ~KD_BUTTON_3;
++                break;
++              default:
++                /* Unknow button */
++                break;
++                      }
++              KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0);
++          }
+           break;
+       case EV_REL:
+-          ke->rel[events[i].code] += events[i].value;
++          if (events[i].code == REL_X) {
++            KdEnqueueMouseEvent (kdMouseInfo, flags, events[i].value, 0);
++          }
++          else if (events[i].code == REL_Y) {
++            KdEnqueueMouseEvent (kdMouseInfo, flags, 0, events[i].value);
++          }
++          else if (events[i].code == REL_WHEEL) {           
++            for (j = 0; j < abs (events[i].value); j++) {
++              if (events[i].value > 0)
++                flags |= KD_BUTTON_4;
++              else
++                flags |= KD_BUTTON_5;
++
++              KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0);
++
++              if (events[i].value > 0)
++                flags &= ~KD_BUTTON_4;
++              else
++                flags &= ~KD_BUTTON_5;
++
++              KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0);
++            } /* events[i].code == REL_WHEEL */
++          }
+           break;
+       case EV_ABS:
+-          ke->abs[events[i].code] = events[i].value;
+           break;
+       }
+     }
+@@ -173,6 +218,12 @@
+               fd = open (kdefaultEvdev[i], 2);
+               if (fd >= 0)
+               {
++                    if (ioctl (fd, EVIOCGRAB, 1) < 0)
++                    {
++                        close (fd);
++                        continue;
++                    }
++
+                   mi->name = KdSaveString (kdefaultEvdev[i]);
+                   break;
+               }
+@@ -287,7 +338,319 @@
+     EvdevFini,
+ };
+-#if 0
++/* Keyboard */
++
++int kbd_fd = -1;
++int EvdevInputType = 0;
++
++KeySym evdevKeymap[(194 - 1 + 1) * 2] = {
++/* These are directly mapped from DOS scanset 0 */
++/*      1     8 */       XK_Escape, NoSymbol,
++/*      2     9 */       XK_1,  XK_exclam,
++/*      3    10 */       XK_2,  XK_at,
++/*      4    11 */       XK_3,  XK_numbersign,
++/*      5    12 */       XK_4,  XK_dollar,
++/*      6    13 */       XK_5,  XK_percent,
++/*      7    14 */       XK_6,  XK_asciicircum,
++/*      8    15 */       XK_7,  XK_ampersand,
++/*      9    16 */       XK_8,  XK_asterisk,
++/*     10    17 */       XK_9,  XK_parenleft,
++/*     11    18 */       XK_0,  XK_parenright,
++/*     12    19 */       XK_minus,      XK_underscore,
++/*     13    20 */       XK_equal,      XK_plus,
++/*     14    21 */       XK_BackSpace,  NoSymbol,
++/*     15    22 */       XK_Tab,        NoSymbol,
++/*     16    23 */       XK_Q,  NoSymbol,
++/*     17    24 */       XK_W,  NoSymbol,
++/*     18    25 */       XK_E,  NoSymbol,
++/*     19    26 */       XK_R,  NoSymbol,
++/*     20    27 */       XK_T,  NoSymbol,
++/*     21    28 */       XK_Y,  NoSymbol,
++/*     22    29 */       XK_U,  NoSymbol,
++/*     23    30 */       XK_I,  NoSymbol,
++/*     24    31 */       XK_O,  NoSymbol,
++/*     25    32 */       XK_P,  NoSymbol,
++/*     26    33 */       XK_bracketleft,        XK_braceleft,
++/*     27    34 */       XK_bracketright,       XK_braceright,
++/*     28    35 */       XK_Return,     NoSymbol,
++/*     29    36 */       XK_Control_L,  NoSymbol,
++/*     30    37 */       XK_A,  NoSymbol,
++/*     31    38 */       XK_S,  NoSymbol,
++/*     32    39 */       XK_D,  NoSymbol,
++/*     33    40 */       XK_F,  NoSymbol,
++/*     34    41 */       XK_G,  NoSymbol,
++/*     35    42 */       XK_H,  NoSymbol,
++/*     36    43 */       XK_J,  NoSymbol,
++/*     37    44 */       XK_K,  NoSymbol,
++/*     38    45 */       XK_L,  NoSymbol,
++/*     39    46 */       XK_semicolon,  XK_colon,
++/*     40    47 */       XK_apostrophe, XK_quotedbl,
++/*     41    48 */       XK_grave,      XK_asciitilde,
++/*     42    49 */       XK_Shift_L,    NoSymbol,
++/*     43    50 */       XK_backslash,  XK_bar,
++/*     44    51 */       XK_Z,  NoSymbol,
++/*     45    52 */       XK_X,  NoSymbol,
++/*     46    53 */       XK_C,  NoSymbol,
++/*     47    54 */       XK_V,  NoSymbol,
++/*     48    55 */       XK_B,  NoSymbol,
++/*     49    56 */       XK_N,  NoSymbol,
++/*     50    57 */       XK_M,  NoSymbol,
++/*     51    58 */       XK_comma,      XK_less,
++/*     52    59 */       XK_period,     XK_greater,
++/*     53    60 */       XK_slash,      XK_question,
++/*     54    61 */       XK_Shift_R,    NoSymbol,
++/*     55    62 */       XK_KP_Multiply,        NoSymbol,
++/*     56    63 */       XK_Alt_L,      XK_Meta_L,
++/*     57    64 */       XK_space,      NoSymbol,
++/*     58    65 */       XK_Caps_Lock,  NoSymbol,
++/*     59    66 */       XK_F1, NoSymbol,
++/*     60    67 */       XK_F2, NoSymbol,
++/*     61    68 */       XK_F3, NoSymbol,
++/*     62    69 */       XK_F4, NoSymbol,
++/*     63    70 */       XK_F5, NoSymbol,
++/*     64    71 */       XK_F6, NoSymbol,
++/*     65    72 */       XK_F7, NoSymbol,
++/*     66    73 */       XK_F8, NoSymbol,
++/*     67    74 */       XK_F9, NoSymbol,
++/*     68    75 */       XK_F10,        NoSymbol,
++/*     69    76 */       XK_Break,      XK_Pause,
++/*     70    77 */       XK_Scroll_Lock,        NoSymbol,
++/*     71    78 */       XK_KP_Home,    XK_KP_7,
++/*     72    79 */       XK_KP_Up,      XK_KP_8,
++/*     73    80 */       XK_KP_Page_Up, XK_KP_9,
++/*     74    81 */       XK_KP_Subtract,        NoSymbol,
++/*     75    82 */       XK_KP_Left,    XK_KP_4,
++/*     76    83 */       XK_KP_5,       NoSymbol,
++/*     77    84 */       XK_KP_Right,   XK_KP_6,
++/*     78    85 */       XK_KP_Add,     NoSymbol,
++/*     79    86 */       XK_KP_End,     XK_KP_1,
++/*     80    87 */       XK_KP_Down,    XK_KP_2,
++/*     81    88 */       XK_KP_Page_Down,       XK_KP_3,
++/*     82    89 */       XK_KP_Insert,  XK_KP_0,
++/*     83    90 */       XK_KP_Delete,  XK_KP_Decimal,
++/*     84    91 */     NoSymbol,        NoSymbol,
++/*     85    92 */     NoSymbol,        NoSymbol,
++/*     86    93 */     NoSymbol,        NoSymbol,
++/*     87    94 */       XK_F11,        NoSymbol,
++/*     88    95 */       XK_F12,        NoSymbol,
++
++/* These are remapped from the extended set (using ExtendMap) */
++
++/*     89    96 */       XK_Control_R,  NoSymbol,
++/*     90    97 */       XK_KP_Enter,   NoSymbol,
++/*     91    98 */       XK_KP_Divide,  NoSymbol,
++/*     92    99 */       XK_Sys_Req,    XK_Print,
++/*     93   100 */       XK_Alt_R,      XK_Meta_R,
++/*     94   101 */       XK_Num_Lock,   NoSymbol,
++/*     95   102 */       XK_Home,       NoSymbol,
++/*     96   103 */       XK_Up,         NoSymbol,
++/*     97   104 */       XK_Page_Up,    NoSymbol,
++/*     98   105 */       XK_Left,       NoSymbol,
++/*     99   106 */       XK_Right,      NoSymbol,
++/*    100   107 */       XK_End,        NoSymbol,
++/*    101   108 */       XK_Down,       NoSymbol,
++/*    102   109 */       XK_Page_Down,  NoSymbol,
++/*    103   110 */       XK_Insert,     NoSymbol,
++/*    104   111 */       XK_Delete,     NoSymbol,
++/*    105   112 */       XK_Super_L,    NoSymbol,
++/*    106   113 */       XK_Super_R,    NoSymbol,
++/*    107   114 */       XK_Menu,       NoSymbol,
++/*    108   115 */       NoSymbol,      NoSymbol,
++/*    109   116 */       NoSymbol,      NoSymbol,
++/*    110   117 */       NoSymbol,      NoSymbol,
++/*    111   118 */       NoSymbol,      NoSymbol,
++/*    112   119 */       NoSymbol,      NoSymbol,
++
++/*    113   120 */      NoSymbol,     NoSymbol,
++/*    114   121 */      NoSymbol,     NoSymbol,
++/*    115   122 */      NoSymbol,     NoSymbol,
++/*    116   123 */      NoSymbol,     NoSymbol,
++/*    117   124 */      NoSymbol,     NoSymbol,
++/*    118   125 */      NoSymbol,     NoSymbol,
++/*    119   126 */      NoSymbol,     NoSymbol,
++/*    120   127 */      NoSymbol,     NoSymbol,
++/*    121   128 */      NoSymbol,     NoSymbol,
++/*    122   129 */      NoSymbol,     NoSymbol,
++/*    123   130 */      NoSymbol,     NoSymbol,
++/*    124   131 */      NoSymbol,     NoSymbol,
++/*    125   132 */      NoSymbol,     NoSymbol,
++/*    126   133 */      NoSymbol,     NoSymbol,
++/*    127   134 */      NoSymbol,     NoSymbol,
++/*    128   135 */      NoSymbol,     NoSymbol,
++/*    129   136 */      NoSymbol,     NoSymbol,
++/*    130   137 */      NoSymbol,     NoSymbol,
++/*    131   138 */      NoSymbol,     NoSymbol,
++/*    132   139 */      NoSymbol,     NoSymbol,
++/*    133   140 */      NoSymbol,     NoSymbol,
++/*    134   141 */      NoSymbol,     NoSymbol,
++/*    135   142 */      NoSymbol,     NoSymbol,
++/*    136   143 */      NoSymbol,     NoSymbol,
++/*    137   144 */      NoSymbol,     NoSymbol,
++/*    138   145 */      NoSymbol,     NoSymbol,
++/*    139   146 */      NoSymbol,     NoSymbol,
++/*    140   147 */      NoSymbol,     NoSymbol,
++/*    141   148 */      NoSymbol,     NoSymbol,
++/*    142   149 */      NoSymbol,     NoSymbol,
++/*    143   150 */      NoSymbol,     NoSymbol,
++/*    144   151 */      NoSymbol,     NoSymbol,
++/*    145   152 */      NoSymbol,     NoSymbol,
++/*    146   153 */      NoSymbol,     NoSymbol,
++/*    147   154 */      NoSymbol,     NoSymbol,
++/*    148   155 */      NoSymbol,     NoSymbol,
++/*    149   156 */      NoSymbol,     NoSymbol,
++/*    150   157 */      NoSymbol,     NoSymbol,
++/*    151   158 */      NoSymbol,     NoSymbol,
++/*    152   159 */      NoSymbol,     NoSymbol,
++/*    153   160 */      NoSymbol,     NoSymbol,
++/*    154   161 */      NoSymbol,     NoSymbol,
++/*    155   162 */      NoSymbol,     NoSymbol,
++/*    156   163 */      NoSymbol,     NoSymbol,
++/*    157   164 */      NoSymbol,     NoSymbol,
++/*    158   165 */      NoSymbol,     NoSymbol,
++/*    159   166 */      NoSymbol,     NoSymbol,
++/*    160   167 */      NoSymbol,     NoSymbol,
++/*    161   168 */      NoSymbol,     NoSymbol,
++/*    162   169 */      NoSymbol,     NoSymbol,
++/*    163   170 */      NoSymbol,     NoSymbol,
++/*    164   171 */      NoSymbol,     NoSymbol,
++/*    165   172 */      NoSymbol,     NoSymbol,
++/*    166   173 */      NoSymbol,     NoSymbol,
++/*    167   174 */      NoSymbol,     NoSymbol,
++/*    168   175 */      NoSymbol,     NoSymbol,
++/*    169   176 */      NoSymbol,     NoSymbol,
++/*    170   177 */      NoSymbol,     NoSymbol,
++/*    171   178 */      NoSymbol,     NoSymbol,
++/*    172   179 */      NoSymbol,     NoSymbol,
++/*    173   180 */      NoSymbol,     NoSymbol,
++/*    174   181 */      NoSymbol,     NoSymbol,
++/*    175   182 */      NoSymbol,     NoSymbol,
++/*    176   183 */      NoSymbol,     NoSymbol,
++/*    177   184 */      NoSymbol,     NoSymbol,
++/*    178   185 */      NoSymbol,     NoSymbol,
++/*    179   186 */      NoSymbol,     NoSymbol,
++/*    180   187 */      NoSymbol,     NoSymbol,
++/*    181   188 */      NoSymbol,     NoSymbol,
++/*    182   189 */      NoSymbol,     NoSymbol,
++/*    183   190 */      NoSymbol,     NoSymbol,
++/*    184   191 */      NoSymbol,     NoSymbol,
++/*    185   192 */      NoSymbol,     NoSymbol,
++/*    186   193 */      NoSymbol,     NoSymbol,
++/*    187   194 */      NoSymbol,     NoSymbol,
++/*    188   195 */      NoSymbol,     NoSymbol,
++/*    189   196 */      NoSymbol,     NoSymbol,
++/*    190   197 */      NoSymbol,     NoSymbol,
++/*    191   198 */      NoSymbol,     NoSymbol,
++/*    192   199 */      NoSymbol,     NoSymbol,
++/*    193   200 */      NoSymbol,     NoSymbol,
++/*    194   201 */      NoSymbol,     NoSymbol,
++};
++
++static void
++EvdevKbdRead (int fd, void *closure)
++{
++    int i, n;
++    struct input_event events[NUM_EVENTS];
++
++    n = read (fd, &events, NUM_EVENTS * sizeof (struct input_event));
++    if (n <= 0)
++      return;
++
++    n /= sizeof (struct input_event);
++
++    for (i = 0; i < n; i++)
++    {
++        if (events[i].type == EV_KEY)
++                  KdEnqueueKeyboardEvent (events[i].code, !events[i].value);
++    }
++}
++
++static void
++EvdevKbdLoad (void)
++{
++    kdMinScanCode = 0;
++    kdMaxScanCode = 193;
++    kdKeymapWidth = 2;
++    memcpy (kdKeymap, evdevKeymap, sizeof (evdevKeymap));
++}
++
++static int
++EvdevKbdInit (void)
++{
++    int fd, i;
++
++    if (!EvdevInputType)
++        EvdevInputType = KdAllocInputType ();
++
++    if (!kdKeyboard)
++    {
++        for (i = 0; i < NUM_DEFAULT_EVDEV; i++)
++        {
++            fd = open (kdefaultEvdev[i], 2);
++            if (fd >= 0)
++            {
++                kdKeyboard = KdSaveString (kdefaultEvdev[i]);
++                break;
++            }
++      }
++    }
++    else
++    {
++        fd = open (kdKeyboard, O_RDWR);
++        if (fd < 0)
++            return FALSE;
++    }
++
++    if (ioctl (fd, EVIOCGRAB, 1) < 0)
++    {
++        close (fd);
++      return FALSE;
++    }
++
++    if (!KdRegisterFd (EvdevInputType, fd, EvdevKbdRead, NULL))
++        return FALSE;
++
++    kbd_fd = fd;
++    return TRUE;
++}
++
++static void
++EvdevKbdFini (void)
++{
++}
++
++static void
++EvdevKbdLeds (int leds)
++{
++    struct input_event event;
++
++    memset(&event, 0, sizeof(event));
++
++    event.type = EV_LED;
++    event.code = LED_CAPSL;
++    event.value = leds & (1 << 0) ? 1 : 0;
++    write(kbd_fd, (char *) &event, sizeof(event));
++
++    event.type = EV_LED;
++    event.code = LED_NUML;
++    event.value = leds & (1 << 1) ? 1 : 0;
++    write(kbd_fd, (char *) &event, sizeof(event));
++
++    event.type = EV_LED;
++    event.code = LED_SCROLLL;
++    event.value = leds & (1 << 2) ? 1 : 0;
++    write(kbd_fd, (char *) &event, sizeof(event));
++
++    event.type = EV_LED;
++    event.code = LED_COMPOSE;
++    event.value = leds & (1 << 3) ? 1 : 0;
++    write(kbd_fd, (char *) &event, sizeof(event));
++}
++
++static void
++EvdevKbdBell (int volume, int frequency, int duration)
++{
++}
++
+ KdKeyboardFuncs LinuxEvdevKeyboardFuncs = {
+     EvdevKbdLoad,
+     EvdevKbdInit,
+@@ -296,4 +659,4 @@
+     EvdevKbdFini,
+     0,
+ };
+-#endif
++
+diff -u -r --exclude=CVS --exclude=Makefile --exclude='*.o' --exclude=ephyr --exclude='*.Po' xserver.original/hw/kdrive/src/kdrive.c xserver/hw/kdrive/src/kdrive.c
+--- xserver.original/hw/kdrive/src/kdrive.c    2005-12-16 10:36:07.000000000 -0200
++++ xserver/hw/kdrive/src/kdrive.c     2005-12-16 10:37:09.000000000 -0200
+@@ -73,6 +73,7 @@
+ Bool              kdEnabled;
+ int               kdSubpixelOrder;
+ int               kdVirtualTerminal = -1;
++char              *kdKeyboard = 0;
+ Bool              kdSwitchPending;
+ char              *kdSwitchCmd;
+ DDXPointRec       kdOrigin;
+@@ -795,6 +796,14 @@
+           UseMsg ();
+       return 2;
+     }
++    if (!strcmp (argv[i], "-keyboard"))
++    {
++      if ((i+1) < argc)
++          kdKeyboard = argv[i+1];
++      else
++          UseMsg ();
++      return 2;
++    }
+     if (!strcmp (argv[i], "-rgba"))
+     {
+       if ((i+1) < argc)
+diff -u -r --exclude=CVS --exclude=Makefile --exclude='*.o' --exclude=ephyr --exclude='*.Po' xserver.original/hw/kdrive/src/kdrive.h xserver/hw/kdrive/src/kdrive.h
+--- xserver.original/hw/kdrive/src/kdrive.h    2005-12-16 10:36:07.000000000 -0200
++++ xserver/hw/kdrive/src/kdrive.h     2005-12-16 10:37:09.000000000 -0200
+@@ -416,6 +416,7 @@
+ extern Bool           kdDisableZaphod;
+ extern Bool           kdDontZap;
+ extern int            kdVirtualTerminal;
++extern char           *kdKeyboard;
+ extern char           *kdSwitchCmd;
+ extern KdOsFuncs      *kdOsFuncs;
+@@ -769,7 +770,7 @@
+ ProcessInputEvents (void);
+ extern KdMouseFuncs   LinuxMouseFuncs;
+-extern KdMouseFuncs   LinuxEvdevFuncs;
++extern KdMouseFuncs   LinuxEvdevMouseFuncs;
+ extern KdMouseFuncs   Ps2MouseFuncs;
+ extern KdMouseFuncs   BusMouseFuncs;
+ extern KdMouseFuncs   MsMouseFuncs;
+@@ -777,6 +778,7 @@
+ extern KdMouseFuncs   TsFuncs;
+ #endif
+ extern KdKeyboardFuncs        LinuxKeyboardFuncs;
++extern KdKeyboardFuncs        LinuxEvdevKeyboardFuncs;
+ extern KdOsFuncs      LinuxFuncs;
+ extern KdMouseFuncs   VxWorksMouseFuncs;
+diff -u -r --exclude=CVS --exclude=Makefile --exclude='*.o' --exclude=ephyr --exclude='*.Po' xserver.original/hw/kdrive/src/kinput.c xserver/hw/kdrive/src/kinput.c
+--- xserver.original/hw/kdrive/src/kinput.c    2005-12-16 10:36:07.000000000 -0200
++++ xserver/hw/kdrive/src/kinput.c     2005-12-16 10:37:09.000000000 -0200
+@@ -1300,6 +1300,7 @@
+           xE.u.u.type = KeyPress;
+       xE.u.u.detail = key_code;
+       
++#ifndef XKB
+       switch (KEYCOL1(key_code)) 
+       {
+       case XK_Num_Lock:
+@@ -1313,6 +1314,7 @@
+           else
+               xE.u.u.type = KeyPress;
+       }
++#endif
+       
+       /*
+        * Check pressed keys which are already down
diff --git a/packages/xserver/xserver-kdrive/kdrive-use-evdev.patch b/packages/xserver/xserver-kdrive/kdrive-use-evdev.patch
new file mode 100644 (file)
index 0000000..d4f885e
--- /dev/null
@@ -0,0 +1,53 @@
+--- xserver/hw/kdrive/fbdev/fbinit.c~  2006-01-31 17:09:33.000000000 +0100
++++ xserver/hw/kdrive/fbdev/fbinit.c   2006-01-31 17:11:55.000000000 +0100
+@@ -28,6 +28,8 @@
+ #endif
+ #include <fbdev.h>
++extern int use_evdev;
++
+ void
+ InitCard (char *name)
+ {
+@@ -45,7 +47,10 @@
+ void
+ InitInput (int argc, char **argv)
+ {
+-    KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
++    if (use_evdev)
++        KdInitInput (&LinuxEvdevMouseFuncs, &LinuxEvdevKeyboardFuncs);
++    else
++        KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ #ifdef TOUCHSCREEN
+     KdAddMouseDriver (&TsFuncs);
+ #endif
+--- xserver/hw/kdrive/src/kdrive.c.orig        2006-01-31 17:13:28.000000000 +0100
++++ xserver/hw/kdrive/src/kdrive.c     2006-01-31 17:15:28.000000000 +0100
+@@ -44,6 +44,8 @@
+ #include "dpmsproc.h"
+ #endif
++int use_evdev = 0;
++
+ typedef struct _kdDepths {
+     CARD8   depth;
+     CARD8   bpp;
+@@ -687,6 +689,7 @@
+     ErrorF("-videoTest       Start the server, pause momentarily and exit\n");
+     ErrorF("-origin X,Y      Locates the next screen in the the virtual screen (Xinerama)\n");
+     ErrorF("-mouse path[,n]  Filename of mouse device, n is number of buttons\n");
++    ErrorF("-use-evdev       Use Linux evdev input\n");
+     ErrorF("-switchCmd       Command to execute on vt switch\n");
+     ErrorF("-nozap           Don't terminate server on Ctrl+Alt+Backspace\n");
+     ErrorF("vtxx             Use virtual terminal xx instead of the next available\n");
+@@ -796,6 +799,10 @@
+           UseMsg ();
+       return 2;
+     }
++    if (!strcmp (argv[i], "-use-evdev"))
++    {
++      use_evdev = 1;
++    }
+     if (!strcmp (argv[i], "-keyboard"))
+     {
+       if ((i+1) < argc)
index 241f175..0539513 100644 (file)
@@ -19,7 +19,7 @@ DESCRIPTION_xserver-kdrive-epson = "X server from freedesktop.org, supporting Ep
 DESCRIPTION_xserver-kdrive-fake = "Fake X server"
 DESCRIPTION_xserver-kdrive-xephyr = "X server in an X window"
 
-PR = "r10"
+PR = "r11"
 
 FILES_xserver-kdrive-fbdev = "${bindir}/Xfbdev"
 FILES_xserver-kdrive-ati = "${bindir}/Xati"
@@ -34,6 +34,9 @@ FILES_xserver-kdrive-xephyr = "${bindir}/Xephyr"
 
 SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xserver;module=xserver \
        file://kmode.patch;patch=1 \
+       file://no-serial-probing.patch;patch=1 \
+       file://kdrive-evdev.patch;patch=1  \
+       file://kdrive-use-evdev.patch;patch=1  \
        file://fbdev-not-fix.patch;patch=1"
 
 SRC_URI_append_mnci   = " file://onlyfb.patch;patch=1"