summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2011-05-20 14:55:10 +0000
committerPierre Ossman <ossman@cendio.se>2011-05-20 14:55:10 +0000
commitcb0cffe6dbe6b980227fc5683529a9478e1547b3 (patch)
tree9678f9ba73f98bda0c2413c353e0cc42b309fba3
parent48c6a128038519b40c6c4f81401e929fadf44de8 (diff)
downloadtigervnc-cb0cffe6dbe6b980227fc5683529a9478e1547b3.tar.gz
tigervnc-cb0cffe6dbe6b980227fc5683529a9478e1547b3.zip
Add support for multimedia keys.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4437 3789f03b-4d11-0410-bbf8-ca57d06f2519
-rw-r--r--CMakeLists.txt3
-rw-r--r--config.h.cmake.in1
-rw-r--r--vncviewer/Viewport.cxx38
3 files changed, 42 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f38a0176..5ef2ee2e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -191,6 +191,9 @@ if(BUILD_NEW_VNCVIEWER)
# FLTK STR #2636
check_cxx_source_compiles("#include <FL/Fl.H>\nint main(int c, char** v) { Fl::add_clipboard_notify(NULL, NULL); return 0; }" HAVE_FLTK_CLIPBOARD)
+ # FLTK STR #2638
+ check_cxx_source_compiles("#include <FL/Enumerations.H>\nint main(int c, char** v) { return FL_Volume_Down; }" HAVE_FLTK_MEDIAKEYS)
+
set(CMAKE_REQUIRED_INCLUDES)
set(CMAKE_REQUIRED_LIBRARIES)
endif()
diff --git a/config.h.cmake.in b/config.h.cmake.in
index 991121fb..a1654245 100644
--- a/config.h.cmake.in
+++ b/config.h.cmake.in
@@ -13,6 +13,7 @@
#cmakedefine HAVE_GNUTLS_SIGN_ALGORITHM_T
#cmakedefine HAVE_FLTK_DEAD_KEYS
#cmakedefine HAVE_FLTK_CLIPBOARD
+#cmakedefine HAVE_FLTK_MEDIAKEYS
#cmakedefine ENABLE_NLS 1
/* MS Visual Studio 2008 and newer doesn't know ssize_t */
diff --git a/vncviewer/Viewport.cxx b/vncviewer/Viewport.cxx
index ee8e539b..15722ca6 100644
--- a/vncviewer/Viewport.cxx
+++ b/vncviewer/Viewport.cxx
@@ -34,6 +34,10 @@
#include <rfb/keysymdef.h>
#endif
+#ifndef XF86XK_ModeLock
+#include <rfb/XF86keysym.h>
+#endif
+
#include "Viewport.h"
#include "CConn.h"
#include "OptionsDialog.h"
@@ -442,6 +446,40 @@ rdr::U32 Viewport::translateKeyEvent(int keyCode, int origKeyCode, const char *k
return XK_KP_Decimal;
case FL_KP + '/':
return XK_KP_Divide;
+#ifdef HAVE_FLTK_MEDIAKEYS
+ case FL_Volume_Down:
+ return XF86XK_AudioLowerVolume;
+ case FL_Volume_Mute:
+ return XF86XK_AudioMute;
+ case FL_Volume_Up:
+ return XF86XK_AudioRaiseVolume;
+ case FL_Media_Play:
+ return XF86XK_AudioPlay;
+ case FL_Media_Stop:
+ return XF86XK_AudioStop;
+ case FL_Media_Prev:
+ return XF86XK_AudioPrev;
+ case FL_Media_Next:
+ return XF86XK_AudioNext;
+ case FL_Home_Page:
+ return XF86XK_HomePage;
+ case FL_Mail:
+ return XF86XK_Mail;
+ case FL_Search:
+ return XF86XK_Search;
+ case FL_Back:
+ return XF86XK_Back;
+ case FL_Forward:
+ return XF86XK_Forward;
+ case FL_Stop:
+ return XF86XK_Stop;
+ case FL_Refresh:
+ return XF86XK_Refresh;
+ case FL_Sleep:
+ return XF86XK_Sleep;
+ case FL_Favorites:
+ return XF86XK_Favorites;
+#endif
case XK_ISO_Level3_Shift:
// FLTK tends to let this one leak through on X11...
return XK_ISO_Level3_Shift;