summaryrefslogtreecommitdiff
path: root/uisimulator/win32/button.c
diff options
context:
space:
mode:
Diffstat (limited to 'uisimulator/win32/button.c')
-rw-r--r--uisimulator/win32/button.c286
1 files changed, 0 insertions, 286 deletions
diff --git a/uisimulator/win32/button.c b/uisimulator/win32/button.c
deleted file mode 100644
index 8f21fe4396..0000000000
--- a/uisimulator/win32/button.c
+++ /dev/null
@@ -1,286 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2002 by Felix Arends
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19
20#include <windows.h>
21#include "uisw32.h"
22#include "config.h"
23#include "button.h"
24#include "kernel.h"
25#include "backlight.h"
26#include "misc.h"
27
28/* how long until repeat kicks in */
29#define REPEAT_START 6
30
31/* the speed repeat starts at */
32#define REPEAT_INTERVAL_START 4
33
34/* speed repeat finishes at */
35#define REPEAT_INTERVAL_FINISH 2
36
37struct event_queue button_queue;
38
39static int btn = 0; /* Hopefully keeps track of currently pressed keys... */
40
41void button_event(int key, bool pressed)
42{
43 int new_btn = 0;
44 int diff = 0;
45 static int count = 0;
46 static int lastbtn;
47 static int repeat_speed = REPEAT_INTERVAL_START;
48 static int repeat_count = 0;
49 static bool repeat = false;
50 static bool post = false;
51
52 switch (key)
53 {
54 case VK_NUMPAD4:
55 case VK_LEFT:
56 new_btn = BUTTON_LEFT;
57 break;
58 case VK_NUMPAD6:
59 case VK_RIGHT:
60 new_btn = BUTTON_RIGHT;
61 break;
62
63 case VK_NUMPAD8:
64 case VK_UP:
65#ifdef BUTTON_UP
66 new_btn = BUTTON_UP;
67#elif defined BUTTON_SCROLL_FWD
68 new_btn = BUTTON_SCROLL_FWD;
69#elif defined BUTTON_PLAY
70 new_btn = BUTTON_PLAY;
71#endif
72 break;
73
74 case VK_NUMPAD2:
75 case VK_DOWN:
76#ifdef BUTTON_DOWN
77 new_btn = BUTTON_DOWN;
78#elif defined BUTTON_SCROLL_BACK
79 new_btn = BUTTON_SCROLL_BACK;
80#elif defined BUTTON_STOP
81 new_btn = BUTTON_STOP;
82#endif
83 break;
84
85 case VK_ADD:
86#ifdef BUTTON_ON
87 new_btn = BUTTON_ON;
88#elif defined(BUTTON_SELECT) && defined(BUTTON_PLAY)
89 new_btn = BUTTON_PLAY;
90#endif
91 break;
92
93#ifdef BUTTON_OFF
94 case VK_RETURN:
95 new_btn = BUTTON_OFF;
96 break;
97#endif
98
99#ifdef BUTTON_F1
100 case VK_DIVIDE:
101 case VK_F1:
102 new_btn = BUTTON_F1;
103 break;
104 case VK_MULTIPLY:
105 case VK_F2:
106 new_btn = BUTTON_F2;
107 break;
108 case VK_SUBTRACT:
109 case VK_F3:
110 new_btn = BUTTON_F3;
111 break;
112#elif defined(BUTTON_REC)
113 case VK_DIVIDE:
114 case VK_F1:
115 new_btn = BUTTON_REC;
116 break;
117#endif
118
119 case VK_NUMPAD5:
120 case VK_SPACE:
121#if defined(BUTTON_PLAY) && !defined(BUTTON_SELECT)
122 new_btn = BUTTON_PLAY;
123#elif defined(BUTTON_SELECT)
124 new_btn = BUTTON_SELECT;
125#endif
126 break;
127
128#ifdef HAVE_LCD_BITMAP
129 case VK_NUMPAD0:
130 case VK_F5:
131 if(pressed)
132 {
133 screen_dump();
134 return;
135 }
136 break;
137#endif
138
139 case VK_DECIMAL:
140 case VK_INSERT:
141#ifdef BUTTON_MENU
142 new_btn = BUTTON_MENU;
143#elif defined(BUTTON_MODE)
144 new_btn = BUTTON_MODE;
145#endif
146 break;
147 }
148
149 if (pressed)
150 btn |= new_btn;
151 else
152 btn &= ~new_btn;
153
154 /* Lots of stuff copied from real button.c. Not good, I think... */
155
156 /* Find out if a key has been released */
157 diff = btn ^ lastbtn;
158
159 if(diff && (btn & diff) == 0)
160 {
161 queue_post(&button_queue, BUTTON_REL | diff, NULL);
162 }
163 else
164 {
165 if ( btn )
166 {
167 /* normal keypress */
168 if ( btn != lastbtn )
169 {
170 post = true;
171 repeat = false;
172 repeat_speed = REPEAT_INTERVAL_START;
173
174 }
175 else /* repeat? */
176 {
177 if ( repeat )
178 {
179 if (!post)
180 count--;
181 if (count == 0)
182 {
183 post = true;
184 /* yes we have repeat */
185 repeat_speed--;
186 if (repeat_speed < REPEAT_INTERVAL_FINISH)
187 repeat_speed = REPEAT_INTERVAL_FINISH;
188 count = repeat_speed;
189
190 repeat_count++;
191 }
192 }
193 else
194 {
195 if (count++ > REPEAT_START)
196 {
197 post = true;
198 repeat = true;
199 repeat_count = 0;
200 /* initial repeat */
201 count = REPEAT_INTERVAL_START;
202 }
203 }
204 }
205 if ( post )
206 {
207 if(repeat)
208 {
209 if (queue_empty(&button_queue))
210 {
211 queue_post(&button_queue, BUTTON_REPEAT | btn, NULL);
212 post = false;
213 }
214 }
215 else
216 {
217 queue_post(&button_queue, btn, NULL);
218 post = false;
219 }
220
221#ifdef HAVE_REMOTE_LCD
222 if(btn & BUTTON_REMOTE)
223 remote_backlight_on();
224 else
225#endif
226 backlight_on();
227
228 }
229 }
230 else
231 {
232 repeat = false;
233 count = 0;
234 }
235 }
236 lastbtn = btn & ~(BUTTON_REL | BUTTON_REPEAT);
237}
238
239/* Again copied from real button.c... */
240
241long button_get(bool block)
242{
243 struct event ev;
244
245 if ( block || !queue_empty(&button_queue) ) {
246 queue_wait(&button_queue, &ev);
247 return ev.id;
248 }
249 return BUTTON_NONE;
250}
251
252long button_get_w_tmo(int ticks)
253{
254 struct event ev;
255 queue_wait_w_tmo(&button_queue, &ev, ticks);
256 return (ev.id != SYS_TIMEOUT)? ev.id: BUTTON_NONE;
257}
258
259void button_init(void)
260{
261}
262
263int button_status(void)
264{
265 return btn;
266}
267
268void button_clear_queue(void)
269{
270 queue_clear(&button_queue);
271}
272
273#ifdef HAS_BUTTON_HOLD
274bool button_hold(void) {
275 /* temp fix for hold button on irivers */
276 return false;
277}
278#endif
279
280#ifdef HAS_REMOTE_BUTTON_HOLD
281bool remote_button_hold(void) {
282 /* temp fix for hold button on irivers */
283 return false;
284}
285#endif
286