diff options
Diffstat (limited to 'utils/nwztools/plattools/test_keys.c')
-rw-r--r-- | utils/nwztools/plattools/test_keys.c | 46 |
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 | ||
23 | int main(int argc, char **argv) | 24 | int 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 | |||