[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
patch: Improvement to win32 emacs: support the two Microsoft Intellimous
From: |
Karl Chen |
Subject: |
patch: Improvement to win32 emacs: support the two Microsoft Intellimouse Explorer mouse "X" (thumb) buttons |
Date: |
Thu, 4 Oct 2001 01:48:52 -0700 |
Hi. I have hacked emacs 20.7 to handle the two thumb back/forward
buttons (apparently called "X buttons") on the MS Intellimouse Explorer.
They generate buttons 4 and 5, i.e. events (down-)?mouse-{4|5}. Here are
diffs from 20.7.1:
*** w32fns.c.~1~ Thu May 4 14:05:49 2000
--- w32fns.c Thu Oct 4 01:07:13 2001
***************
*** 45,50 ****
--- 45,63 ----
#include <commdlg.h>
#include <shellapi.h>
+ // KC:
+ #if !defined (WM_XBUTTONDOWN)
+ // from vc7b2 winuser.h for win 5.0:
+ #define WM_XBUTTONDOWN 0x020B
+ #define WM_XBUTTONUP 0x020C
+ //#define WM_XBUTTONDBLCLK 0x020D
+ /* XButton values are WORD flags */
+ #define GET_XBUTTON_WPARAM(wParam) (HIWORD(wParam))
+ #define XBUTTON1 0x0001
+ #define XBUTTON2 0x0002
+ #endif
+
+
extern void abort ();
extern void free_frame_menubar ();
extern struct scroll_bar *x_window_to_scroll_bar ();
***************
*** 4143,4148 ****
--- 4156,4182 ----
}
return 0;
+ // KC:
+ case WM_XBUTTONUP:
+ case WM_XBUTTONDOWN:
+ // from doc for WM_XBUTTONDOWN:
+ // The high-order word indicates which
button was pressed. It can be one
+ // of the following values. Value Meaning
+ // XBUTTON1 The first X
button was pressed.
+ // XBUTTON2 The second X
button was pressed.
+
+ if (GET_XBUTTON_WPARAM(wParam) & XBUTTON1) {
+ msg = (msg == WM_XBUTTONUP) ? WM_KC_X1BUTTONUP :
+ WM_KC_X1BUTTONDOWN;
+ } else {
+ msg = (msg == WM_XBUTTONUP) ? WM_KC_X2BUTTONUP :
+ WM_KC_X2BUTTONDOWN;
+ }
+
+ wmsg.dwModifiers = w32_get_modifiers ();
+ my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
+ return 0;
+
case WM_MBUTTONDOWN:
case WM_MBUTTONUP:
handle_plain_button:
*** w32term.c.~1~ Sat May 13 02:14:24 2000
--- w32term.c Thu Oct 4 01:06:48 2001
***************
*** 1951,1956 ****
--- 1951,1976 ----
button = 1;
up = 1;
break;
+
+ // KC:
+ case WM_KC_X1BUTTONUP:
+ button = 3;
+ up = 1;
+ break;
+ case WM_KC_X1BUTTONDOWN:
+ button = 3;
+ up = 0;
+ break;
+
+ case WM_KC_X2BUTTONUP:
+ button = 4;
+ up = 1;
+ break;
+ case WM_KC_X2BUTTONDOWN:
+ button = 4;
+ up = 0;
+ break;
+
default:
return (FALSE);
}
***************
*** 3577,3582 ****
--- 3597,3607 ----
case WM_MBUTTONUP:
case WM_RBUTTONDOWN:
case WM_RBUTTONUP:
+ //KC
+ case WM_KC_X1BUTTONDOWN:
+ case WM_KC_X1BUTTONUP:
+ case WM_KC_X2BUTTONDOWN:
+ case WM_KC_X2BUTTONUP:
{
int button;
int up;
*** w32term.h.~1~ Thu Jul 1 12:46:17 1999
--- w32term.h Thu Oct 4 01:06:35 2001
***************
*** 637,642 ****
--- 637,648 ----
#define WM_EMACS_TOGGLE_LOCK_KEY (WM_EMACS_START + 14)
#define WM_EMACS_END (WM_EMACS_START + 15)
+ #define WM_KC_X1BUTTONDOWN (WM_EMACS_START + 16)
+ #define WM_KC_X1BUTTONUP (WM_EMACS_START + 17)
+ #define WM_KC_X2BUTTONDOWN (WM_EMACS_START + 18)
+ #define WM_KC_X2BUTTONUP (WM_EMACS_START + 19)
+
+
#define WND_FONTWIDTH_INDEX (0)
#define WND_LINEHEIGHT_INDEX (4)
#define WND_BORDER_INDEX (8)
Karl Chen
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- patch: Improvement to win32 emacs: support the two Microsoft Intellimouse Explorer mouse "X" (thumb) buttons,
Karl Chen <=