Add support for multimedia keys to wxMSW and wxGTK

Add WXK_XXX constants for the standard multimedia keys and generate events
corresponding to them under wxGTK and wxMSW.

Closes https://github.com/wxWidgets/wxWidgets/pull/157
This commit is contained in:
Jens Göpfert
2016-01-08 23:22:24 +01:00
committed by Vadim Zeitlin
parent 777b7537c1
commit abd46cb99a
4 changed files with 141 additions and 2 deletions

View File

@@ -2695,7 +2695,25 @@ enum wxKeyCode
WXK_SPECIAL17, WXK_SPECIAL17,
WXK_SPECIAL18, WXK_SPECIAL18,
WXK_SPECIAL19, WXK_SPECIAL19,
WXK_SPECIAL20 WXK_SPECIAL20,
WXK_BROWSER_BACK,
WXK_BROWSER_FORWARD,
WXK_BROWSER_REFRESH,
WXK_BROWSER_STOP,
WXK_BROWSER_SEARCH,
WXK_BROWSER_FAVORITES,
WXK_BROWSER_HOME,
WXK_VOLUME_MUTE,
WXK_VOLUME_DOWN,
WXK_VOLUME_UP,
WXK_MEDIA_NEXT_TRACK,
WXK_MEDIA_PREV_TRACK,
WXK_MEDIA_STOP,
WXK_MEDIA_PLAY_PAUSE,
WXK_LAUNCH_MAIL,
WXK_LAUNCH_APP1,
WXK_LAUNCH_APP2
}; };
/* This enum contains bit mask constants used in wxKeyEvent */ /* This enum contains bit mask constants used in wxKeyEvent */

View File

@@ -1046,7 +1046,25 @@ enum wxKeyCode
WXK_SPECIAL17, WXK_SPECIAL17,
WXK_SPECIAL18, WXK_SPECIAL18,
WXK_SPECIAL19, WXK_SPECIAL19,
WXK_SPECIAL20 WXK_SPECIAL20,
WXK_BROWSER_BACK = 501,
WXK_BROWSER_FORWARD,
WXK_BROWSER_REFRESH,
WXK_BROWSER_STOP,
WXK_BROWSER_SEARCH,
WXK_BROWSER_FAVORITES,
WXK_BROWSER_HOME,
WXK_VOLUME_MUTE,
WXK_VOLUME_DOWN,
WXK_VOLUME_UP,
WXK_MEDIA_NEXT_TRACK,
WXK_MEDIA_PREV_TRACK,
WXK_MEDIA_STOP,
WXK_MEDIA_PLAY_PAUSE,
WXK_LAUNCH_MAIL,
WXK_LAUNCH_APP1,
WXK_LAUNCH_APP2
}; };
/** /**

View File

@@ -726,6 +726,57 @@ static long wxTranslateKeySymToWXKey(KeySym keysym, bool isChar)
case GDK_F12: case GDK_F12:
key_code = WXK_F1 + keysym - GDK_F1; key_code = WXK_F1 + keysym - GDK_F1;
break; break;
case GDK_Back:
key_code = WXK_BROWSER_BACK;
break;
case GDK_Forward:
key_code = WXK_BROWSER_FORWARD;
break;
case GDK_Refresh:
key_code = WXK_BROWSER_REFRESH;
break;
case GDK_Stop:
key_code = WXK_BROWSER_STOP;
break;
case GDK_Search:
key_code = WXK_BROWSER_SEARCH;
break;
case GDK_Favorites:
key_code = WXK_BROWSER_FAVORITES;
break;
case GDK_HomePage:
key_code = WXK_BROWSER_HOME;
break;
case GDK_AudioMute:
key_code = WXK_VOLUME_MUTE;
break;
case GDK_AudioLowerVolume:
key_code = WXK_VOLUME_DOWN;
break;
case GDK_AudioRaiseVolume:
key_code = WXK_VOLUME_UP;
break;
case GDK_AudioNext:
key_code = WXK_MEDIA_NEXT_TRACK;
break;
case GDK_AudioPrev:
key_code = WXK_MEDIA_PREV_TRACK;
break;
case GDK_AudioStop:
key_code = WXK_MEDIA_STOP;
break;
case GDK_AudioPlay:
key_code = WXK_MEDIA_PLAY_PAUSE;
break;
case GDK_Mail:
key_code = WXK_LAUNCH_MAIL;
break;
case GDK_LaunchA:
key_code = WXK_LAUNCH_APP1;
break;
case GDK_LaunchB:
key_code = WXK_LAUNCH_APP2;
break;
default: default:
key_code = 0; key_code = 0;

View File

@@ -6134,6 +6134,58 @@ int VKToWX(WXWORD vk, WXLPARAM lParam, wchar_t *uc)
*uc = WXK_RETURN; *uc = WXK_RETURN;
break; break;
case VK_BROWSER_BACK:
wxk = WXK_BROWSER_BACK;
break;
case VK_BROWSER_FORWARD:
wxk = WXK_BROWSER_FORWARD;
break;
case VK_BROWSER_REFRESH:
wxk = WXK_BROWSER_REFRESH;
break;
case VK_BROWSER_STOP:
wxk = WXK_BROWSER_STOP;
break;
case VK_BROWSER_SEARCH:
wxk = WXK_BROWSER_SEARCH;
break;
case VK_BROWSER_FAVORITES:
wxk = WXK_BROWSER_FAVORITES;
break;
case VK_BROWSER_HOME:
wxk = WXK_BROWSER_HOME;
break;
case VK_VOLUME_MUTE:
wxk = WXK_VOLUME_MUTE;
break;
case VK_VOLUME_DOWN:
wxk = WXK_VOLUME_DOWN;
break;
case VK_VOLUME_UP:
wxk = WXK_VOLUME_UP;
break;
case VK_MEDIA_NEXT_TRACK:
wxk = WXK_MEDIA_NEXT_TRACK;
break;
case VK_MEDIA_PREV_TRACK:
wxk = WXK_MEDIA_PREV_TRACK;
break;
case VK_MEDIA_STOP:
wxk = WXK_MEDIA_STOP;
break;
case VK_MEDIA_PLAY_PAUSE:
wxk = WXK_MEDIA_PLAY_PAUSE;
break;
case VK_LAUNCH_MAIL:
wxk = WXK_LAUNCH_MAIL;
break;
case VK_LAUNCH_APP1:
wxk = WXK_LAUNCH_APP1;
break;
case VK_LAUNCH_APP2:
wxk = WXK_LAUNCH_APP2;
break;
default: default:
if ( (vk >= '0' && vk <= '9') || (vk >= 'A' && vk <= 'Z') ) if ( (vk >= '0' && vk <= '9') || (vk >= 'A' && vk <= 'Z') )
{ {