diff options
| author | Manolo Gouy <Manolo> | 2011-05-21 21:55:59 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2011-05-21 21:55:59 +0000 |
| commit | 2a9d1e7becb161f53f445d7e18f9ea8165fb31a9 (patch) | |
| tree | 77c85db019914a0c7c62eb86a4acc5990089ec33 /src | |
| parent | 695613433aee95045908979243af6e9c031f397e (diff) | |
Fix STR #2638. The X11 part is simplified as suggested by Bill.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8710 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl.cxx | 10 | ||||
| -rw-r--r-- | src/Fl_win32.cxx | 18 | ||||
| -rw-r--r-- | src/Fl_x.cxx | 51 |
3 files changed, 79 insertions, 0 deletions
diff --git a/src/Fl.cxx b/src/Fl.cxx index dbde5010c..7ba7744e1 100644 --- a/src/Fl.cxx +++ b/src/Fl.cxx @@ -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 --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx index 783f8d6b6..d4530467b 100644 --- a/src/Fl_win32.cxx +++ b/src/Fl_win32.cxx @@ -742,6 +742,7 @@ static const struct {unsigned short vk, fltk, extended;} vktab[] = { {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+'-'}, @@ -749,6 +750,23 @@ static const struct {unsigned short vk, fltk, extended;} vktab[] = { {VK_DIVIDE, FL_KP+'/'}, {VK_NUMLOCK, FL_Num_Lock}, {VK_SCROLL, FL_Scroll_Lock}, +# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0500) + {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}, +#endif {0xba, ';'}, {0xbb, '='}, {0xbc, ','}, diff --git a/src/Fl_x.cxx b/src/Fl_x.cxx index 95aff3d3e..b9f12826b 100644 --- a/src/Fl_x.cxx +++ b/src/Fl_x.cxx @@ -1337,6 +1337,57 @@ int fl_handle(const XEvent& thisevent) keysym = FL_Meta_R; break; } + // Convert the multimedia keys to safer, portable values + switch (keysym) { // XF names come from X11/XF86keysym.h + case 0x1008FF11: // XF86XK_AudioLowerVolume: + keysym = FL_Volume_Down; + break; + case 0x1008FF12: // XF86XK_AudioMute: + keysym = FL_Volume_Mute; + break; + case 0x1008FF13: // XF86XK_AudioRaiseVolume: + keysym = FL_Volume_Up; + break; + case 0x1008FF14: // XF86XK_AudioPlay: + keysym = FL_Media_Play; + break; + case 0x1008FF15: // XF86XK_AudioStop: + keysym = FL_Media_Stop; + break; + case 0x1008FF16: // XF86XK_AudioPrev: + keysym = FL_Media_Prev; + break; + case 0x1008FF17: // XF86XK_AudioNext: + keysym = FL_Media_Next; + break; + case 0x1008FF18: // XF86XK_HomePage: + keysym = FL_Home_Page; + break; + case 0x1008FF19: // XF86XK_Mail: + keysym = FL_Mail; + break; + case 0x1008FF1B: // XF86XK_Search: + keysym = FL_Search; + break; + case 0x1008FF26: // XF86XK_Back: + keysym = FL_Back; + break; + case 0x1008FF27: // XF86XK_Forward: + keysym = FL_Forward; + break; + case 0x1008FF28: // XF86XK_Stop: + keysym = FL_Stop; + break; + case 0x1008FF29: // XF86XK_Refresh: + keysym = FL_Refresh; + break; + case 0x1008FF2F: // XF86XK_Sleep: + keysym = FL_Sleep; + break; + case 0x1008FF30: // XF86XK_Favorites: + keysym = FL_Favorites; + break; + } // 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 |
