summaryrefslogtreecommitdiff
path: root/utils/nwztools/plattools/test_keys.c
diff options
context:
space:
mode:
Diffstat (limited to 'utils/nwztools/plattools/test_keys.c')
-rw-r--r--utils/nwztools/plattools/test_keys.c46
1 files changed, 41 insertions, 5 deletions
diff --git a/utils/nwztools/plattools/test_keys.c b/utils/nwztools/plattools/test_keys.c
index bfeadbb42b..353864d96f 100644
--- a/utils/nwztools/plattools/test_keys.c
+++ b/utils/nwztools/plattools/test_keys.c
@@ -19,12 +19,13 @@
19 * 19 *
20 ****************************************************************************/ 20 ****************************************************************************/
21#include "nwz_lib.h" 21#include "nwz_lib.h"
22#include "nwz_plattools.h"
22 23
23int main(int argc, char **argv) 24int NWZ_TOOL_MAIN(test_keys)(int argc, char **argv)
24{ 25{
25 /* clear screen and display welcome message */ 26 /* clear screen and display welcome message */
26 nwz_lcdmsg(true, 0, 0, "test_keys"); 27 nwz_lcdmsg(true, 0, 0, "test_keys");
27 nwz_lcdmsg(false, 0, 2, "hold BACK for 3 seconds to quit"); 28 nwz_lcdmsg(false, 0, 2, "BACK: hold 3 seconds to quit");
28 /* open input device */ 29 /* open input device */
29 int input_fd = nwz_key_open(); 30 int input_fd = nwz_key_open();
30 if(input_fd < 0) 31 if(input_fd < 0)
@@ -35,6 +36,10 @@ int main(int argc, char **argv)
35 } 36 }
36 /* display input state in a loop */ 37 /* display input state in a loop */
37 int back_pressed = 0; /* 0 = no pressed, >0 = number of seconds pressed - 1 */ 38 int back_pressed = 0; /* 0 = no pressed, >0 = number of seconds pressed - 1 */
39#define FIRST_LINE 7
40#define LAST_LINE 17
41 int event_line = FIRST_LINE;
42 int prev_evt_line = -1;
38 while(1) 43 while(1)
39 { 44 {
40 /* display HOLD status */ 45 /* display HOLD status */
@@ -52,18 +57,49 @@ int main(int argc, char **argv)
52 struct input_event evt; 57 struct input_event evt;
53 if(nwz_key_read_event(input_fd, &evt) != 1) 58 if(nwz_key_read_event(input_fd, &evt) != 1)
54 continue; 59 continue;
55 nwz_lcdmsgf(false, 2, 6, "%s %s (HOLD=%d) ", 60 /* erase last '>' indicator */
61 if(prev_evt_line != -1)
62 nwz_lcdmsg(false, 0, prev_evt_line, " ");
63 prev_evt_line = event_line;
64 char buffer[32];
65 int len = sprintf(buffer, "> %s %s (HOLD=%d)",
56 nwz_key_get_name(nwz_key_event_get_keycode(&evt)), 66 nwz_key_get_name(nwz_key_event_get_keycode(&evt)),
57 nwz_key_event_is_press(&evt) ? "pressed" : "released", 67 nwz_key_event_is_press(&evt) ? "pressed" : "released",
58 nwz_key_event_get_hold_status(&evt)); 68 nwz_key_event_get_hold_status(&evt));
69 /* pad with spaces to erase old stuff */
70 while(len + 1 < sizeof(buffer))
71 buffer[len++] = ' ';
72 buffer[len] = 0;
73 /* print line */
74 nwz_lcdmsg(false, 0, event_line, buffer);
75 /* compute next line */
76 event_line++;
77 if(event_line == LAST_LINE)
78 event_line = FIRST_LINE;
79 /* handle quit */
59 if(nwz_key_event_get_keycode(&evt) == NWZ_KEY_BACK && nwz_key_event_is_press(&evt)) 80 if(nwz_key_event_get_keycode(&evt) == NWZ_KEY_BACK && nwz_key_event_is_press(&evt))
60 back_pressed = 1; 81 back_pressed = 1;
61 else 82 else
62 back_pressed = 0; 83 back_pressed = 0;
63 } 84 }
85 /* wait until back is released, to avoid messing with all_tools (if embedded) */
86 nwz_lcdmsg(true, 0, 0, "test_keys");
87 nwz_lcdmsg(false, 0, 2, "BACK: release to quit");
88 while(1)
89 {
90 /* wait for event */
91 int ret = nwz_key_wait_event(input_fd, 1000000);
92 if(ret != 1)
93 continue;
94 struct input_event evt;
95 if(nwz_key_read_event(input_fd, &evt) != 1)
96 continue;
97 /* handle quit */
98 if(nwz_key_event_get_keycode(&evt) == NWZ_KEY_BACK && !nwz_key_event_is_press(&evt))
99 break;
100 }
64 /* close input device */ 101 /* close input device */
65 close(input_fd); 102 nwz_key_close(input_fd);
66 /* finish nicely */ 103 /* finish nicely */
67 return 0; 104 return 0;
68} 105}
69