DO NOT REPLY TO THIS MESSAGE. INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.
[STR New]
Link: http://www.fltk.org/str.php?L2638
Version: 1.3-feature
This patch adds support for some common multimedia keys you can find on
modern keyboards. The subset is chosen based on well defined virtual keys
on Win32 (X11 has a silly amount of these keys defines).
OS X didn't get any support as those keys don't work there (AFAICT). There
is some support for volume keys, but those are caught at a higher level so
they probably don't make much sense intercepting here.
Link: http://www.fltk.org/str.php?L2638
Version: 1.3-feature
diff -up fltk-1.3.x-r8695/configh.in.multi fltk-1.3.x-r8695/configh.in
--- fltk-1.3.x-r8695/configh.in.multi 2011-03-06 17:54:58.000000000 +0100
+++ fltk-1.3.x-r8695/configh.in 2011-05-20 15:46:28.799938511 +0200
@@ -117,6 +117,14 @@
#define USE_XDBE HAVE_XDBE
/*
+ * HAVE_XF86KEYSYM:
+ *
+ * Do we have the Xfree86 keysym definitions?
+ */
+
+#define HAVE_XF86KEYSYM 0
+
+/*
* __APPLE_QUARTZ__:
*
* All Apple implementations are now based on Quartz and Cocoa,
diff -up fltk-1.3.x-r8695/configure.in.multi fltk-1.3.x-r8695/configure.in
--- fltk-1.3.x-r8695/configure.in.multi 2011-03-06 17:54:58.000000000 +0100
+++ fltk-1.3.x-r8695/configure.in 2011-05-20 15:46:28.800938662 +0200
@@ -1006,6 +1006,10 @@ case $uname_GUI in
LIBS="-lXext $LIBS")
fi
+ dnl Check for the Xfree86 keysym definitions...
+ AC_CHECK_HEADER(X11/XF86keysym.h, AC_DEFINE(HAVE_XF86KEYSYM),,
+ [#include <X11/Xlib.h>])
+
dnl Check for overlay visuals...
AC_PATH_PROG(XPROP, xprop)
AC_CACHE_CHECK(for X overlay visuals, ac_cv_have_overlay,
diff -up fltk-1.3.x-r8695/FL/Enumerations.H.multi
fltk-1.3.x-r8695/FL/Enumerations.H
--- fltk-1.3.x-r8695/FL/Enumerations.H.multi 2011-04-24 19:09:41.000000000
+0200
+++ fltk-1.3.x-r8695/FL/Enumerations.H 2011-05-20 15:46:28.800938662 +0200
@@ -366,6 +366,27 @@ enum Fl_When { // Fl_Widget::when():
#define FL_Alt_R 0xffea ///< The right alt key.
#define FL_Delete 0xffff ///< The delete key.
+// These use the Private Use Area (PUA) of the Basic Multilingual Plane
+// of Unicode. Guaranteed not to conflict with a proper Unicode character.
+
+// These primarily map to the XFree86 keysym range
+#define FL_Volume_Down 0xEF11 /* Volume control down */
+#define FL_Volume_Mute 0xEF12 /* Mute sound from the system */
+#define FL_Volume_Up 0xEF13 /* Volume control up */
+#define FL_Media_Play 0xEF14 /* Start playing of audio */
+#define FL_Media_Stop 0xEF15 /* Stop playing audio */
+#define FL_Media_Prev 0xEF16 /* Previous track */
+#define FL_Media_Next 0xEF17 /* Next track */
+#define FL_Home_Page 0xEF18 /* Display user's home page */
+#define FL_Mail 0xEF19 /* Invoke user's mail program */
+#define FL_Search 0xEF1B /* Search */
+#define FL_Back 0xEF26 /* Like back on a browser */
+#define FL_Forward 0xEF27 /* Like forward on a browser */
+#define FL_Stop 0xEF28 /* Stop current operation */
+#define FL_Refresh 0xEF29 /* Refresh the page */
+#define FL_Sleep 0xEF2F /* Put system to sleep */
+#define FL_Favorites 0xEF30 /* Show favorite locations */
+
/*@}*/ // group: Mouse and Keyboard Events
/** \name Mouse Buttons
diff -up fltk-1.3.x-r8695/src/Fl.cxx.multi fltk-1.3.x-r8695/src/Fl.cxx
--- fltk-1.3.x-r8695/src/Fl.cxx.multi 2011-05-20 15:57:32.479584837 +0200
+++ fltk-1.3.x-r8695/src/Fl.cxx 2011-05-20 16:11:01.168004679 +0200
@@ -35,6 +35,16 @@
#include <FL/Fl_Window.H>
#include <FL/Fl_Tooltip.H>
+/* We require Windows 2000 features (e.g. VK definitions) */
+#if defined(WIN32)
+# if !defined(WINVER) || (WINVER < 0x0500)
+# define WINVER 0x0500
+# endif
+# if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0500)
+# define _WIN32_WINNT 0x0500
+# endif
+#endif
+
// recent versions of MinGW warn: "Please include winsock2.h before windows.h",
// hence we must include winsock2.h before FL/x.H (A.S. Dec. 2010)
#if defined(WIN32) && !defined(__CYGWIN__)
diff -up fltk-1.3.x-r8695/src/Fl_win32.cxx.multi
fltk-1.3.x-r8695/src/Fl_win32.cxx
--- fltk-1.3.x-r8695/src/Fl_win32.cxx.multi 2011-05-20 15:46:49.964116167
+0200
+++ fltk-1.3.x-r8695/src/Fl_win32.cxx 2011-05-20 15:56:18.084414999 +0200
@@ -788,6 +797,7 @@ static const struct {unsigned short vk,
{VK_LWIN, FL_Meta_L},
{VK_RWIN, FL_Meta_R},
{VK_APPS, FL_Menu},
+ {VK_SLEEP, FL_Sleep},
{VK_MULTIPLY, FL_KP+'*'},
{VK_ADD, FL_KP+'+'},
{VK_SUBTRACT, FL_KP+'-'},
@@ -795,6 +805,21 @@ static const struct {unsigned short vk,
{VK_DIVIDE, FL_KP+'/'},
{VK_NUMLOCK, FL_Num_Lock},
{VK_SCROLL, FL_Scroll_Lock},
+ {VK_BROWSER_BACK, FL_Back},
+ {VK_BROWSER_FORWARD, FL_Forward},
+ {VK_BROWSER_REFRESH, FL_Refresh},
+ {VK_BROWSER_STOP, FL_Stop},
+ {VK_BROWSER_SEARCH, FL_Search},
+ {VK_BROWSER_FAVORITES, FL_Favorites},
+ {VK_BROWSER_HOME, FL_Home_Page},
+ {VK_VOLUME_MUTE, FL_Volume_Mute},
+ {VK_VOLUME_DOWN, FL_Volume_Down},
+ {VK_VOLUME_UP, FL_Volume_Up},
+ {VK_MEDIA_NEXT_TRACK, FL_Media_Next},
+ {VK_MEDIA_PREV_TRACK, FL_Media_Prev},
+ {VK_MEDIA_STOP, FL_Media_Stop},
+ {VK_MEDIA_PLAY_PAUSE, FL_Media_Play},
+ {VK_LAUNCH_MAIL, FL_Mail},
{0xba, ';'},
{0xbb, '='},
{0xbc, ','},
diff -up fltk-1.3.x-r8695/src/Fl_x.cxx.multi fltk-1.3.x-r8695/src/Fl_x.cxx
--- fltk-1.3.x-r8695/src/Fl_x.cxx.multi 2011-04-27 10:47:00.000000000 +0200
+++ fltk-1.3.x-r8695/src/Fl_x.cxx 2011-05-20 15:46:28.810940163 +0200
@@ -52,6 +52,9 @@
# include <X11/Xlocale.h>
# include <X11/Xlib.h>
# include <X11/keysym.h>
+# ifdef HAVE_XF86KEYSYM
+# include <X11/XF86keysym.h>
+# endif
static Fl_Xlib_Graphics_Driver fl_xlib_driver;
static Fl_Display_Device fl_xlib_display(&fl_xlib_driver);
@@ -1337,6 +1445,59 @@ int fl_handle(const XEvent& thisevent)
keysym = FL_Meta_R;
break;
}
+#ifdef HAVE_XF86KEYSYM
+ // Convert the multimedia keys to safer, portable values
+ switch (keysym) {
+ case XF86XK_AudioLowerVolume:
+ keysym = FL_Volume_Down;
+ break;
+ case XF86XK_AudioMute:
+ keysym = FL_Volume_Mute;
+ break;
+ case XF86XK_AudioRaiseVolume:
+ keysym = FL_Volume_Up;
+ break;
+ case XF86XK_AudioPlay:
+ keysym = FL_Media_Play;
+ break;
+ case XF86XK_AudioStop:
+ keysym = FL_Media_Stop;
+ break;
+ case XF86XK_AudioPrev:
+ keysym = FL_Media_Prev;
+ break;
+ case XF86XK_AudioNext:
+ keysym = FL_Media_Next;
+ break;
+ case XF86XK_HomePage:
+ keysym = FL_Home_Page;
+ break;
+ case XF86XK_Mail:
+ keysym = FL_Mail;
+ break;
+ case XF86XK_Search:
+ keysym = FL_Search;
+ break;
+ case XF86XK_Back:
+ keysym = FL_Back;
+ break;
+ case XF86XK_Forward:
+ keysym = FL_Forward;
+ break;
+ case XF86XK_Stop:
+ keysym = FL_Stop;
+ break;
+ case XF86XK_Refresh:
+ keysym = FL_Refresh;
+ break;
+ case XF86XK_Sleep:
+ keysym = FL_Sleep;
+ break;
+ case XF86XK_Favorites:
+ keysym = FL_Favorites;
+ break;
+ }
+#endif
// We have to get rid of the XK_KP_function keys, because they are
// not produced on Windoze and thus case statements tend not to check
// for them. There are 15 of these in the range 0xff91 ... 0xff9f
_______________________________________________
fltk-dev mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-dev