Mercurial > mplayer.hg
diff libvo/x11_common.c @ 28137:28bf0d126da2
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
author | reimar |
---|---|
date | Sat, 20 Dec 2008 11:52:11 +0000 |
parents | 31ea1d682c7b |
children | 49dadf7bd73a |
line wrap: on
line diff
--- a/libvo/x11_common.c Sat Dec 20 11:49:00 2008 +0000 +++ b/libvo/x11_common.c Sat Dec 20 11:52:11 2008 +0000 @@ -543,47 +543,23 @@ #include "wskeys.h" #ifdef XF86XK_AudioPause +static const struct keymap keysym_map[] = { + {XF86XK_MenuKB, KEY_MENU}, + {XF86XK_AudioPlay, KEY_PLAY}, {XF86XK_AudioPause, KEY_PAUSE}, {XF86XK_AudioStop, KEY_STOP}, + {XF86XK_AudioPrev, KEY_PREV}, {XF86XK_AudioNext, KEY_NEXT}, + {XF86XK_AudioMute, KEY_MUTE}, {XF86XK_AudioLowerVolume, KEY_VOLUME_DOWN}, {XF86XK_AudioRaiseVolume, KEY_VOLUME_UP}, + {0, 0} +}; + static void vo_x11_putkey_ext(int keysym) { - switch (keysym) - { - case XF86XK_MenuKB: - mplayer_put_key(KEY_MENU); - break; - case XF86XK_AudioPlay: - mplayer_put_key(KEY_PLAY); - break; - case XF86XK_AudioPause: - mplayer_put_key(KEY_PAUSE); - break; - case XF86XK_AudioStop: - mplayer_put_key(KEY_STOP); - break; - case XF86XK_AudioPrev: - mplayer_put_key(KEY_PREV); - break; - case XF86XK_AudioNext: - mplayer_put_key(KEY_NEXT); - break; - case XF86XK_AudioMute: - mplayer_put_key(KEY_MUTE); - break; - case XF86XK_AudioLowerVolume: - mplayer_put_key(KEY_VOLUME_DOWN); - break; - case XF86XK_AudioRaiseVolume: - mplayer_put_key(KEY_VOLUME_UP); - break; - default: - break; - } + int mpkey = lookup_keymap_table(keysym_map, keysym); + if (mpkey) + mplayer_put_key(mpkey); } #endif -struct { - int x11key; - int mpkey; -} static const keymap[] = { +static const struct keymap keymap[] = { // special keys {wsEscape, KEY_ESC}, {wsBackSpace, KEY_BS}, {wsTab, KEY_TAB}, {wsEnter, KEY_ENTER}, @@ -629,9 +605,8 @@ (key > 0 && key < 256 && strchr(passthrough_keys, key))) mpkey = key; - for (i = 0; !mpkey && keymap[i].x11key; i++) - if (keymap[i].x11key == key) - mpkey = keymap[i].mpkey; + if (!mpkey) + lookup_keymap_table(keymap, key); if (mpkey) mplayer_put_key(mpkey);