pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/devel/SDL fix wscons keyboard



details:   https://anonhg.NetBSD.org/pkgsrc/rev/be4fc6b9e9f9
branches:  trunk
changeset: 645506:be4fc6b9e9f9
user:      jmcneill <jmcneill%pkgsrc.org@localhost>
date:      Thu Jan 29 11:28:50 2015 +0000

description:
fix wscons keyboard

diffstat:

 devel/SDL/distinfo                                           |    6 +-
 devel/SDL/patches/patch-src_video_wscons_SDL__wsconsevents.c |  128 ++++------
 devel/SDL/patches/patch-src_video_wscons_SDL__wsconsvideo.h  |   10 +-
 3 files changed, 63 insertions(+), 81 deletions(-)

diffs (229 lines):

diff -r fe53a5cbf752 -r be4fc6b9e9f9 devel/SDL/distinfo
--- a/devel/SDL/distinfo        Thu Jan 29 10:34:25 2015 +0000
+++ b/devel/SDL/distinfo        Thu Jan 29 11:28:50 2015 +0000
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.68 2015/01/29 01:56:02 jmcneill Exp $
+$NetBSD: distinfo,v 1.69 2015/01/29 11:28:50 jmcneill Exp $
 
 SHA1 (SDL-1.2.15.tar.gz) = 0c5f193ced810b0d7ce3ab06d808cbb5eef03a2c
 RMD160 (SDL-1.2.15.tar.gz) = d4802a090cb4a24eeb0c8ce5690802f596d394c3
@@ -8,8 +8,8 @@
 SHA1 (patch-src_audio_sun_SDL__sunaudio.c) = 4b492b40d39e6444037dfda55766e4a149cc6c30
 SHA1 (patch-src_joystick_bsd_SDL__sysjoystick.c) = 4ea0136f231729129b82e5f7ee4b9eaf68a13876
 SHA1 (patch-src_video_quartz_SDL__QuartzVideo.h) = 19d952bade06dbd646e94f42139c38436969b1a8
-SHA1 (patch-src_video_wscons_SDL__wsconsevents.c) = f7519864e9c13ad69eae9a42df22a944586ab93b
+SHA1 (patch-src_video_wscons_SDL__wsconsevents.c) = 1205a549f4ba1f1bc7185081407f79545421e75e
 SHA1 (patch-src_video_wscons_SDL__wsconsevents__c.h) = 97206e2aca0b620005217d9d07ad1177516cac92
 SHA1 (patch-src_video_wscons_SDL__wsconsvideo.c) = 17e048ccb201ae961e820ab880d5a588b2db2639
-SHA1 (patch-src_video_wscons_SDL__wsconsvideo.h) = 82028df57cf3de95152278924ffe3134fe32f85a
+SHA1 (patch-src_video_wscons_SDL__wsconsvideo.h) = efc75da910cfe370b7361a0b9d2b90837c6b9aa9
 SHA1 (patch-src_video_x11_SDL_x11video.c) = 624fbb7e701d6de6ec93096beea7c085125934aa
diff -r fe53a5cbf752 -r be4fc6b9e9f9 devel/SDL/patches/patch-src_video_wscons_SDL__wsconsevents.c
--- a/devel/SDL/patches/patch-src_video_wscons_SDL__wsconsevents.c      Thu Jan 29 10:34:25 2015 +0000
+++ b/devel/SDL/patches/patch-src_video_wscons_SDL__wsconsevents.c      Thu Jan 29 11:28:50 2015 +0000
@@ -1,8 +1,8 @@
-$NetBSD: patch-src_video_wscons_SDL__wsconsevents.c,v 1.6 2015/01/29 01:56:02 jmcneill Exp $
+$NetBSD: patch-src_video_wscons_SDL__wsconsevents.c,v 1.7 2015/01/29 11:28:50 jmcneill Exp $
 
 --- src/video/wscons/SDL_wsconsevents.c.orig   2012-01-19 06:30:06.000000000 +0000
 +++ src/video/wscons/SDL_wsconsevents.c
-@@ -47,6 +47,13 @@ int WSCONS_InitKeyboard(_THIS)
+@@ -47,14 +47,31 @@ int WSCONS_InitKeyboard(_THIS)
      return -1;
    }
  
@@ -16,21 +16,58 @@
    if (tcgetattr(private->fd, &private->saved_tty) == -1) {
      WSCONS_ReportError("cannot get terminal attributes: %s", strerror(errno));
      return -1;
-@@ -65,6 +72,7 @@ int WSCONS_InitKeyboard(_THIS)
+   }
++  if (ioctl(private->fd, WSKBDIO_GETKEYREPEAT, &private->saved_repeat) == -1) {
++    WSCONS_ReportError("cannot get repeat settings: %s", strerror(errno));
++    return -1;
++  }
+   private->did_save_tty = 1;
++
++  if (ioctl(private->fd, KDSKBMODE, K_RAW) == -1) {
++    WSCONS_ReportError("cannot set raw keyboard mode: %s", strerror(errno));
++    return -1;
++  }
++
+   tty = private->saved_tty;
+   tty.c_iflag = IGNPAR | IGNBRK;
+-  tty.c_oflag = 0;
++  //tty.c_oflag = 0;
+   tty.c_cflag = CREAD | CS8;
+   tty.c_lflag = 0;
+   tty.c_cc[VTIME] = 0;
+@@ -65,8 +82,12 @@ int WSCONS_InitKeyboard(_THIS)
      WSCONS_ReportError("cannot set terminal attributes: %s", strerror(errno));
      return -1;
    }
+-  if (ioctl(private->fd, KDSKBMODE, K_RAW) == -1) {
+-    WSCONS_ReportError("cannot set raw keyboard mode: %s", strerror(errno));
 +
-   if (ioctl(private->fd, KDSKBMODE, K_RAW) == -1) {
-     WSCONS_ReportError("cannot set raw keyboard mode: %s", strerror(errno));
++  struct wskbd_keyrepeat_data repeat;
++  repeat.which = WSKBD_KEYREPEAT_DOALL;
++  repeat.del1 = repeat.delN = UINT_MAX;
++  if (ioctl(private->fd, WSKBDIO_SETKEYREPEAT, &repeat) == -1) {
++    WSCONS_ReportError("cannot set repeat settings: %s", strerror(errno));
      return -1;
-@@ -89,8 +97,57 @@ void WSCONS_ReleaseKeyboard(_THIS)
+   }
+ 
+@@ -81,6 +102,10 @@ void WSCONS_ReleaseKeyboard(_THIS)
+                        strerror(errno));
+     }
+     if (private->did_save_tty) {
++      if (ioctl(private->fd, WSKBDIO_SETKEYREPEAT, &private->saved_repeat) == -1) {
++        WSCONS_ReportError("cannot restore repeat settings: %s",
++                         strerror(errno));
++      }
+       if (tcsetattr(private->fd, TCSANOW, &private->saved_tty) < 0) {
+       WSCONS_ReportError("cannot restore keynoard attributes: %s",
+                          strerror(errno));
+@@ -89,8 +114,57 @@ void WSCONS_ReleaseKeyboard(_THIS)
    }
  }
  
 -static void updateMouse()
 +int WSCONS_InitMouse(_THIS)
-+{
+ {
 +  if (private->mouseFd != -1) {
 +#if defined(WSMOUSEIO_SETVERSION)
 +    int version = WSMOUSE_EVENT_VERSION;
@@ -50,7 +87,7 @@
 +#define NUMEVENTS 64
 +
 +static void updateMouse(_THIS)
- {
++{
 +  struct wscons_event evlist[NUMEVENTS];
 +  struct wscons_event *ev = evlist;
 +  int nev, i;
@@ -83,7 +120,7 @@
  }
  
  static SDLKey keymap[128];
-@@ -120,19 +177,42 @@ static void updateKeyboard(_THIS)
+@@ -120,19 +194,42 @@ static void updateKeyboard(_THIS)
      for (i = 0; i < n; i++) {
        unsigned char c = buf[i] & 0x7f;
        if (c == 224) // special key prefix -- what should we do with it?
@@ -130,86 +167,23 @@
    } while (posted);
  }
  
-@@ -146,7 +226,72 @@ void WSCONS_InitOSKeymap(_THIS)
+@@ -146,8 +243,10 @@ void WSCONS_InitOSKeymap(_THIS)
    }
  
    switch (private->kbdType) {
 -#ifdef WSKBD_TYPE_ZAURUS
-+  case WSKBD_TYPE_USB:
-+    for (i=4; i <= 29; i++) {
-+      keymap[i] = SDLK_a + (i-4);
-+    }
-+    for (i=30; i <= 38; i++) {
-+      keymap[i] = SDLK_1 + (i-30);
-+    }
-+    keymap[39] = SDLK_0;
-+    keymap[40] = SDLK_RETURN;
-+    keymap[41] = SDLK_ESCAPE;
-+    keymap[42] = SDLK_BACKSPACE;
-+    keymap[43] = SDLK_TAB;
-+    keymap[44] = SDLK_SPACE;
-+    keymap[45] = SDLK_MINUS;
-+    keymap[46] = SDLK_EQUALS;
-+    keymap[47] = SDLK_LEFTBRACKET;
-+    keymap[48] = SDLK_RIGHTBRACKET;
-+    keymap[49] = SDLK_BACKSLASH;
-+    keymap[50] = SDLK_BACKSLASH;
-+    keymap[51] = SDLK_SEMICOLON;
-+    keymap[52] = SDLK_QUOTE;
-+    keymap[53] = SDLK_BACKQUOTE;
-+    keymap[54] = SDLK_COMMA;
-+    keymap[55] = SDLK_PERIOD;
-+    keymap[56] = SDLK_SLASH;
-+    keymap[57] = SDLK_CAPSLOCK;
-+    for (i=58; i <= 69; i++) {
-+      keymap[i] = SDLK_F1 + (i-58);
-+    }
-+    keymap[70] = SDLK_PRINT;
-+    keymap[71] = SDLK_SCROLLOCK;
-+    keymap[72] = SDLK_PAUSE;
-+    keymap[73] = SDLK_INSERT;
-+    keymap[74] = SDLK_HOME;
-+    keymap[75] = SDLK_PAGEUP;
-+    keymap[76] = SDLK_DELETE;
-+    keymap[77] = SDLK_END;
-+    keymap[78] = SDLK_PAGEDOWN;
-+    keymap[79] = SDLK_RIGHT;
-+    keymap[80] = SDLK_LEFT;
-+    keymap[81] = SDLK_DOWN;
-+    keymap[82] = SDLK_UP;
-+    keymap[83] = SDLK_NUMLOCK;
-+    keymap[84] = SDLK_KP_DIVIDE;
-+    keymap[85] = SDLK_KP_MULTIPLY;
-+    keymap[86] = SDLK_KP_MINUS;
-+    keymap[87] = SDLK_KP_PLUS;
-+    keymap[88] = SDLK_KP_ENTER;
-+    for (i=89; i <= 97; i++) {
-+      keymap[i] = SDLK_KP1 + (i-89);
-+    }
-+    keymap[98] = SDLK_KP0;
-+    keymap[99] = SDLK_KP_PERIOD;
-+    keymap[100] = SDLK_LESS;
-+    keymap[101] = SDLK_MENU;
-+    keymap[102] = SDLK_POWER;
-+    keymap[103] = SDLK_KP_EQUALS;
-+    keymap[104] = SDLK_F13;
-+    keymap[105] = SDLK_F14;
-+    keymap[106] = SDLK_F15;
-+    keymap[109] = SDLK_POWER;
-+    keymap[117] = SDLK_HELP;
-+
-+    break;
-+
 +#if defined(WSKBD_TYPE_ZAURUS)
    case WSKBD_TYPE_ZAURUS:
++#endif
++  case WSKBD_TYPE_USB:
      /* top row */
      keymap[2] = SDLK_1;
-@@ -220,7 +365,7 @@ void WSCONS_InitOSKeymap(_THIS)
+     keymap[3] = SDLK_2;
+@@ -220,7 +319,6 @@ void WSCONS_InitOSKeymap(_THIS)
      keymap[77] = SDLK_RIGHT;
      keymap[80] = SDLK_DOWN;
      break;
 -#endif /* WSKBD_TYPE_ZAURUS */
-+#endif
  
    default:
      WSCONS_ReportError("Unable to map keys for keyboard type %u", 
diff -r fe53a5cbf752 -r be4fc6b9e9f9 devel/SDL/patches/patch-src_video_wscons_SDL__wsconsvideo.h
--- a/devel/SDL/patches/patch-src_video_wscons_SDL__wsconsvideo.h       Thu Jan 29 10:34:25 2015 +0000
+++ b/devel/SDL/patches/patch-src_video_wscons_SDL__wsconsvideo.h       Thu Jan 29 11:28:50 2015 +0000
@@ -1,4 +1,4 @@
-$NetBSD: patch-src_video_wscons_SDL__wsconsvideo.h,v 1.1 2015/01/29 01:56:23 jmcneill Exp $
+$NetBSD: patch-src_video_wscons_SDL__wsconsvideo.h,v 1.2 2015/01/29 11:28:50 jmcneill Exp $
 
 --- src/video/wscons/SDL_wsconsvideo.h.orig    2012-01-19 06:30:06.000000000 +0000
 +++ src/video/wscons/SDL_wsconsvideo.h
@@ -10,3 +10,11 @@
    struct wsdisplay_fbinfo info; /* frame buffer characteristics */
    int physlinebytes;            /* number of bytes per row */
    int redMask, greenMask, blueMask;
+@@ -70,6 +71,7 @@ struct SDL_PrivateVideoData {
+   unsigned int kbdType;
+   int did_save_tty;
+   struct termios saved_tty;
++  struct wskbd_keyrepeat_data saved_repeat;
+ };
+ 
+ 



Home | Main Index | Thread Index | Old Index