summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/player/keyboard.c84
-rw-r--r--apps/recorder/keyboard.c130
2 files changed, 114 insertions, 100 deletions
diff --git a/apps/player/keyboard.c b/apps/player/keyboard.c
index be0e43b8a9..ec40ddf57c 100644
--- a/apps/player/keyboard.c
+++ b/apps/player/keyboard.c
@@ -53,9 +53,13 @@ int kbd_input(char* text, int buflen)
53 lcd_clear_display(); 53 lcd_clear_display();
54 54
55 /* draw chars */ 55 /* draw chars */
56 for (i=0; i < 11; i++) 56 for (i=0; i < 11; i++) {
57 lcd_putc(i, 1, line[i+x]); 57 if (line[i+x])
58 58 lcd_putc(i, 1, line[i+x]);
59 else
60 break;
61 }
62
59 /* write out the text */ 63 /* write out the text */
60 if (len <= 11) { 64 if (len <= 11) {
61 /* if we have enough room */ 65 /* if we have enough room */
@@ -70,47 +74,49 @@ int kbd_input(char* text, int buflen)
70 74
71 switch ( button_get(true) ) { 75 switch ( button_get(true) ) {
72 76
73 case BUTTON_MENU: 77 case BUTTON_MENU:
74 /* Page */ 78 /* shift */
75 if (++page == KEYBOARD_PAGES) 79 if (++page == KEYBOARD_PAGES)
76 page = 0; 80 page = 0;
77 line = kbd_setupkeys(page); 81 line = kbd_setupkeys(page);
78 linelen = strlen(line); 82 linelen = strlen(line);
79 break; 83 break;
80 84
81 case BUTTON_RIGHT: 85 case BUTTON_RIGHT:
82 if (x < linelen - 1) 86 case BUTTON_RIGHT | BUTTON_REPEAT:
83 x++; 87 if (x < linelen - 1)
84 else 88 x++;
85 x = 0; 89 else
86 break; 90 x = 0;
91 break;
87 92
88 case BUTTON_LEFT: 93 case BUTTON_LEFT:
89 if (x) 94 case BUTTON_LEFT | BUTTON_REPEAT:
90 x--; 95 if (x)
91 else 96 x--;
92 x = linelen - 1; 97 else
93 break; 98 x = linelen - 1;
99 break;
94 100
95 case BUTTON_STOP: 101 case BUTTON_STOP:
96 /* backspace */ 102 /* backspace */
97 if (len) 103 if (len)
98 text[len-1] = 0; 104 text[len-1] = 0;
99 break; 105 break;
100 106
101 case BUTTON_ON: 107 case BUTTON_ON:
102 /* F2 accepts what was entered and continues */ 108 /* ON accepts what was entered and continues */
103 done = true; 109 done = true;
104 break; 110 break;
105 111
106 case BUTTON_PLAY: 112 case BUTTON_PLAY:
107 /* PLAY inserts the selected char */ 113 /* PLAY inserts the selected char */
108 if (len<buflen) 114 if (len<buflen)
109 { 115 {
110 text[len] = line[x]; 116 text[len] = line[x];
111 text[len+1] = 0; 117 text[len+1] = 0;
112 } 118 }
113 break; 119 break;
114 } 120 }
115 } 121 }
116 return 0; 122 return 0;
diff --git a/apps/recorder/keyboard.c b/apps/recorder/keyboard.c
index 431bfb6b19..8f22d19d97 100644
--- a/apps/recorder/keyboard.c
+++ b/apps/recorder/keyboard.c
@@ -84,6 +84,7 @@ int kbd_input(char* text, int buflen)
84 char c = 0; 84 char c = 0;
85 struct font* font = font_get(FONT_SYSFIXED); 85 struct font* font = font_get(FONT_SYSFIXED);
86 86
87 lcd_setfont(FONT_SYSFIXED);
87 font_w = font->maxwidth; 88 font_w = font->maxwidth;
88 font_h = font->height; 89 font_h = font->height;
89 90
@@ -131,7 +132,7 @@ int kbd_input(char* text, int buflen)
131 132
132 /* draw the status bar */ 133 /* draw the status bar */
133 kbd_draw_statusbar_button(0, "Shift", status_y1, font_w); 134 kbd_draw_statusbar_button(0, "Shift", status_y1, font_w);
134 kbd_draw_statusbar_button(1, "Done", status_y1, font_w); 135 kbd_draw_statusbar_button(1, "Cancl", status_y1, font_w);
135 kbd_draw_statusbar_button(2, "Del", status_y1, font_w); 136 kbd_draw_statusbar_button(2, "Del", status_y1, font_w);
136 137
137 /* highlight the key that has focus */ 138 /* highlight the key that has focus */
@@ -140,67 +141,74 @@ int kbd_input(char* text, int buflen)
140 141
141 switch ( button_get(true) ) { 142 switch ( button_get(true) ) {
142 143
143 case BUTTON_OFF: 144 case BUTTON_OFF:
144 /* abort */ 145 case BUTTON_F2:
145 return -1; 146 /* abort */
146 break; 147 lcd_setfont(FONT_UI);
147 148 return -1;
148 case BUTTON_F1: 149 break;
149 /* Page */ 150
150 if (++page == KEYBOARD_PAGES) 151 case BUTTON_F1:
151 page = 0; 152 /* Page */
152 kbd_setupkeys(line, page); 153 if (++page == KEYBOARD_PAGES)
153 break; 154 page = 0;
154 155 kbd_setupkeys(line, page);
155 case BUTTON_RIGHT: 156 break;
156 if (x < (int)strlen(line[y]) - 1) 157
157 x++; 158 case BUTTON_RIGHT:
158 else 159 case BUTTON_RIGHT | BUTTON_REPEAT:
159 x = 0; 160 if (x < (int)strlen(line[y]) - 1)
160 break; 161 x++;
161 162 else
162 case BUTTON_LEFT: 163 x = 0;
163 if (x) 164 break;
164 x--; 165
165 else 166 case BUTTON_LEFT:
166 x = strlen(line[y]) - 1; 167 case BUTTON_LEFT | BUTTON_REPEAT:
167 break; 168 if (x)
168 169 x--;
169 case BUTTON_DOWN: 170 else
170 if (y < KEYBOARD_LINES - 1) 171 x = strlen(line[y]) - 1;
171 y++; 172 break;
172 else 173
173 y=0; 174 case BUTTON_DOWN:
174 break; 175 case BUTTON_DOWN | BUTTON_REPEAT:
175 176 if (y < KEYBOARD_LINES - 1)
176 case BUTTON_UP: 177 y++;
177 if (y) 178 else
178 y--; 179 y=0;
179 else 180 break;
180 y = KEYBOARD_LINES - 1; 181
181 break; 182 case BUTTON_UP:
182 183 case BUTTON_UP | BUTTON_REPEAT:
183 case BUTTON_F3: 184 if (y)
184 /* backspace */ 185 y--;
185 if (len) 186 else
186 text[len-1] = 0; 187 y = KEYBOARD_LINES - 1;
187 break; 188 break;
188 189
189 case BUTTON_F2: 190 case BUTTON_F3:
190 /* F2 accepts what was entered and continues */ 191 /* backspace */
191 done = true; 192 if (len)
192 break; 193 text[len-1] = 0;
193 194 break;
194 case BUTTON_PLAY: 195
195 /* PLAY inserts the selected char */ 196 case BUTTON_ON:
196 if (len<buflen) 197 /* ON accepts what was entered and continues */
197 { 198 done = true;
198 c = line[y][x]; 199 break;
199 text[len] = c; 200
200 text[len+1] = 0; 201 case BUTTON_PLAY:
201 } 202 /* PLAY inserts the selected char */
202 break; 203 if (len<buflen)
204 {
205 c = line[y][x];
206 text[len] = c;
207 text[len+1] = 0;
208 }
209 break;
203 } 210 }
204 } 211 }
212 lcd_setfont(FONT_UI);
205 return 0; 213 return 0;
206} 214}