[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

[MD:652] How to swap mouse-2 <-> mouse-3?



ネタ的にはmeadow-developと思うので、メインはそちらに移動します。
#一応mule-win32にもCc:してますけど。 ^^;

>>> In article <uzpi4a97i.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>,
>>>    Miyashita Hisashi(宮下 尚:HIMI) <himi@xxxxxxxxxxxxxxxxxxxxxxxxx> writes:

  himi> mw32miscあたりで、もう一段階の抽象化をしたいところです。
  himi> ## > って、わけで、誰か手伝って ^^;;;
  himi> 
  himi> それと、Driverが対応していないと無理ってのが引っかかっているため、
  himi> Meadowでは、ボタンを自動的にマップするのを有効にしてなかったんだと
  himi> 思います。

IntelliMouse SDKを参考に、本体に少し手を入れてみました。
#でも、コード的にはSDKほとんどそのままなので、GPLというわけにはいかな
#いような…。 ^^;

Win95(4.00950a) + IntelliPoint 2.1Jで試しましたが、どうもSDKの解説とは
違う動きをします。
というのは、IntelliPointを検出することはできるのですが、Wheelサポート
の検出がうまくできていません。

具体的には、
・起動直後はWheelサポートが検出できない。
・コントロールパネルのマウスのプロパティを1度でも開くと検出できる。
です。
マウスのプロパティを開いた後はPOINT32.EXEが動いているのですが、その前
はこれが動いていないのが原因のようです。
#RunレジストリにはPOINT32.EXEが登録されているのですが、なぜか起動直後
#には動いていません。
#私のWin95が壊れかけているのではないかとも思うのですが、どなたか他にこ
#ういう現象にあっている方はいませんか?

この変な現象のため、とりあえず、IntelliPoint(MSWEEL.EXE)が動いているか
どうかとWheelサポートがあるかどうかの2段階にしてみました。
#NT4.0ではまだ試していませんが、一応コードは入れているつもり。 ^^;

でわでわ
-- 
yamagus@xxxxxxxxxxxxxxxxxx / やまぐち@ねっとらぴゅたの住人
  yamagus@xxxxxxxxxxx / 山口 修平
PGP-Fingerprint: 25 0F 6F E1 57 AD 56 08  3A BC D0 9B 48 AF 31 7A
--- mw32term.c.orig	Sat Feb 07 19:27:51 1998
+++ mw32term.c	Sun Apr 05 00:02:45 1998
@@ -197,6 +197,9 @@
 
 #ifdef W32_INTELLIMOUSE
 static UINT w32_wheel_message = WM_MOUSEWHEEL;
+/* Indicate that wheel support is available or not. */
+Lisp_Object Vw32_wheel_support_available;
+Lisp_Object Vw32_intellipoint_running;
 #endif
 
 /* to prevent thread from operating messages.  */
@@ -4536,6 +4539,10 @@
   char *defaultvalue;
   int argc = 0;
   char** argv = 0;
+#ifdef W32_INTELLIMOUSE
+  HWND hwnd;
+  UINT w32_wheel_support_message;
+#endif
   
   w32_focus_frame = w32_highlight_frame = 0;
 
@@ -4597,6 +4604,16 @@
 
 #ifdef W32_INTELLIMOUSE
   w32_wheel_message = RegisterWindowMessage("MSWHEEL_ROLLMSG");
+  w32_wheel_support_message = RegisterWindowMessage("MSH_WHEELSUPPORT_MSG");
+  hwnd = FindWindow("MouseZ", "Magellan MSWHEEL");
+  if (hwnd && w32_wheel_support_message)
+    {
+      Vw32_intellipoint_running = Qt;
+      if ((BOOL) SendMessage(hwnd, w32_wheel_support_message, 0, 0) == TRUE)
+	Vw32_wheel_support_available = Qt;
+    }
+  else if (GetSystemMetrics(SM_MOUSEWHEELPRESENT) == TRUE)
+    Vw32_wheel_support_available = Qt;
 #endif
 
   next_message_block_event = CreateEvent(0, TRUE, TRUE, NULL);
@@ -4853,6 +4870,15 @@
   w32_lbutton_to_emacs_button = 0;
   w32_mbutton_to_emacs_button = 2;
   w32_rbutton_to_emacs_button = 1;
+
+#ifdef W32_INTELLIMOUSE
+  DEFVAR_LISP ("w32-wheel-support-available", &Vw32_wheel_support_available,
+    "IntelliPoint mouse driver has installed, and is running.");
+  Vw32_wheel_support_available = Qnil;
+  DEFVAR_LISP ("w32-intellipoint-running", &Vw32_intellipoint_running,
+    "IntelliPoint mouse driver has installed, and is running.");
+  Vw32_intellipoint_running = Qnil;
+#endif
 
 #if 0
   staticpro (&last_mouse_scroll_bar);
--- mw32term.h.orig	Sat Feb 07 00:41:11 1998
+++ mw32term.h	Sat Apr 04 23:52:47 1998
@@ -598,6 +598,9 @@
 #ifndef WHEEL_PAGESCROLL
 #define WHEEL_PAGESCROLL (0xffffffff)
 #endif
+#ifndef SM_MOUSEWHEELPRESENT
+#define SM_MOUSEWHEELPRESENT 75
+#endif
 #endif
 
 #ifdef MEADOW
--- mw32misc.el.orig	Sat Dec 27 11:27:01 1997
+++ mw32misc.el	Sun Apr 05 00:44:01 1998
@@ -45,7 +45,9 @@
 	    (error "Font not found")))))
 
 (defun w32-mouse-operation-init ()
-  (if (= (w32-get-system-metrics 43) 3)
+  (if (or (= (w32-get-system-metrics 43) 3)
+	  w32-wheel-support-available
+	  w32-intellipoint-running)
       (progn
 	(setq w32-lbutton-to-emacs-button 0)
 	(setq w32-mbutton-to-emacs-button 1)