Changeset 165 for smplayer/trunk/src/myapplication.cpp
- Timestamp:
- May 16, 2014, 9:51:55 AM (11 years ago)
- Location:
- smplayer/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
smplayer/trunk
- Property svn:mergeinfo changed
/smplayer/vendor/current merged: 163
- Property svn:mergeinfo changed
-
smplayer/trunk/src/myapplication.cpp
r142 r165 1 1 /* smplayer, GUI front-end for mplayer. 2 Copyright (C) 2006-201 3Ricardo Villalba <rvm@users.sourceforge.net>2 Copyright (C) 2006-2014 Ricardo Villalba <rvm@users.sourceforge.net> 3 3 4 4 This program is free software; you can redistribute it and/or modify … … 19 19 #include "myapplication.h" 20 20 21 #ifdef USE_WINEVENTFILTER 22 #include <QKeyEvent> 23 #include <QEvent> 24 #include <QWidget> 25 #include <windows.h> 26 #include <QDebug> 27 28 #ifndef WM_APPCOMMAND 29 #define WM_APPCOMMAND 0x0319 30 #endif 31 32 #ifndef FAPPCOMMAND_MOUSE 33 #define FAPPCOMMAND_MOUSE 0x8000 34 #define FAPPCOMMAND_KEY 0 35 #define FAPPCOMMAND_OEM 0x1000 36 #define FAPPCOMMAND_MASK 0xF000 37 #define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK)) 38 #define GET_DEVICE_LPARAM(lParam) ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK)) 39 #define GET_MOUSEORKEY_LPARAM GET_DEVICE_LPARAM 40 #define GET_FLAGS_LPARAM(lParam) (LOWORD(lParam)) 41 #define GET_KEYSTATE_LPARAM(lParam) GET_FLAGS_LPARAM(lParam) 42 43 #define APPCOMMAND_BROWSER_BACKWARD 1 44 #define APPCOMMAND_BROWSER_FORWARD 2 45 #define APPCOMMAND_BROWSER_REFRESH 3 46 #define APPCOMMAND_BROWSER_STOP 4 47 #define APPCOMMAND_BROWSER_SEARCH 5 48 #define APPCOMMAND_BROWSER_FAVORITES 6 49 #define APPCOMMAND_BROWSER_HOME 7 50 #define APPCOMMAND_VOLUME_MUTE 8 51 #define APPCOMMAND_VOLUME_DOWN 9 52 #define APPCOMMAND_VOLUME_UP 10 53 #define APPCOMMAND_MEDIA_NEXTTRACK 11 54 #define APPCOMMAND_MEDIA_PREVIOUSTRACK 12 55 #define APPCOMMAND_MEDIA_STOP 13 56 #define APPCOMMAND_MEDIA_PLAY_PAUSE 14 57 #define APPCOMMAND_LAUNCH_MAIL 15 58 #define APPCOMMAND_LAUNCH_MEDIA_SELECT 16 59 #define APPCOMMAND_LAUNCH_APP1 17 60 #define APPCOMMAND_LAUNCH_APP2 18 61 #define APPCOMMAND_BASS_DOWN 19 62 #define APPCOMMAND_BASS_BOOST 20 63 #define APPCOMMAND_BASS_UP 21 64 #define APPCOMMAND_TREBLE_DOWN 22 65 #define APPCOMMAND_TREBLE_UP 23 66 #endif // FAPPCOMMAND_MOUSE 67 68 // New commands from Windows XP (some even Sp1) 69 #ifndef APPCOMMAND_MICROPHONE_VOLUME_MUTE 70 #define APPCOMMAND_MICROPHONE_VOLUME_MUTE 24 71 #define APPCOMMAND_MICROPHONE_VOLUME_DOWN 25 72 #define APPCOMMAND_MICROPHONE_VOLUME_UP 26 73 #define APPCOMMAND_HELP 27 74 #define APPCOMMAND_FIND 28 75 #define APPCOMMAND_NEW 29 76 #define APPCOMMAND_OPEN 30 77 #define APPCOMMAND_CLOSE 31 78 #define APPCOMMAND_SAVE 32 79 #define APPCOMMAND_PRINT 33 80 #define APPCOMMAND_UNDO 34 81 #define APPCOMMAND_REDO 35 82 #define APPCOMMAND_COPY 36 83 #define APPCOMMAND_CUT 37 84 #define APPCOMMAND_PASTE 38 85 #define APPCOMMAND_REPLY_TO_MAIL 39 86 #define APPCOMMAND_FORWARD_MAIL 40 87 #define APPCOMMAND_SEND_MAIL 41 88 #define APPCOMMAND_SPELL_CHECK 42 89 #define APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE 43 90 #define APPCOMMAND_MIC_ON_OFF_TOGGLE 44 91 #define APPCOMMAND_CORRECTION_LIST 45 92 #define APPCOMMAND_MEDIA_PLAY 46 93 #define APPCOMMAND_MEDIA_PAUSE 47 94 #define APPCOMMAND_MEDIA_RECORD 48 95 #define APPCOMMAND_MEDIA_FAST_FORWARD 49 96 #define APPCOMMAND_MEDIA_REWIND 50 97 #define APPCOMMAND_MEDIA_CHANNEL_UP 51 98 #define APPCOMMAND_MEDIA_CHANNEL_DOWN 52 99 #endif // APPCOMMAND_MICROPHONE_VOLUME_MUTE 100 101 #define VK_MEDIA_NEXT_TRACK 0xB0 102 #define VK_MEDIA_PREV_TRACK 0xB1 103 #define VK_MEDIA_PLAY_PAUSE 0xB3 104 #define VK_MEDIA_STOP 0xB2 105 106 107 bool MyApplication::winEventFilter(MSG * msg, long * result) { 108 //qDebug() << "MyApplication::winEventFilter" << msg->message << "lParam:" << msg->lParam; 109 110 static uint last_appcommand = 0; 111 112 if (msg->message == WM_KEYDOWN) { 113 //qDebug("MyApplication::winEventFilter: WM_KEYDOWN: %X", msg->wParam); 114 bool eat_key = false; 115 if ((last_appcommand == APPCOMMAND_MEDIA_NEXTTRACK) && (msg->wParam == VK_MEDIA_NEXT_TRACK)) eat_key = true; 116 else 117 if ((last_appcommand == APPCOMMAND_MEDIA_PREVIOUSTRACK) && (msg->wParam == VK_MEDIA_PREV_TRACK)) eat_key = true; 118 else 119 if ((last_appcommand == APPCOMMAND_MEDIA_PLAY_PAUSE) && (msg->wParam == VK_MEDIA_PLAY_PAUSE)) eat_key = true; 120 else 121 if ((last_appcommand == APPCOMMAND_MEDIA_STOP) && (msg->wParam == VK_MEDIA_STOP)) eat_key = true; 122 123 if (eat_key) { 124 qDebug("MyApplication::winEventFilter: ignoring key %X", msg->wParam); 125 last_appcommand = 0; 126 *result = true; 127 return true; 128 } 129 } 130 else 131 if (msg->message == WM_APPCOMMAND) { 132 /* 133 QKeySequence k(Qt::Key_MediaTogglePlayPause); 134 qDebug() << "MyApplication::winEventFilter" << k.toString(); 135 */ 136 137 //qDebug() << "MyApplication::winEventFilter" << msg->message << "lParam:" << msg->lParam; 138 uint cmd = GET_APPCOMMAND_LPARAM(msg->lParam); 139 uint uDevice = GET_DEVICE_LPARAM(msg->lParam); 140 uint dwKeys = GET_KEYSTATE_LPARAM(msg->lParam); 141 qDebug() << "MyApplication::winEventFilter: cmd:" << cmd <<"uDevice:" << uDevice << "dwKeys:" << dwKeys; 142 143 //if (uDevice == FAPPCOMMAND_KEY) { 144 int key = 0; 145 Qt::KeyboardModifiers modifier = Qt::NoModifier; 146 QString name; 147 148 switch (cmd) { 149 case APPCOMMAND_MEDIA_PAUSE: key = Qt::Key_MediaPause; name = "Media Pause"; break; 150 case APPCOMMAND_MEDIA_PLAY: key = Qt::Key_MediaPlay; name = "Media Play"; break; 151 case APPCOMMAND_MEDIA_STOP: key = Qt::Key_MediaStop; name = "Media Stop"; break; 152 case APPCOMMAND_MEDIA_PLAY_PAUSE: key = Qt::Key_MediaTogglePlayPause; name = "Toggle Media Play/Pause"; break; 153 154 case APPCOMMAND_MEDIA_NEXTTRACK: key = Qt::Key_MediaNext; name = "Media Next"; break; 155 case APPCOMMAND_MEDIA_PREVIOUSTRACK: key = Qt::Key_MediaPrevious; name = "Media Previous"; break; 156 157 case APPCOMMAND_MEDIA_FAST_FORWARD: key = Qt::Key_F; modifier = Qt::ShiftModifier | Qt::ControlModifier; break; 158 case APPCOMMAND_MEDIA_REWIND: key = Qt::Key_B; modifier = Qt::ShiftModifier | Qt::ControlModifier; break; 159 } 160 161 if (key != 0) { 162 last_appcommand = cmd; 163 164 QKeyEvent event(QEvent::KeyPress, key, modifier, name); 165 QWidget * w = QApplication::focusWidget(); 166 if (w) QCoreApplication::sendEvent(w, &event); 167 *result = true; 168 return true; 169 } 170 //} 171 } 172 173 return false; 174 } 175 #endif // USE_WINEVENTFILTER 176 21 177 #include "moc_myapplication.cpp" 22 178
Note:
See TracChangeset
for help on using the changeset viewer.