@@ -49,6 +49,7 @@ HWND parent = NULL; // our parent window's handle
4949static int colormode = 0 ;
5050
5151// TODO: Can this be done with a winamp library?
52+ #define EXT_LPARAM 0x800000
5253HRESULT STDMETHODCALLTYPE OnDkClickedButton (RZSBSDK_DKTYPE type , RZSBSDK_KEYSTATETYPE keystate )
5354{
5455 INPUT keyCode ;
@@ -78,87 +79,52 @@ HRESULT STDMETHODCALLTYPE OnDkClickedButton(RZSBSDK_DKTYPE type, RZSBSDK_KEYSTAT
7879 case RZSBSDK_DK_6 :
7980 // poor man's debounce
8081 if (keystate != RZSBSDK_KEYSTATE_UP ){
81- // Back
82- keyCode .type = INPUT_KEYBOARD ;
83- keyCode .ki .wScan = 0 ;
84- keyCode .ki .wVk = 0x5A ; // z key
85- keyCode .ki .time = 0 ;
86- keyCode .ki .dwExtraInfo = 0 ;
87- keyCode .ki .dwFlags = 0 ;
88- SendInput (1 , & keyCode , sizeof (INPUT ));
82+ // Back
83+ keybd_event (VK_MEDIA_PREV_TRACK , 0x45 , KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP , 0 );
8984 LoadKeyImageToRazer (".\\imagedata\\rewind-color.png" ,RZSBSDK_DK_6 , RZSBSDK_KEYSTATE_UP );
9085 } else {
91- // TODO: switch colors here.
86+ keybd_event ( VK_MEDIA_PREV_TRACK , 0x45 , KEYEVENTF_EXTENDEDKEY | 0 , 0 );
9287 LoadKeyImageToRazer (".\\imagedata\\rewind.png" ,RZSBSDK_DK_6 , RZSBSDK_KEYSTATE_UP );
9388 }
9489 break ;
9590 case RZSBSDK_DK_7 :
9691 if (keystate != RZSBSDK_KEYSTATE_UP ){
97- // Play / Pause
98- keyCode .type = INPUT_KEYBOARD ;
99- keyCode .ki .wScan = 0 ;
100- keyCode .ki .wVk = 0x43 ; // c key
101- keyCode .ki .time = 0 ;
102- keyCode .ki .dwExtraInfo = 0 ;
103- keyCode .ki .dwFlags = 0 ;
104- SendInput (1 , & keyCode , sizeof (INPUT ));
92+ // Play / Pause
93+ keybd_event (VK_MEDIA_PLAY_PAUSE , 0x45 , KEYEVENTF_KEYUP , 0 );
10594 LoadKeyImageToRazer (".\\imagedata\\play-color.png" ,RZSBSDK_DK_7 , RZSBSDK_KEYSTATE_UP );
10695 } else {
107- // TODO: switch colors here.
96+ keybd_event ( VK_MEDIA_PLAY_PAUSE , 0x45 , 0 , 0 );
10897 LoadKeyImageToRazer (".\\imagedata\\play.png" ,RZSBSDK_DK_7 , RZSBSDK_KEYSTATE_UP );
10998 }
11099 break ;
111100 case RZSBSDK_DK_8 :
112101 // Fast FW
113- if (keystate != RZSBSDK_KEYSTATE_UP ){
114- keyCode .type = INPUT_KEYBOARD ;
115- keyCode .ki .wScan = 0 ;
116- keyCode .ki .wVk = 0x42 ; // b key
117- keyCode .ki .time = 0 ;
118- keyCode .ki .dwExtraInfo = 0 ;
119- keyCode .ki .dwFlags = 0 ;
120- SendInput (1 , & keyCode , sizeof (INPUT ));
102+ if (keystate != RZSBSDK_KEYSTATE_UP ){
103+ keybd_event (VK_MEDIA_NEXT_TRACK , 0x45 , KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP , 0 );
121104 LoadKeyImageToRazer (".\\imagedata\\fforward-color.png" ,RZSBSDK_DK_8 , RZSBSDK_KEYSTATE_UP );
122105 } else {
123- // TODO: switch colors here.
106+ keybd_event ( VK_MEDIA_NEXT_TRACK , 0x45 , KEYEVENTF_EXTENDEDKEY | 0 , 0 );
124107 LoadKeyImageToRazer (".\\imagedata\\fforward.png" ,RZSBSDK_DK_8 , RZSBSDK_KEYSTATE_UP );
125108 }
126109 break ;
127110 case RZSBSDK_DK_9 :
128111 // VOL_UP
129- // SIMULATE MOUSE WHEEL UP
130112 if (keystate != RZSBSDK_KEYSTATE_UP ){
131- INPUT in ;
132- in .type = INPUT_MOUSE ;
133- in .mi .dx = 0 ;
134- in .mi .dy = 120 ;
135- in .mi .dwFlags = MOUSEEVENTF_WHEEL ;
136- in .mi .time = 0 ;
137- in .mi .dwExtraInfo = 0 ;
138- in .mi .mouseData = WHEEL_DELTA ;
139- SendInput (1 ,& in ,sizeof (in ));
113+ keybd_event (VK_VOLUME_UP , 0x45 , KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP , 0 );
140114 LoadKeyImageToRazer (".\\imagedata\\volup-color.png" ,RZSBSDK_DK_9 , RZSBSDK_KEYSTATE_UP );
141115 } else {
142- // TODO: switch colors here.
116+ keybd_event ( VK_VOLUME_UP , 0x45 , KEYEVENTF_EXTENDEDKEY | 0 , 0 );
143117 LoadKeyImageToRazer (".\\imagedata\\volup.png" ,RZSBSDK_DK_9 , RZSBSDK_KEYSTATE_UP );
144118 }
145119 break ;
146120 case RZSBSDK_DK_10 :
147121 // VOLDOWN
148122 // SIMULATE MOUSE WHEEL DOWN
149- if (keystate != RZSBSDK_KEYSTATE_UP ){
150- INPUT in ;
151- in .type = INPUT_MOUSE ;
152- in .mi .dx = 0 ;
153- in .mi .dy = -120 ;
154- in .mi .dwFlags = MOUSEEVENTF_WHEEL ;
155- in .mi .time = 0 ;
156- in .mi .dwExtraInfo = 0 ;
157- in .mi .mouseData = WHEEL_DELTA ;
158- SendInput (1 ,& in ,sizeof (in ));
123+ if (keystate != RZSBSDK_KEYSTATE_UP ){
124+ keybd_event (VK_VOLUME_DOWN , 0x45 , KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP , 0 );
159125 LoadKeyImageToRazer (".\\imagedata\\voldown-color.png" ,RZSBSDK_DK_10 , RZSBSDK_KEYSTATE_UP );
160126 } else {
161- // TODO: switch colors here.
127+ keybd_event ( VK_VOLUME_DOWN , 0x45 , KEYEVENTF_EXTENDEDKEY | 0 , 0 );
162128 LoadKeyImageToRazer (".\\imagedata\\voldown.png" ,RZSBSDK_DK_10 , RZSBSDK_KEYSTATE_UP );
163129 }
164130 break ;
@@ -177,8 +143,7 @@ int visInit(struct winampVisModule *this_mod)
177143
178144 WNDCLASS wc ; // our Window class
179145 HWND (* e )(embedWindowState * v );
180-
181-
146+
182147 // OpenGL pixel format related
183148 PIXELFORMATDESCRIPTOR pfd ;
184149 int nPixelFormat ;
@@ -591,7 +556,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
591556 return 0 ;
592557 }
593558
594- case WM_KEYUP :
559+ case WM_KEYUP :
595560 {
596561 getVisInstance ()-> keys [ wParam ] = false;
597562 PostMessage (getVisInstance ()-> this_mod .hwndParent ,message ,wParam ,lParam );
0 commit comments