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

Re:pkgsrc/x11/xf86-input-mouse-1.8.1 が wsmouse(4) 認識せず



modular-xorg-server のほうが 1.12.4 に上がって、そっちが
wscons に OpenBSD しかサポートしてないからだと思います。

/usr/pkg/include/xorg/xorg-server.h
に
#define WSCONS_SUPPORT 1
がないですよね。

手元では、以下のような変更を org-server のほうに適用して
NetBSD 5.2 で wmmouse のほうからは使えるようになっています。
たぶん、キーボードレイアウトとかも wskbd や wsmouse から
取得して自動的に設定されるのが本来の動きだと思うのですが、
とりあえず compile が通るだけしたので、その辺がまだです。
(2013Q2まで間に合うかなぁ)

--- configure.orig      2012-08-27 05:11:53.000000000 +0000
+++ configure
@@ -24309,7 +24309,7 @@ fi

  if test "x$CONFIG_WSCONS" = xauto; then
         case $host_os in
-               *openbsd*)
+               *openbsd*|*netbsd*)
                         CONFIG_WSCONS=yes;
                         ;;
                 *)
--- config/wscons.c.orig        2012-08-19 15:45:54.000000000 +0000
+++ config/wscons.c
@@ -25,6 +25,8 @@
  #include <dix-config.h>
  #endif

+#include <sys/time.h>
+#include <fcntl.h>
  #include <dev/wscons/wsconsio.h>
  #include <dev/wscons/wsksymdef.h>

@@ -41,6 +43,7 @@
  #define WSCONS_KBD_DEVICE "/dev/wskbd"
  #define WSCONS_MOUSE_PREFIX "/dev/wsmouse"

+#ifdef __OpenBSD__
  #define KB_OVRENC \
         { KB_UK,        "gb" }, \
         { KB_SV,        "se" }, \
@@ -48,13 +51,18 @@
         { KB_SF,        "ch" }, \
         { KB_LA,        "latam" }, \
         { KB_CF,        "ca" }
+#endif

  struct nameint {
      int val;
      char *name;
  } kbdenc[] = {
+#ifdef __OpenBSD__
      KB_OVRENC,
      KB_ENCTAB,
+#else /* __NetBSD__ */
+    KB_ENCTAB
+#endif
      {0}
  };

@@ -62,10 +70,14 @@ struct nameint kbdvar[] = {
      {KB_NODEAD | KB_SG, "de_nodeadkeys"},
      {KB_NODEAD | KB_SF, "fr_nodeadkeys"},
      {KB_SF, "fr"},
+#ifdef KB_CF
      {KB_DVORAK | KB_CF, "fr-dvorak"},
+#endif
      {KB_DVORAK | KB_FR, "bepo"},
      {KB_DVORAK, "dvorak"},
+#ifdef KB_CF
      {KB_CF, "fr-legacy"},
+#endif
      {KB_NODEAD, "nodeadkeys"},
      {0}
  };
@@ -220,7 +232,11 @@ wscons_add_pointers(void)
      for (i = 0; i < 4; i++) {
          snprintf(devname, sizeof(devname), "%s%d", WSCONS_MOUSE_PREFIX, i);
          LogMessageVerb(X_INFO, 10, "wsmouse: checking %s\n", devname);
+#ifdef __OpenBSD__
          fd = open_device(devnamem O_RDWR | O_NONBLOCK | O_EXCL);
+#else
+        fd = open(devname, O_RDWR | O_NONBLOCK | O_EXCL);
+#endif
          if (fd == -1) {
              LogMessageVerb(X_WARNING, 10, "%s: %s\n", devname, strerror(errno));
              continue;
@@ -233,9 +249,11 @@ wscons_add_pointers(void)
          }
          close(fd);
          switch (wsmouse_type) {
+#ifdef WSMOUSE_TYPE_SYNAPTICS
          case WSMOUSE_TYPE_SYNAPTICS:
              wscons_add_pointer(devname, "synaptics", ATTR_TOUCHPAD);
              break;
+#endif
          case WSMOUSE_TYPE_TPANEL:
              wscons_add_pointer(devname, "ws", ATTR_TOUCHSCREEN);
              break;


-- 
お役に立てない(^^;
OBATA Akio / obata@lins.jp
せかいは ひろがる ちきゅーは まわる。