summaryrefslogtreecommitdiffstats
path: root/libvo/w32_common.c
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-12-20 11:52:11 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-12-20 11:52:11 +0000
commitd1065dffe100a0bc08868bb630db11dc032c62f4 (patch)
tree6c2a3dc2f6dbedbf6830e66c23b6c31c2adfbdcf /libvo/w32_common.c
parent4f3d487e06207bc63644d59d86ad9c04ef7d96bb (diff)
downloadmpv-d1065dffe100a0bc08868bb630db11dc032c62f4.tar.bz2
mpv-d1065dffe100a0bc08868bb630db11dc032c62f4.tar.xz
Add and use a special lookup function to do table-based translation to MPlayer keycodes.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28172 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo/w32_common.c')
-rw-r--r--libvo/w32_common.c34
1 files changed, 18 insertions, 16 deletions
diff --git a/libvo/w32_common.c b/libvo/w32_common.c
index 3be776f5d9..6fbeaaa4b0 100644
--- a/libvo/w32_common.c
+++ b/libvo/w32_common.c
@@ -40,9 +40,24 @@ static HMONITOR (WINAPI* myMonitorFromWindow)(HWND, DWORD);
static BOOL (WINAPI* myGetMonitorInfo)(HMONITOR, LPMONITORINFO);
static BOOL (WINAPI* myEnumDisplayMonitors)(HDC, LPCRECT, MONITORENUMPROC, LPARAM);
+static const struct keymap vk_map[] = {
+ // special keys
+ {VK_ESCAPE, KEY_ESC}, {VK_BACK, KEY_BS}, {VK_TAB, KEY_TAB}, {VK_CONTROL, KEY_CTRL},
+
+ // cursor keys
+ {VK_LEFT, KEY_LEFT}, {VK_UP, KEY_UP}, {VK_RIGHT, KEY_RIGHT}, {VK_DOWN, KEY_DOWN},
+
+ // navigation block
+ {VK_INSERT, KEY_INSERT}, {VK_DELETE, KEY_DELETE}, {VK_HOME, KEY_HOME}, {VK_END, KEY_END},
+ {VK_PRIOR, KEY_PAGE_UP}, {VK_NEXT, KEY_PAGE_DOWN},
+
+ {0, 0}
+};
+
static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
RECT r;
POINT p;
+ int mpkey;
switch (message) {
case WM_ERASEBKGND: // no need to erase background seperately
return 1;
@@ -88,22 +103,9 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM l
}
break;
case WM_KEYDOWN:
- switch (wParam) {
- case VK_LEFT: mplayer_put_key(KEY_LEFT); break;
- case VK_UP: mplayer_put_key(KEY_UP); break;
- case VK_RIGHT: mplayer_put_key(KEY_RIGHT); break;
- case VK_DOWN: mplayer_put_key(KEY_DOWN); break;
- case VK_TAB: mplayer_put_key(KEY_TAB); break;
- case VK_CONTROL: mplayer_put_key(KEY_CTRL); break;
- case VK_BACK: mplayer_put_key(KEY_BS); break;
- case VK_DELETE: mplayer_put_key(KEY_DELETE); break;
- case VK_INSERT: mplayer_put_key(KEY_INSERT); break;
- case VK_HOME: mplayer_put_key(KEY_HOME); break;
- case VK_END: mplayer_put_key(KEY_END); break;
- case VK_PRIOR: mplayer_put_key(KEY_PAGE_UP); break;
- case VK_NEXT: mplayer_put_key(KEY_PAGE_DOWN); break;
- case VK_ESCAPE: mplayer_put_key(KEY_ESC); break;
- }
+ mpkey = lookup_keymap_table(vk_map, wParam);
+ if (mpkey)
+ mplayer_put_key(mpkey);
break;
case WM_CHAR:
mplayer_put_key(wParam);