summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorMartin Scarratt <mmmm@rockbox.org>2006-08-22 13:21:13 +0000
committerMartin Scarratt <mmmm@rockbox.org>2006-08-22 13:21:13 +0000
commit0ba2204beb8f97ce71133bf74fdc24b40f81407c (patch)
tree9ef69b04d5d130bc52122e9833c09214f90b09c9 /apps
parentaf95a013641b4c0919bc1cf9f907a3149f513da0 (diff)
downloadrockbox-0ba2204beb8f97ce71133bf74fdc24b40f81407c.tar.gz
rockbox-0ba2204beb8f97ce71133bf74fdc24b40f81407c.zip
Button action code for the Virtual keyboard. Extra buttons for H1xx remote: Vol-+ Cursor Left/Right. H3xx remote:-10/+10 Cursor Left/Right.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10694 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/action.h18
-rw-r--r--apps/keymaps/keymap-gigabeat.c25
-rw-r--r--apps/keymaps/keymap-h10.c17
-rw-r--r--apps/keymaps/keymap-h1x0_h3x0.c119
-rw-r--r--apps/keymaps/keymap-ifp7xx.c18
-rw-r--r--apps/keymaps/keymap-ipod.c16
-rw-r--r--apps/keymaps/keymap-ondio.c20
-rw-r--r--apps/keymaps/keymap-recorder.c25
-rw-r--r--apps/keymaps/keymap-x5.c19
-rw-r--r--apps/recorder/keyboard.c249
10 files changed, 292 insertions, 234 deletions
diff --git a/apps/action.h b/apps/action.h
index df07606171..1bbe6fc6e8 100644
--- a/apps/action.h
+++ b/apps/action.h
@@ -68,6 +68,7 @@ enum {
68 68
69 CONTEXT_YESNOSCREEN, /*NOTE: make sure your target has this and ACTION_YESNO_ACCEPT */ 69 CONTEXT_YESNOSCREEN, /*NOTE: make sure your target has this and ACTION_YESNO_ACCEPT */
70 CONTEXT_RECSCREEN, 70 CONTEXT_RECSCREEN,
71 CONTEXT_KEYBOARD,
71}; 72};
72 73
73 74
@@ -177,7 +178,22 @@ enum {
177 /* yesno screen */ 178 /* yesno screen */
178 ACTION_YESNO_ACCEPT, 179 ACTION_YESNO_ACCEPT,
179 180
180 181 /* keyboard screen */
182 ACTION_KBD_LEFT,
183 ACTION_KBD_RIGHT,
184 ACTION_KBD_CURSOR_LEFT,
185 ACTION_KBD_CURSOR_RIGHT,
186 ACTION_KBD_SELECT,
187 ACTION_KBD_SELECT_REM,
188 ACTION_KBD_PAGE_FLIP,
189 ACTION_KBD_DONE,
190 ACTION_KBD_ABORT,
191 ACTION_KBD_BACKSPACE,
192 ACTION_KBD_UP,
193 ACTION_KBD_DOWN,
194 ACTION_KBD_MORSE_INPUT,
195 ACTION_KBD_MORSE_SELECT,
196
181}; 197};
182 198
183struct button_mapping { 199struct button_mapping {
diff --git a/apps/keymaps/keymap-gigabeat.c b/apps/keymaps/keymap-gigabeat.c
index 9a987d2bfc..042a1f7d8b 100644
--- a/apps/keymaps/keymap-gigabeat.c
+++ b/apps/keymaps/keymap-gigabeat.c
@@ -220,6 +220,29 @@ const struct button_mapping button_context_pitchscreen[] = {
220 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 220 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
221}; /* button_context_pitchcreen */ 221}; /* button_context_pitchcreen */
222 222
223const struct button_mapping button_context_keyboard[] = {
224 { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
225 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
226 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
227 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
228 { ACTION_KBD_CURSOR_LEFT, BUTTON_POWER|BUTTON_LEFT, BUTTON_NONE },
229 { ACTION_KBD_CURSOR_LEFT, BUTTON_POWER|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
230 { ACTION_KBD_CURSOR_RIGHT, BUTTON_POWER|BUTTON_RIGHT, BUTTON_NONE },
231 { ACTION_KBD_CURSOR_RIGHT, BUTTON_POWER|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
232 { ACTION_KBD_SELECT, BUTTON_SELECT, BUTTON_NONE },
233 { ACTION_KBD_PAGE_FLIP, BUTTON_POWER|BUTTON_MENU, BUTTON_NONE },
234 { ACTION_KBD_DONE, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
235 { ACTION_KBD_ABORT, BUTTON_A, BUTTON_NONE },
236 { ACTION_KBD_BACKSPACE, BUTTON_MENU, BUTTON_NONE },
237 { ACTION_KBD_BACKSPACE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE },
238 { ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
239 { ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
240 { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
241 { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
242
243 LAST_ITEM_IN_LIST
244}; /* button_context_keyboard */
245
223const struct button_mapping* get_context_mapping(int context) 246const struct button_mapping* get_context_mapping(int context)
224{ 247{
225 switch (context) 248 switch (context)
@@ -261,6 +284,8 @@ const struct button_mapping* get_context_mapping(int context)
261 return button_context_quickscreen; 284 return button_context_quickscreen;
262 case CONTEXT_PITCHSCREEN: 285 case CONTEXT_PITCHSCREEN:
263 return button_context_pitchscreen; 286 return button_context_pitchscreen;
287 case CONTEXT_KEYBOARD:
288 return button_context_keyboard;
264 } 289 }
265 return button_context_standard; 290 return button_context_standard;
266} 291}
diff --git a/apps/keymaps/keymap-h10.c b/apps/keymaps/keymap-h10.c
index 25ee13022f..c6b6229f61 100644
--- a/apps/keymaps/keymap-h10.c
+++ b/apps/keymaps/keymap-h10.c
@@ -152,7 +152,21 @@ const struct button_mapping button_context_pitchscreen[] = {
152 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD), 152 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
153}; /* button_context_pitchscreen */ 153}; /* button_context_pitchscreen */
154 154
155const struct button_mapping button_context_keyboard[] = {
156 { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
157 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
158 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
159 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
160 { ACTION_KBD_SELECT, BUTTON_REW|BUTTON_REL, BUTTON_REW },
161 { ACTION_KBD_DONE, BUTTON_PLAY, BUTTON_NONE },
162 { ACTION_KBD_ABORT, BUTTON_FF, BUTTON_NONE },
163 { ACTION_KBD_UP, BUTTON_SCROLL_UP, BUTTON_NONE },
164 { ACTION_KBD_UP, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE },
165 { ACTION_KBD_DOWN, BUTTON_SCROLL_DOWN, BUTTON_NONE },
166 { ACTION_KBD_DOWN, BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
155 167
168 LAST_ITEM_IN_LIST
169}; /* button_context_keyboard */
156 170
157/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */ 171/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
158const struct button_mapping* get_context_mapping(int context) 172const struct button_mapping* get_context_mapping(int context)
@@ -186,6 +200,9 @@ const struct button_mapping* get_context_mapping(int context)
186 return button_context_quickscreen; 200 return button_context_quickscreen;
187 case CONTEXT_PITCHSCREEN: 201 case CONTEXT_PITCHSCREEN:
188 return button_context_pitchscreen; 202 return button_context_pitchscreen;
203 case CONTEXT_KEYBOARD:
204 return button_context_keyboard;
205
189 case CONTEXT_LIST: 206 case CONTEXT_LIST:
190 case CONTEXT_MAINMENU: 207 case CONTEXT_MAINMENU:
191 default: 208 default:
diff --git a/apps/keymaps/keymap-h1x0_h3x0.c b/apps/keymaps/keymap-h1x0_h3x0.c
index 9eebdf25c1..476e307ffd 100644
--- a/apps/keymaps/keymap-h1x0_h3x0.c
+++ b/apps/keymaps/keymap-h1x0_h3x0.c
@@ -232,6 +232,31 @@ const struct button_mapping button_context_recscreen[] = {
232 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 232 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
233}; /* button_context_recscreen */ 233}; /* button_context_recscreen */
234 234
235const struct button_mapping button_context_keyboard[] = {
236 { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
237 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
238 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
239 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
240 { ACTION_KBD_CURSOR_LEFT, BUTTON_ON|BUTTON_LEFT, BUTTON_NONE },
241 { ACTION_KBD_CURSOR_LEFT, BUTTON_ON|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
242 { ACTION_KBD_CURSOR_RIGHT, BUTTON_ON|BUTTON_RIGHT, BUTTON_NONE },
243 { ACTION_KBD_CURSOR_RIGHT, BUTTON_ON|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
244 { ACTION_KBD_SELECT, BUTTON_SELECT, BUTTON_NONE },
245 { ACTION_KBD_PAGE_FLIP, BUTTON_MODE, BUTTON_NONE },
246 { ACTION_KBD_DONE, BUTTON_ON|BUTTON_REL, BUTTON_ON },
247 { ACTION_KBD_ABORT, BUTTON_OFF, BUTTON_NONE },
248 { ACTION_KBD_BACKSPACE, BUTTON_REC, BUTTON_NONE },
249 { ACTION_KBD_BACKSPACE, BUTTON_REC|BUTTON_REPEAT, BUTTON_NONE },
250 { ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
251 { ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
252 { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
253 { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
254 { ACTION_KBD_MORSE_INPUT, BUTTON_ON|BUTTON_MODE, BUTTON_NONE },
255 { ACTION_KBD_MORSE_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
256
257 LAST_ITEM_IN_LIST
258}; /* button_context_keyboard */
259
235/***************************************************************************** 260/*****************************************************************************
236 * Remote control mappings 261 * Remote control mappings
237 *****************************************************************************/ 262 *****************************************************************************/
@@ -536,6 +561,64 @@ const struct button_mapping button_context_recscreen_h300lcdremote[] = {
536 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 561 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
537}; /* button_context_recscreen_h300lcdremote */ 562}; /* button_context_recscreen_h300lcdremote */
538 563
564const struct button_mapping button_context_keyboard_h100remote[] = {
565 { ACTION_KBD_LEFT, BUTTON_RC_REW, BUTTON_NONE },
566 { ACTION_KBD_LEFT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE },
567 { ACTION_KBD_RIGHT, BUTTON_RC_FF, BUTTON_NONE },
568 { ACTION_KBD_RIGHT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE },
569 { ACTION_KBD_CURSOR_LEFT, BUTTON_RC_ON|BUTTON_RC_REW, BUTTON_NONE },
570 { ACTION_KBD_CURSOR_LEFT, BUTTON_RC_ON|BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE },
571 { ACTION_KBD_CURSOR_RIGHT, BUTTON_RC_ON|BUTTON_RC_FF, BUTTON_NONE },
572 { ACTION_KBD_CURSOR_RIGHT, BUTTON_RC_ON|BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE },
573 { ACTION_KBD_CURSOR_LEFT, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
574 { ACTION_KBD_CURSOR_LEFT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
575 { ACTION_KBD_CURSOR_RIGHT, BUTTON_RC_VOL_UP, BUTTON_NONE },
576 { ACTION_KBD_CURSOR_RIGHT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
577 { ACTION_KBD_SELECT_REM, BUTTON_RC_MENU, BUTTON_NONE },
578 { ACTION_KBD_PAGE_FLIP, BUTTON_RC_MODE, BUTTON_NONE },
579 { ACTION_KBD_DONE, BUTTON_RC_ON|BUTTON_REL, BUTTON_RC_ON },
580 { ACTION_KBD_ABORT, BUTTON_RC_STOP, BUTTON_NONE },
581 { ACTION_KBD_BACKSPACE, BUTTON_RC_REC, BUTTON_NONE },
582 { ACTION_KBD_BACKSPACE, BUTTON_RC_REC|BUTTON_REPEAT, BUTTON_NONE },
583 { ACTION_KBD_UP, BUTTON_RC_SOURCE, BUTTON_NONE },
584 { ACTION_KBD_UP, BUTTON_RC_SOURCE|BUTTON_REPEAT, BUTTON_NONE },
585 { ACTION_KBD_DOWN, BUTTON_RC_BITRATE, BUTTON_NONE },
586 { ACTION_KBD_DOWN, BUTTON_RC_BITRATE|BUTTON_REPEAT, BUTTON_NONE },
587 { ACTION_KBD_MORSE_INPUT, BUTTON_RC_ON|BUTTON_RC_MODE, BUTTON_NONE },
588 { ACTION_KBD_MORSE_SELECT, BUTTON_RC_MENU|BUTTON_REL, BUTTON_NONE },
589
590 LAST_ITEM_IN_LIST
591}; /* button_context_keyboard_h100remote */
592
593const struct button_mapping button_context_keyboard_h300lcdremote[] = {
594 { ACTION_KBD_LEFT, BUTTON_RC_REW, BUTTON_NONE },
595 { ACTION_KBD_LEFT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE },
596 { ACTION_KBD_RIGHT, BUTTON_RC_FF, BUTTON_NONE },
597 { ACTION_KBD_RIGHT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE },
598 { ACTION_KBD_CURSOR_LEFT, BUTTON_RC_MENU|BUTTON_RC_REW, BUTTON_NONE },
599 { ACTION_KBD_CURSOR_LEFT, BUTTON_RC_MENU|BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE },
600 { ACTION_KBD_CURSOR_RIGHT, BUTTON_RC_MENU|BUTTON_RC_FF, BUTTON_NONE },
601 { ACTION_KBD_CURSOR_RIGHT, BUTTON_RC_MENU|BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE },
602 { ACTION_KBD_CURSOR_LEFT, BUTTON_RC_SOURCE, BUTTON_NONE },
603 { ACTION_KBD_CURSOR_LEFT, BUTTON_RC_SOURCE|BUTTON_REPEAT, BUTTON_NONE },
604 { ACTION_KBD_CURSOR_RIGHT, BUTTON_RC_BITRATE, BUTTON_NONE },
605 { ACTION_KBD_CURSOR_RIGHT, BUTTON_RC_BITRATE|BUTTON_REPEAT, BUTTON_NONE },
606 { ACTION_KBD_SELECT_REM, BUTTON_RC_MENU, BUTTON_NONE },
607 { ACTION_KBD_PAGE_FLIP, BUTTON_RC_MODE, BUTTON_NONE },
608 { ACTION_KBD_DONE, BUTTON_RC_ON|BUTTON_REL, BUTTON_RC_ON },
609 { ACTION_KBD_ABORT, BUTTON_RC_STOP, BUTTON_NONE },
610 { ACTION_KBD_BACKSPACE, BUTTON_RC_REC, BUTTON_NONE },
611 { ACTION_KBD_BACKSPACE, BUTTON_RC_REC|BUTTON_REPEAT, BUTTON_NONE },
612 { ACTION_KBD_UP, BUTTON_RC_VOL_UP, BUTTON_NONE },
613 { ACTION_KBD_UP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
614 { ACTION_KBD_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
615 { ACTION_KBD_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
616 { ACTION_KBD_MORSE_INPUT, BUTTON_RC_ON|BUTTON_RC_MODE, BUTTON_NONE },
617 { ACTION_KBD_MORSE_SELECT, BUTTON_RC_MENU|BUTTON_REL, BUTTON_NONE },
618
619 LAST_ITEM_IN_LIST
620}; /* button_context_keyboard_h300lcdremote */
621
539 622
540/* the actual used tables */ 623/* the actual used tables */
541static const struct button_mapping 624static const struct button_mapping
@@ -556,8 +639,10 @@ static const struct button_mapping
556 = button_context_quickscreen_h100remote, 639 = button_context_quickscreen_h100remote,
557 *remote_btn_ctxt_pitchscreen 640 *remote_btn_ctxt_pitchscreen
558 = button_context_pitchscreen_h100remote, 641 = button_context_pitchscreen_h100remote,
559 *remote_button_ctxt_recscreen 642 *remote_btn_ctxt_recscreen
560 = button_context_recscreen_h100remote; 643 = button_context_recscreen_h100remote,
644 *remote_btn_ctxt_keyboard
645 = button_context_keyboard_h100remote;
561 646
562static int _remote_type = 0; 647static int _remote_type = 0;
563 648
@@ -579,7 +664,8 @@ static void remap_remote(void)
579 remote_btn_ctxt_bmark = NULL; 664 remote_btn_ctxt_bmark = NULL;
580 remote_btn_ctxt_quickscreen = NULL; 665 remote_btn_ctxt_quickscreen = NULL;
581 remote_btn_ctxt_pitchscreen = NULL; 666 remote_btn_ctxt_pitchscreen = NULL;
582 remote_button_ctxt_recscreen = NULL; 667 remote_btn_ctxt_recscreen = NULL;
668 remote_btn_ctxt_keyboard = NULL;
583 break; 669 break;
584 670
585 case REMOTETYPE_H100_LCD: 671 case REMOTETYPE_H100_LCD:
@@ -600,8 +686,10 @@ static void remap_remote(void)
600 = button_context_quickscreen_h100remote, 686 = button_context_quickscreen_h100remote,
601 remote_btn_ctxt_pitchscreen 687 remote_btn_ctxt_pitchscreen
602 = button_context_pitchscreen_h100remote, 688 = button_context_pitchscreen_h100remote,
603 remote_button_ctxt_recscreen 689 remote_btn_ctxt_recscreen
604 = button_context_recscreen_h100remote; 690 = button_context_recscreen_h100remote,
691 remote_btn_ctxt_keyboard
692 = button_context_keyboard_h100remote;
605 break; 693 break;
606 694
607 case REMOTETYPE_H300_LCD: 695 case REMOTETYPE_H300_LCD:
@@ -622,8 +710,10 @@ static void remap_remote(void)
622 = button_context_quickscreen_h300lcdremote, 710 = button_context_quickscreen_h300lcdremote,
623 remote_btn_ctxt_pitchscreen 711 remote_btn_ctxt_pitchscreen
624 = button_context_pitchscreen_h300lcdremote, 712 = button_context_pitchscreen_h300lcdremote,
625 remote_button_ctxt_recscreen 713 remote_btn_ctxt_recscreen
626 = button_context_recscreen_h300lcdremote; 714 = button_context_recscreen_h300lcdremote,
715 remote_btn_ctxt_keyboard
716 = button_context_keyboard_h300lcdremote;
627 break; 717 break;
628 718
629 case REMOTETYPE_H300_NONLCD: /* FIXME: add its tables */ 719 case REMOTETYPE_H300_NONLCD: /* FIXME: add its tables */
@@ -644,8 +734,10 @@ static void remap_remote(void)
644 = button_context_quickscreen_h300lcdremote, 734 = button_context_quickscreen_h300lcdremote,
645 remote_btn_ctxt_pitchscreen 735 remote_btn_ctxt_pitchscreen
646 = button_context_pitchscreen_h300lcdremote, 736 = button_context_pitchscreen_h300lcdremote,
647 remote_button_ctxt_recscreen 737 remote_btn_ctxt_recscreen
648 = button_context_recscreen_h300lcdremote; 738 = button_context_recscreen_h300lcdremote,
739 remote_btn_ctxt_keyboard
740 = button_context_keyboard_h300lcdremote;
649#if 0 741#if 0
650 remote_btn_ctxt_std = 742 remote_btn_ctxt_std =
651 remote_btn_ctxt_wps = 743 remote_btn_ctxt_wps =
@@ -659,7 +751,8 @@ static void remap_remote(void)
659 remote_btn_ctxt_bmark = 751 remote_btn_ctxt_bmark =
660 remote_btn_ctxt_quickscreen = 752 remote_btn_ctxt_quickscreen =
661 remote_btn_ctxt_pitchscreen = 753 remote_btn_ctxt_pitchscreen =
662 remote_button_ctxt_recscreen = 754 remote_btn_ctxt_recscreen =
755 remote_btn_ctxt_keyboard =
663#endif 756#endif
664 break; 757 break;
665 758
@@ -707,7 +800,9 @@ const struct button_mapping* get_context_mapping_remote(int context)
707 case CONTEXT_PITCHSCREEN: 800 case CONTEXT_PITCHSCREEN:
708 return remote_btn_ctxt_pitchscreen; 801 return remote_btn_ctxt_pitchscreen;
709 case CONTEXT_RECSCREEN: 802 case CONTEXT_RECSCREEN:
710 return remote_button_ctxt_recscreen; 803 return remote_btn_ctxt_recscreen;
804 case CONTEXT_KEYBOARD:
805 return remote_btn_ctxt_keyboard;
711 } 806 }
712 return remote_btn_ctxt_std; 807 return remote_btn_ctxt_std;
713} 808}
@@ -758,6 +853,8 @@ const struct button_mapping* get_context_mapping(int context)
758 return button_context_pitchscreen; 853 return button_context_pitchscreen;
759 case CONTEXT_RECSCREEN: 854 case CONTEXT_RECSCREEN:
760 return button_context_recscreen; 855 return button_context_recscreen;
856 case CONTEXT_KEYBOARD:
857 return button_context_keyboard;
761 } 858 }
762 return button_context_standard; 859 return button_context_standard;
763} 860}
diff --git a/apps/keymaps/keymap-ifp7xx.c b/apps/keymaps/keymap-ifp7xx.c
index 5ffa71593c..b5d0fd7df0 100644
--- a/apps/keymaps/keymap-ifp7xx.c
+++ b/apps/keymaps/keymap-ifp7xx.c
@@ -134,6 +134,22 @@ const struct button_mapping button_context_pitchscreen[] = {
134 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 134 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
135}; /* button_context_pitchcreen */ 135}; /* button_context_pitchcreen */
136 136
137const struct button_mapping button_context_keyboard[] = {
138 { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
139 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
140 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
141 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
142 { ACTION_KBD_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
143 { ACTION_KBD_DONE, BUTTON_MODE, BUTTON_NONE },
144 { ACTION_KBD_ABORT, BUTTON_PLAY, BUTTON_NONE },
145 { ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
146 { ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
147 { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
148 { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
149
150 LAST_ITEM_IN_LIST
151}; /* button_context_keyboard */
152
137/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */ 153/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
138const struct button_mapping* get_context_mapping(int context) 154const struct button_mapping* get_context_mapping(int context)
139{ 155{
@@ -158,6 +174,8 @@ const struct button_mapping* get_context_mapping(int context)
158 return button_context_quickscreen; 174 return button_context_quickscreen;
159 case CONTEXT_PITCHSCREEN: 175 case CONTEXT_PITCHSCREEN:
160 return button_context_pitchscreen; 176 return button_context_pitchscreen;
177 case CONTEXT_KEYBOARD:
178 return button_context_keyboard;
161 } 179 }
162 return button_context_standard; 180 return button_context_standard;
163} 181}
diff --git a/apps/keymaps/keymap-ipod.c b/apps/keymaps/keymap-ipod.c
index 895691d5bc..b41a91afdf 100644
--- a/apps/keymaps/keymap-ipod.c
+++ b/apps/keymaps/keymap-ipod.c
@@ -146,6 +146,20 @@ const struct button_mapping button_context_pitchscreen[] = {
146 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 146 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
147}; /* button_context_pitchscreen */ 147}; /* button_context_pitchscreen */
148 148
149const struct button_mapping button_context_keyboard[] = {
150 { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
151 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
152 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
153 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
154 { ACTION_KBD_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
155 { ACTION_KBD_DONE, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE },
156 { ACTION_KBD_ABORT, BUTTON_MENU, BUTTON_NONE },
157 { ACTION_KBD_UP, BUTTON_SCROLL_BACK, BUTTON_NONE },
158 { ACTION_KBD_DOWN, BUTTON_SCROLL_FWD, BUTTON_NONE },
159
160 LAST_ITEM_IN_LIST
161}; /* button_context_keyboard */
162
149/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */ 163/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
150const struct button_mapping* get_context_mapping(int context) 164const struct button_mapping* get_context_mapping(int context)
151{ 165{
@@ -180,6 +194,8 @@ const struct button_mapping* get_context_mapping(int context)
180 return button_context_quickscreen; 194 return button_context_quickscreen;
181 case CONTEXT_PITCHSCREEN: 195 case CONTEXT_PITCHSCREEN:
182 return button_context_pitchscreen; 196 return button_context_pitchscreen;
197 case CONTEXT_KEYBOARD:
198 return button_context_keyboard;
183 default: 199 default:
184 return button_context_standard; 200 return button_context_standard;
185 } 201 }
diff --git a/apps/keymaps/keymap-ondio.c b/apps/keymaps/keymap-ondio.c
index 1a1411093e..9af3b12cab 100644
--- a/apps/keymaps/keymap-ondio.c
+++ b/apps/keymaps/keymap-ondio.c
@@ -137,6 +137,22 @@ const struct button_mapping button_context_recscreen[] = {
137 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 137 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
138}; /* button_context_recscreen */ 138}; /* button_context_recscreen */
139 139
140const struct button_mapping button_context_keyboard[] = {
141 { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
142 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
143 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
144 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
145 { ACTION_KBD_SELECT, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
146 { ACTION_KBD_DONE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE },
147 { ACTION_KBD_ABORT, BUTTON_OFF, BUTTON_NONE },
148 { ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
149 { ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
150 { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
151 { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
152
153 LAST_ITEM_IN_LIST
154}; /* button_context_keyboard */
155
140const struct button_mapping* get_context_mapping( int context ) 156const struct button_mapping* get_context_mapping( int context )
141{ 157{
142 switch( context ) 158 switch( context )
@@ -165,7 +181,9 @@ const struct button_mapping* get_context_mapping( int context )
165 return button_context_tree; 181 return button_context_tree;
166 case CONTEXT_RECSCREEN: 182 case CONTEXT_RECSCREEN:
167 return button_context_recscreen; 183 return button_context_recscreen;
168 184 case CONTEXT_KEYBOARD:
185 return button_context_keyboard;
186
169 case CONTEXT_LIST: 187 case CONTEXT_LIST:
170 case CONTEXT_MAINMENU: 188 case CONTEXT_MAINMENU:
171 default: 189 default:
diff --git a/apps/keymaps/keymap-recorder.c b/apps/keymaps/keymap-recorder.c
index 01a6a0df11..4fb278db6e 100644
--- a/apps/keymaps/keymap-recorder.c
+++ b/apps/keymaps/keymap-recorder.c
@@ -161,6 +161,29 @@ const struct button_mapping button_context_recscreen[] = {
161 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 161 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
162}; /* button_context_recscreen */ 162}; /* button_context_recscreen */
163 163
164const struct button_mapping button_context_keyboard[] = {
165 { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
166 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
167 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
168 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
169 { ACTION_KBD_CURSOR_LEFT, BUTTON_ON|BUTTON_LEFT, BUTTON_NONE },
170 { ACTION_KBD_CURSOR_LEFT, BUTTON_ON|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
171 { ACTION_KBD_CURSOR_RIGHT, BUTTON_ON|BUTTON_RIGHT, BUTTON_NONE },
172 { ACTION_KBD_CURSOR_RIGHT, BUTTON_ON|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
173 { ACTION_KBD_SELECT, BUTTON_PLAY, BUTTON_NONE },
174 { ACTION_KBD_PAGE_FLIP, BUTTON_F1, BUTTON_NONE },
175 { ACTION_KBD_DONE, BUTTON_F2, BUTTON_NONE },
176 { ACTION_KBD_ABORT, BUTTON_OFF, BUTTON_NONE },
177 { ACTION_KBD_BACKSPACE, BUTTON_F3, BUTTON_NONE },
178 { ACTION_KBD_BACKSPACE, BUTTON_F3|BUTTON_REPEAT, BUTTON_NONE },
179 { ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
180 { ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
181 { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
182 { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
183
184 LAST_ITEM_IN_LIST
185}; /* button_context_keyboard */
186
164/***************************************************************************** 187/*****************************************************************************
165 * Remote control mappings 188 * Remote control mappings
166 *****************************************************************************/ 189 *****************************************************************************/
@@ -232,6 +255,8 @@ const struct button_mapping* get_context_mapping( int context )
232 255
233 case CONTEXT_RECSCREEN: 256 case CONTEXT_RECSCREEN:
234 return button_context_recscreen; 257 return button_context_recscreen;
258 case CONTEXT_KEYBOARD:
259 return button_context_keyboard;
235 260
236 case CONTEXT_STD: 261 case CONTEXT_STD:
237 case CONTEXT_LIST: 262 case CONTEXT_LIST:
diff --git a/apps/keymaps/keymap-x5.c b/apps/keymaps/keymap-x5.c
index cb5de5b0f2..603f9c7568 100644
--- a/apps/keymaps/keymap-x5.c
+++ b/apps/keymaps/keymap-x5.c
@@ -216,6 +216,22 @@ const struct button_mapping button_context_recscreen[] = {
216 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 216 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
217}; /* button_context_recscreen */ 217}; /* button_context_recscreen */
218 218
219const struct button_mapping button_context_keyboard[] = {
220 { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
221 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
222 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
223 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
224 { ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
225 { ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
226 { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
227 { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
228 { ACTION_KBD_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
229 { ACTION_KBD_DONE, BUTTON_PLAY, BUTTON_NONE },
230 { ACTION_KBD_ABORT, BUTTON_REC, BUTTON_NONE },
231
232
233 LAST_ITEM_IN_LIST
234}; /* button_context_keyboard */
219 235
220static const struct button_mapping* get_context_mapping_remote( int context ) 236static const struct button_mapping* get_context_mapping_remote( int context )
221{ 237{
@@ -271,6 +287,9 @@ const struct button_mapping* get_context_mapping( int context )
271 return button_context_pitchscreen; 287 return button_context_pitchscreen;
272 case CONTEXT_RECSCREEN: 288 case CONTEXT_RECSCREEN:
273 return button_context_recscreen; 289 return button_context_recscreen;
290 case CONTEXT_KEYBOARD:
291 return button_context_keyboard;
292
274 case CONTEXT_LIST: 293 case CONTEXT_LIST:
275 case CONTEXT_MAINMENU: 294 case CONTEXT_MAINMENU:
276 default: 295 default:
diff --git a/apps/recorder/keyboard.c b/apps/recorder/keyboard.c
index 8f35b12d4b..8e82ab58f9 100644
--- a/apps/recorder/keyboard.c
+++ b/apps/recorder/keyboard.c
@@ -36,6 +36,7 @@
36#include "icons.h" 36#include "icons.h"
37#include "file.h" 37#include "file.h"
38#include "hangul.h" 38#include "hangul.h"
39#include "action.h"
39 40
40#ifndef O_BINARY 41#ifndef O_BINARY
41#define O_BINARY 0 42#define O_BINARY 0
@@ -52,143 +53,22 @@
52 53
53#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ 54#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
54 (CONFIG_KEYPAD == IRIVER_H300_PAD) 55 (CONFIG_KEYPAD == IRIVER_H300_PAD)
55#define KBD_CURSOR_RIGHT (BUTTON_ON | BUTTON_RIGHT) 56#define KBD_MORSE_INPUT /* I-Rivers have a Morse input mode */
56#define KBD_CURSOR_LEFT (BUTTON_ON | BUTTON_LEFT)
57#define KBD_SELECT BUTTON_SELECT
58#define KBD_PAGE_FLIP BUTTON_MODE /* unused */
59#define KBD_DONE_PRE BUTTON_ON
60#define KBD_DONE (BUTTON_ON | BUTTON_REL)
61#define KBD_ABORT BUTTON_OFF
62#define KBD_BACKSPACE BUTTON_REC
63#define KBD_LEFT BUTTON_LEFT
64#define KBD_RIGHT BUTTON_RIGHT
65#define KBD_UP BUTTON_UP
66#define KBD_DOWN BUTTON_DOWN
67#define KBD_MORSE_INPUT (BUTTON_ON | BUTTON_MODE)
68#define KBD_RC_CURSOR_RIGHT (BUTTON_RC_ON | BUTTON_RC_FF)
69#define KBD_RC_CURSOR_LEFT (BUTTON_RC_ON | BUTTON_RC_REW)
70#define KBD_RC_SELECT BUTTON_RC_MENU
71#define KBD_RC_PAGE_FLIP BUTTON_RC_MODE
72#define KBD_RC_DONE_PRE BUTTON_RC_ON
73#define KBD_RC_DONE (BUTTON_RC_ON | BUTTON_REL)
74#define KBD_RC_ABORT BUTTON_RC_STOP
75#define KBD_RC_BACKSPACE BUTTON_RC_REC
76#define KBD_RC_LEFT BUTTON_RC_REW
77#define KBD_RC_RIGHT BUTTON_RC_FF
78#define KBD_RC_UP BUTTON_RC_SOURCE
79#define KBD_RC_DOWN BUTTON_RC_BITRATE
80#define KBD_RC_MORSE_INPUT (BUTTON_RC_ON | BUTTON_RC_MODE)
81
82#elif CONFIG_KEYPAD == RECORDER_PAD
83#define KBD_CURSOR_RIGHT (BUTTON_ON | BUTTON_RIGHT)
84#define KBD_CURSOR_LEFT (BUTTON_ON | BUTTON_LEFT)
85#define KBD_SELECT BUTTON_PLAY
86#define KBD_PAGE_FLIP BUTTON_F1
87#define KBD_DONE BUTTON_F2
88#define KBD_ABORT BUTTON_OFF
89#define KBD_BACKSPACE BUTTON_F3
90#define KBD_LEFT BUTTON_LEFT
91#define KBD_RIGHT BUTTON_RIGHT
92#define KBD_UP BUTTON_UP
93#define KBD_DOWN BUTTON_DOWN
94 57
95#elif CONFIG_KEYPAD == ONDIO_PAD /* restricted Ondio keypad */ 58#elif CONFIG_KEYPAD == ONDIO_PAD /* restricted Ondio keypad */
96#define KBD_MODES /* Ondio uses 2 modes, picker and line edit */ 59#define KBD_MODES /* Ondio uses 2 modes, picker and line edit */
97#define KBD_SELECT (BUTTON_MENU | BUTTON_REL) /* backspace in line edit */
98#define KBD_SELECT_PRE BUTTON_MENU
99#define KBD_DONE_PRE BUTTON_MENU
100#define KBD_DONE (BUTTON_MENU | BUTTON_REPEAT)
101#define KBD_ABORT BUTTON_OFF
102#define KBD_LEFT BUTTON_LEFT
103#define KBD_RIGHT BUTTON_RIGHT
104#define KBD_UP BUTTON_UP
105#define KBD_DOWN BUTTON_DOWN
106
107#elif CONFIG_KEYPAD == GMINI100_PAD
108#define KBD_CURSOR_RIGHT (BUTTON_MENU | BUTTON_RIGHT)
109#define KBD_CURSOR_LEFT (BUTTON_MENU | BUTTON_LEFT)
110#define KBD_SELECT (BUTTON_PLAY | BUTTON_REL)
111#define KBD_SELECT_PRE BUTTON_PLAY
112#define KBD_PAGE_FLIP BUTTON_ON
113#define KBD_DONE_PRE BUTTON_PLAY
114#define KBD_DONE (BUTTON_PLAY | BUTTON_REPEAT)
115#define KBD_ABORT BUTTON_OFF
116#define KBD_BACKSPACE (BUTTON_MENU | BUTTON_PLAY)
117#define KBD_LEFT BUTTON_LEFT
118#define KBD_RIGHT BUTTON_RIGHT
119#define KBD_UP BUTTON_UP
120#define KBD_DOWN BUTTON_DOWN
121 60
122#elif (CONFIG_KEYPAD == IPOD_3G_PAD) || (CONFIG_KEYPAD == IPOD_4G_PAD) 61#elif (CONFIG_KEYPAD == IPOD_3G_PAD) || (CONFIG_KEYPAD == IPOD_4G_PAD)
123
124#define KBD_MODES /* iPod uses 2 modes, picker and line edit */ 62#define KBD_MODES /* iPod uses 2 modes, picker and line edit */
125#define KBD_SELECT (BUTTON_SELECT | BUTTON_REL) /* backspace in line edit */
126#define KBD_SELECT_PRE BUTTON_SELECT
127#define KBD_DONE_PRE BUTTON_SELECT
128#define KBD_DONE (BUTTON_SELECT | BUTTON_REPEAT)
129#define KBD_ABORT BUTTON_MENU
130#define KBD_LEFT BUTTON_LEFT
131#define KBD_RIGHT BUTTON_RIGHT
132#define KBD_UP BUTTON_SCROLL_BACK
133#define KBD_DOWN BUTTON_SCROLL_FWD
134 63
135#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD 64#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
136
137/* TODO: Check keyboard mappings */
138
139#define KBD_MODES /* iFP7xx uses 2 modes, picker and line edit */ 65#define KBD_MODES /* iFP7xx uses 2 modes, picker and line edit */
140#define KBD_SELECT (BUTTON_SELECT | BUTTON_REL) /* backspace in line edit */
141#define KBD_SELECT_PRE BUTTON_SELECT
142#define KBD_DONE BUTTON_MODE
143#define KBD_ABORT BUTTON_PLAY
144#define KBD_LEFT BUTTON_LEFT
145#define KBD_RIGHT BUTTON_RIGHT
146#define KBD_UP BUTTON_UP
147#define KBD_DOWN BUTTON_DOWN
148 66
149#elif CONFIG_KEYPAD == IAUDIO_X5_PAD 67#elif CONFIG_KEYPAD == IAUDIO_X5_PAD
150
151/* TODO: Check keyboard mappings */
152
153#define KBD_MODES /* iAudio X5 uses 2 modes, picker and line edit */ 68#define KBD_MODES /* iAudio X5 uses 2 modes, picker and line edit */
154#define KBD_SELECT (BUTTON_SELECT | BUTTON_REL) /* backspace in line edit */
155#define KBD_SELECT_PRE BUTTON_SELECT
156#define KBD_DONE BUTTON_PLAY
157#define KBD_ABORT BUTTON_REC
158#define KBD_LEFT BUTTON_LEFT
159#define KBD_RIGHT BUTTON_RIGHT
160#define KBD_UP BUTTON_UP
161#define KBD_DOWN BUTTON_DOWN
162
163#elif CONFIG_KEYPAD == GIGABEAT_PAD
164
165#define KBD_CURSOR_RIGHT (BUTTON_POWER | BUTTON_RIGHT)
166#define KBD_CURSOR_LEFT (BUTTON_POWER | BUTTON_LEFT)
167#define KBD_SELECT BUTTON_SELECT
168#define KBD_PAGE_FLIP (BUTTON_POWER | BUTTON_MENU)
169#define KBD_DONE_PRE BUTTON_POWER
170#define KBD_DONE (BUTTON_POWER | BUTTON_REL)
171#define KBD_ABORT BUTTON_A
172#define KBD_BACKSPACE BUTTON_MENU
173#define KBD_LEFT BUTTON_LEFT
174#define KBD_RIGHT BUTTON_RIGHT
175#define KBD_UP BUTTON_UP
176#define KBD_DOWN BUTTON_DOWN
177 69
178#elif CONFIG_KEYPAD == IRIVER_H10_PAD 70#elif CONFIG_KEYPAD == IRIVER_H10_PAD
179
180/* TODO: Check keyboard mappings */
181
182#define KBD_MODES /* iriver H10 uses 2 modes, picker and line edit */ 71#define KBD_MODES /* iriver H10 uses 2 modes, picker and line edit */
183#define KBD_SELECT (BUTTON_REW | BUTTON_REL) /* backspace in line edit */
184#define KBD_SELECT_PRE BUTTON_REW
185#define KBD_DONE BUTTON_PLAY
186#define KBD_ABORT BUTTON_FF
187#define KBD_LEFT BUTTON_LEFT
188#define KBD_RIGHT BUTTON_RIGHT
189#define KBD_UP BUTTON_SCROLL_UP
190#define KBD_DOWN BUTTON_SCROLL_DOWN
191
192#endif 72#endif
193 73
194struct keyboard_parameters { 74struct keyboard_parameters {
@@ -694,30 +574,21 @@ int kbd_input(char* text, int buflen)
694 FOR_NB_SCREENS(l) 574 FOR_NB_SCREENS(l)
695 screens[l].update(); 575 screens[l].update();
696 576
697 button = button_get_w_tmo(HZ/2); 577 button = get_action(CONTEXT_KEYBOARD,HZ/2);
698#ifdef KBD_MORSE_INPUT 578#ifdef KBD_MORSE_INPUT
699 if (morse_mode) 579 if (morse_mode)
700 { 580 {
701 /* Remap some buttons for morse mode. */ 581 /* Remap some buttons for morse mode. */
702 if (button == KBD_LEFT || button == (KBD_LEFT | BUTTON_REPEAT)) 582 if (button == ACTION_KBD_LEFT)
703 button = KBD_CURSOR_LEFT; 583 button = ACTION_KBD_CURSOR_LEFT;
704 if (button == KBD_RIGHT || button == (KBD_RIGHT | BUTTON_REPEAT)) 584 if (button == ACTION_KBD_RIGHT)
705 button = KBD_CURSOR_RIGHT; 585 button = ACTION_KBD_CURSOR_RIGHT;
706#ifdef KBD_RC_LEFT
707 if (button == KBD_RC_LEFT || button == (KBD_RC_LEFT | BUTTON_REPEAT))
708 button = KBD_RC_CURSOR_LEFT;
709 if (button == KBD_RC_RIGHT || button == (KBD_RC_RIGHT | BUTTON_REPEAT))
710 button = KBD_RC_CURSOR_RIGHT;
711 } 586 }
712#endif 587#endif
713#endif
714 588
715 switch ( button ) { 589 switch ( button ) {
716 590
717#ifdef KBD_RC_ABORT 591 case ACTION_KBD_ABORT:
718 case KBD_RC_ABORT:
719#endif
720 case KBD_ABORT:
721 FOR_NB_SCREENS(l) 592 FOR_NB_SCREENS(l)
722 screens[l].setfont(FONT_UI); 593 screens[l].setfont(FONT_UI);
723 594
@@ -727,11 +598,7 @@ int kbd_input(char* text, int buflen)
727 return -1; 598 return -1;
728 break; 599 break;
729 600
730#if defined(KBD_PAGE_FLIP) 601 case ACTION_KBD_PAGE_FLIP:
731 case KBD_PAGE_FLIP:
732#ifdef KBD_RC_PAGE_FLIP
733 case KBD_RC_PAGE_FLIP:
734#endif
735#ifdef KBD_MORSE_INPUT 602#ifdef KBD_MORSE_INPUT
736 if (morse_mode) 603 if (morse_mode)
737 break; 604 break;
@@ -745,13 +612,10 @@ int kbd_input(char* text, int buflen)
745 kbd_spellchar(param[l].kbd_buf[k]); 612 kbd_spellchar(param[l].kbd_buf[k]);
746 } 613 }
747 break; 614 break;
748#endif
749 615
750#ifdef KBD_MORSE_INPUT 616#ifdef KBD_MORSE_INPUT
751 case KBD_MORSE_INPUT: 617 case ACTION_KBD_MORSE_INPUT:
752#ifdef KBD_RC_MORSE_INPUT 618
753 case KBD_RC_MORSE_INPUT:
754#endif
755 morse_mode = !morse_mode; 619 morse_mode = !morse_mode;
756 FOR_NB_SCREENS(l) 620 FOR_NB_SCREENS(l)
757 { 621 {
@@ -765,12 +629,8 @@ int kbd_input(char* text, int buflen)
765 /* FIXME: We should talk something like Morse mode.. */ 629 /* FIXME: We should talk something like Morse mode.. */
766 break; 630 break;
767#endif 631#endif
768#ifdef KBD_RC_RIGHT 632
769 case KBD_RC_RIGHT: 633 case ACTION_KBD_RIGHT:
770 case KBD_RC_RIGHT | BUTTON_REPEAT:
771#endif
772 case KBD_RIGHT:
773 case KBD_RIGHT | BUTTON_REPEAT:
774#ifdef KBD_MORSE_INPUT 634#ifdef KBD_MORSE_INPUT
775 if (morse_mode) 635 if (morse_mode)
776 break; 636 break;
@@ -806,12 +666,8 @@ int kbd_input(char* text, int buflen)
806 } 666 }
807 } 667 }
808 break; 668 break;
809#ifdef KBD_RC_LEFT 669
810 case KBD_RC_LEFT: 670 case ACTION_KBD_LEFT:
811 case KBD_RC_LEFT | BUTTON_REPEAT:
812#endif
813 case KBD_LEFT:
814 case KBD_LEFT | BUTTON_REPEAT:
815#ifdef KBD_MORSE_INPUT 671#ifdef KBD_MORSE_INPUT
816 if (morse_mode) 672 if (morse_mode)
817 break; 673 break;
@@ -852,12 +708,7 @@ int kbd_input(char* text, int buflen)
852 } 708 }
853 break; 709 break;
854 710
855#ifdef KBD_RC_DOWN 711 case ACTION_KBD_DOWN:
856 case KBD_RC_DOWN:
857 case KBD_RC_DOWN | BUTTON_REPEAT:
858#endif
859 case KBD_DOWN:
860 case KBD_DOWN | BUTTON_REPEAT:
861#ifdef KBD_MORSE_INPUT 712#ifdef KBD_MORSE_INPUT
862 if (morse_mode) 713 if (morse_mode)
863 break; 714 break;
@@ -895,12 +746,7 @@ int kbd_input(char* text, int buflen)
895 } 746 }
896 break; 747 break;
897 748
898#ifdef KBD_RC_UP 749 case ACTION_KBD_UP:
899 case KBD_RC_UP:
900 case KBD_RC_UP | BUTTON_REPEAT:
901#endif
902 case KBD_UP:
903 case KBD_UP | BUTTON_REPEAT:
904#ifdef KBD_MORSE_INPUT 750#ifdef KBD_MORSE_INPUT
905 if (morse_mode) 751 if (morse_mode)
906 break; 752 break;
@@ -938,27 +784,13 @@ int kbd_input(char* text, int buflen)
938 } 784 }
939 break; 785 break;
940 786
941#ifdef KBD_RC_DONE 787 case ACTION_KBD_DONE:
942 case KBD_RC_DONE:
943#endif
944 case KBD_DONE:
945 /* accepts what was entered and continues */ 788 /* accepts what was entered and continues */
946#ifdef KBD_DONE_PRE
947 if ((lastbutton != KBD_DONE_PRE)
948#ifdef KBD_RC_DONE_PRE
949 && (lastbutton != KBD_RC_DONE_PRE)
950#endif
951 )
952 break;
953#endif
954 done = true; 789 done = true;
955 break; 790 break;
956 791
957#ifdef KBD_MORSE_INPUT 792#ifdef KBD_MORSE_INPUT
958#ifdef KBD_RC_SELECT 793 case ACTION_KBD_MORSE_SELECT:
959 case KBD_RC_SELECT | BUTTON_REL:
960#endif
961 case KBD_SELECT | BUTTON_REL:
962 if (morse_mode && morse_reading) 794 if (morse_mode && morse_reading)
963 { 795 {
964 morse_code <<= 1; 796 morse_code <<= 1;
@@ -969,15 +801,11 @@ int kbd_input(char* text, int buflen)
969 break; 801 break;
970#endif 802#endif
971 803
972#ifdef KBD_RC_SELECT 804 case ACTION_KBD_SELECT:
973 case KBD_RC_SELECT: 805 case ACTION_KBD_SELECT_REM:
974 806 if (button == ACTION_KBD_SELECT_REM)
975 if (button == KBD_RC_SELECT)
976 char_screen = 1; 807 char_screen = 1;
977#endif 808 else
978 case KBD_SELECT:
979
980 if (button == KBD_SELECT)
981 char_screen = 0; 809 char_screen = 0;
982#ifdef KBD_MORSE_INPUT 810#ifdef KBD_MORSE_INPUT
983 if (morse_mode) 811 if (morse_mode)
@@ -993,14 +821,6 @@ int kbd_input(char* text, int buflen)
993#endif 821#endif
994 822
995 /* inserts the selected char */ 823 /* inserts the selected char */
996#ifdef KBD_SELECT_PRE
997 if ((lastbutton != KBD_SELECT_PRE)
998#ifdef KBD_RC_SELECT_PRE
999 && (lastbutton != KBD_RC_SELECT_PRE)
1000#endif
1001 )
1002 break;
1003#endif
1004#ifdef KBD_MODES 824#ifdef KBD_MODES
1005 if (line_edit) { /* select doubles as backspace in line_edit */ 825 if (line_edit) { /* select doubles as backspace in line_edit */
1006 if (hangul) { 826 if (hangul) {
@@ -1088,12 +908,7 @@ int kbd_input(char* text, int buflen)
1088 break; 908 break;
1089 909
1090#ifndef KBD_MODES 910#ifndef KBD_MODES
1091#ifdef KBD_RC_BACKSPACE 911 case ACTION_KBD_BACKSPACE:
1092 case KBD_RC_BACKSPACE:
1093 case KBD_RC_BACKSPACE | BUTTON_REPEAT:
1094#endif
1095 case KBD_BACKSPACE:
1096 case KBD_BACKSPACE | BUTTON_REPEAT:
1097 if (hangul) 912 if (hangul)
1098 { 913 {
1099 if (htail) 914 if (htail)
@@ -1116,12 +931,8 @@ int kbd_input(char* text, int buflen)
1116 talk_spell(text, false); /* speak revised text */ 931 talk_spell(text, false); /* speak revised text */
1117 break; 932 break;
1118 933
1119#ifdef KBD_RC_CURSOR_RIGHT 934 case ACTION_KBD_CURSOR_RIGHT:
1120 case KBD_RC_CURSOR_RIGHT: 935
1121 case KBD_RC_CURSOR_RIGHT | BUTTON_REPEAT:
1122#endif
1123 case KBD_CURSOR_RIGHT:
1124 case KBD_CURSOR_RIGHT | BUTTON_REPEAT:
1125 if (hangul) 936 if (hangul)
1126 hangul = false; 937 hangul = false;
1127 938
@@ -1133,12 +944,8 @@ int kbd_input(char* text, int buflen)
1133 } 944 }
1134 break; 945 break;
1135 946
1136#ifdef KBD_RC_CURSOR_LEFT 947 case ACTION_KBD_CURSOR_LEFT:
1137 case KBD_RC_CURSOR_LEFT: 948
1138 case KBD_RC_CURSOR_LEFT | BUTTON_REPEAT:
1139#endif
1140 case KBD_CURSOR_LEFT:
1141 case KBD_CURSOR_LEFT | BUTTON_REPEAT:
1142 if (hangul) 949 if (hangul)
1143 hangul = false; 950 hangul = false;
1144 if (editpos) 951 if (editpos)