changeset 85979:bb1f44062552

(w32_pass_multimedia_buttons_to_system): New user option. (syms_of_w32fns): Export and initialize it. (w32_wnd_proc): Pass WM_APPCOMMAND on to w32_read_socket.
author Jason Rumney <jasonr@gnu.org>
date Fri, 09 Nov 2007 12:17:19 +0000
parents 4c0bb0c5c744
children aa42b9eb1ed9
files src/w32fns.c
diffstat 1 files changed, 31 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/w32fns.c	Fri Nov 09 12:16:34 2007 +0000
+++ b/src/w32fns.c	Fri Nov 09 12:17:19 2007 +0000
@@ -145,6 +145,9 @@
 /* Flag to indicate if XBUTTON events should be passed on to Windows.  */
 int w32_pass_extra_mouse_buttons_to_system;
 
+/* Flag to indicate if media keys should be passed on to Windows.  */
+int w32_pass_multimedia_buttons_to_system;
+
 /* Non nil if no window manager is in use.  */
 Lisp_Object Vx_no_window_manager;
 
@@ -3383,6 +3386,10 @@
       signal_user_input ();
       return 0;
 
+    case WM_APPCOMMAND:
+      if (w32_pass_multimedia_buttons_to_system)
+        goto dflt;
+      /* Otherwise, pass to lisp, the same way we do with mousehwheel.  */
     case WM_MOUSEHWHEEL:
       wmsg.dwModifiers = w32_get_modifiers ();
       my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
@@ -8814,6 +8821,30 @@
 system to handle them.  */);
   w32_pass_extra_mouse_buttons_to_system = 0;
 
+  DEFVAR_BOOL ("w32-pass-multimedia-buttons-to-system",
+               &w32_pass_multimedia_buttons_to_system,
+               doc: /* If non-nil, media buttons are passed to Windows.
+Some modern keyboards contain buttons for controlling media players, web
+browsers and other applications. Generally these buttons are handled on a
+system wide basis, but by setting this to nil they are made available
+to Emacs for binding.  Depending on your keyboard, additional keys that
+may be available are:
+
+browser-back, browser-forward, browser-refresh, browser-stop,
+browser-search, browser-favorites, browser-home,
+mail, mail-reply, mail-forward, mail-send,
+app-1, app-2,
+help, find, new, open, close, save, print, undo, redo, copy, cut, paste,
+spell-check, correction-list, toggle-dictate-command,
+media-next, media-previous, media-stop, media-play-pause, media-select,
+media-play, media-pause, media-record, media-fast-forward, media-rewind,
+media-channel-up, media-channel-down,
+volume-mute, volume-up, volume-down,
+mic-volume-mute, mic-volume-down, mic-volume-up, mic-toggle,
+bass-down, bass-boost, bass-up, treble-down, treble-up
+  */);
+  w32_pass_multimedia_buttons_to_system = 1;
+
   DEFVAR_LISP ("x-pointer-shape", &Vx_pointer_shape,
 	       doc: /* The shape of the pointer when over text.
 Changing the value does not affect existing frames