Default
Google
Default
Google
Default
Google

Linux USB wheel mouse ad-hoc patch

皆さんはUSBにwheelマウスを挿して使えていますか?

これを使うには結構条件があって、

と言う作業が必要になりますが、残念ながら全ての条件を揃えるのはちょっと大変です。
私のばあいはX-ServerがAccel-X LX4.1 だったためにimps2プロトコルを理解できないという深刻な問題にぶちあたりました。
で、かんがえたんですが

Z軸のプロトコル(imps2)が理解できないなら、SCROLL-UP,SCROLL-DOWNのキーに割り当てちゃえ!

ってことでこのパッチどうでしょう? 使う人います?
アプリ側はSCROLL-UP,SCROLL-DOWNだけ理解すればOKって利点もありますよ。


*** ./linux/drivers/usb/mouse.c	Mon Jul 26 10:53:13 1999
--- mouse.c	Mon Feb 14 18:24:45 2000
***************
*** 40,45 ****
--- 40,48 ----
  
  #define USB_MOUSE_MINOR 32
  
+ #define PCKBD_NEEDS_E0 0x80
+ extern unsigned char usb_kbd_map[];
+ 
  struct mouse_state {
  	unsigned char buttons; /* current button state */
  	long dx; /* dx, dy, dz are change since last read */
***************
*** 126,131 ****
--- 129,148 ----
  	return -EINVAL;
  }
  
+ static void
+ usb_mouse_handle_key(unsigned char key, int down)
+ {
+     int scancode = (int) usb_kbd_map[key];
+     if(scancode)
+     {
+         if(scancode & PCKBD_NEEDS_E0)
+         {
+             handle_scancode(0xe0, 1);
+         }
+         handle_scancode((scancode & ~PCKBD_NEEDS_E0), down);
+     }
+ }
+ 
  /*
   * Look like a PS/2 mouse, please..
   *
***************
*** 171,187 ****
  			put_user(dy, buffer);
  			buffer++;
  			retval++;
!  			state = 3;
!  			if (!--count)
!  				break;
!  		}
!  		case 3: { /* dz */
!  		  int dz = mouse->dz;
!  		  mouse->dz = 0;
!  		  put_user(dz, buffer);
!  		  buffer++;
!  		  retval++;
!  		  state = 0;
  		}
  		break;
  		}
--- 188,217 ----
  			put_user(dy, buffer);
  			buffer++;
  			retval++;
! 			state = 3;
! 			if (!--count)
! 				break;
! 		}
! 		case 3: { /* dz */
! 		  	int dz = mouse->dz;
! 		  	mouse->dz = 0;
! 		  	put_user(dz, buffer);
! 		  	buffer++;
! 		  	retval++;
! 		  	state = 0;
! 			while (dz){
! 				if( dz > 0){
! 					/* up 82*/
! 					/* Prior 75 */
! 					usb_mouse_handle_key(75, 1);
! 					dz--;
! 				}else{
! 					/* down 81 */
! 					/* Next 78*/
! 					usb_mouse_handle_key(78, 1);
! 					dz++;
! 				}
! 			}
  		}
  		break;
  		}


Masahiro Nobori
Last modified: Mon Feb 14 19:02:16 JST 2000


Acquiring image from ProHosting Banner Exchange



Acquiring image from ProHosting Banner Exchange



Acquiring image from ProHosting Banner Exchange