1
0
Fork 0
forked from len0rd/rockbox

mapping for the Ondio, keyboard is enabled now.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5322 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jörg Hohensohn 2004-10-22 17:00:30 +00:00
parent 2afdf95401
commit 705ad51035

View file

@ -33,7 +33,27 @@
#define KEYBOARD_LINES 4 #define KEYBOARD_LINES 4
#define KEYBOARD_PAGES 3 #define KEYBOARD_PAGES 3
#if CONFIG_KEYPAD == RECORDER_PAD #if CONFIG_KEYPAD == RECORDER_PAD
#define KBD_CURSOR_RIGHT (BUTTON_ON | BUTTON_RIGHT)
#define KBD_CURSOR_LEFT (BUTTON_ON | BUTTON_LEFT)
#define KBD_SELECT BUTTON_PLAY
#define KBD_PAGE_FLIP BUTTON_F1
#define KBD_DONE BUTTON_F2
#define KBD_ABORT BUTTON_OFF
#define KBD_BACKSPACE BUTTON_F3
#elif CONFIG_KEYPAD == ONDIO_PAD /* restricted Ondio keypad */
#define KBD_CURSOR_RIGHT (BUTTON_MENU | BUTTON_RIGHT)
#define KBD_CURSOR_LEFT (BUTTON_MENU | BUTTON_LEFT)
#define KBD_SELECT (BUTTON_MENU | BUTTON_REL)
#define KBD_SELECT_PRE BUTTON_MENU
#define KBD_PAGE_FLIP (BUTTON_MENU | BUTTON_UP)
#define KBD_DONE (BUTTON_OFF | BUTTON_REL)
#define KBD_ABORT (BUTTON_OFF | BUTTON_REPEAT)
#define KBD_BACKSPACE (BUTTON_MENU | BUTTON_DOWN)
#endif
static void kbd_setupkeys(const char* line[KEYBOARD_LINES], int page) static void kbd_setupkeys(const char* line[KEYBOARD_LINES], int page)
{ {
switch (page) { switch (page) {
@ -59,7 +79,6 @@ static void kbd_setupkeys(const char* line[KEYBOARD_LINES], int page)
break; break;
} }
} }
#endif
/* helper function to spell a char if voice UI is enabled */ /* helper function to spell a char if voice UI is enabled */
void kbd_spellchar(char c) void kbd_spellchar(char c)
@ -77,12 +96,6 @@ void kbd_spellchar(char c)
int kbd_input(char* text, int buflen) int kbd_input(char* text, int buflen)
{ {
#if CONFIG_KEYPAD != RECORDER_PAD
(void)text;
(void)buflen;
splash(HZ*2, true, "Keyboard not implemented yet");
return 0;
#else
bool done = false; bool done = false;
int page = 0; int page = 0;
@ -98,7 +111,7 @@ int kbd_input(char* text, int buflen)
char outline[256]; char outline[256];
char c = 0; char c = 0;
struct font* font = font_get(FONT_SYSFIXED); struct font* font = font_get(FONT_SYSFIXED);
int button; int button, lastbutton = 0;
lcd_setfont(FONT_SYSFIXED); lcd_setfont(FONT_SYSFIXED);
font_w = font->maxwidth; font_w = font->maxwidth;
@ -189,10 +202,11 @@ int kbd_input(char* text, int buflen)
/* cursor */ /* cursor */
lcd_drawline(curpos, main_y, curpos, main_y + font_h); lcd_drawline(curpos, main_y, curpos, main_y + font_h);
#if CONFIG_KEYPAD == RECORDER_PAD
/* draw the status bar */ /* draw the status bar */
buttonbar_set("Shift", "OK", "Del"); buttonbar_set("Shift", "OK", "Del");
buttonbar_draw(); buttonbar_draw();
#endif
/* highlight the key that has focus */ /* highlight the key that has focus */
lcd_invertrect(font_w * x, 8 + font_h * y, font_w, font_h); lcd_invertrect(font_w * x, 8 + font_h * y, font_w, font_h);
@ -207,14 +221,12 @@ int kbd_input(char* text, int buflen)
button = button_get_w_tmo(HZ/2); button = button_get_w_tmo(HZ/2);
switch ( button ) { switch ( button ) {
case BUTTON_OFF: case KBD_ABORT:
/* abort */
lcd_setfont(FONT_UI); lcd_setfont(FONT_UI);
return -1; return -1;
break; break;
case BUTTON_F1: case KBD_PAGE_FLIP:
/* Page */
if (++page == KEYBOARD_PAGES) if (++page == KEYBOARD_PAGES)
page = 0; page = 0;
kbd_setupkeys(line, page); kbd_setupkeys(line, page);
@ -257,9 +269,8 @@ int kbd_input(char* text, int buflen)
kbd_spellchar(line[y][x]); kbd_spellchar(line[y][x]);
break; break;
case BUTTON_F3: case KBD_BACKSPACE:
case BUTTON_F3 | BUTTON_REPEAT: case KBD_BACKSPACE | BUTTON_REPEAT:
/* backspace */
if (editpos > 0) if (editpos > 0)
{ {
for (i = editpos; i <= (len - 1);i++) for (i = editpos; i <= (len - 1);i++)
@ -273,13 +284,17 @@ int kbd_input(char* text, int buflen)
} }
break; break;
case BUTTON_F2: case KBD_DONE:
/* F2 accepts what was entered and continues */ /* accepts what was entered and continues */
done = true; done = true;
break; break;
case BUTTON_PLAY: case KBD_SELECT:
/* PLAY inserts the selected char */ /* inserts the selected char */
#ifdef KBD_SELECT_PRE
if (lastbutton != KBD_SELECT_PRE)
break;
#endif
if (len<buflen) if (len<buflen)
{ {
c = line[y][x]; c = line[y][x];
@ -300,9 +315,8 @@ int kbd_input(char* text, int buflen)
talk_spell(text, false); /* speak revised text */ talk_spell(text, false); /* speak revised text */
break; break;
case BUTTON_ON | BUTTON_RIGHT: case KBD_CURSOR_RIGHT:
case BUTTON_ON | BUTTON_RIGHT | BUTTON_REPEAT: case KBD_CURSOR_RIGHT | BUTTON_REPEAT:
/* moved cursor right */
editpos++; editpos++;
if (editpos > len) if (editpos > len)
editpos = len; editpos = len;
@ -310,9 +324,8 @@ int kbd_input(char* text, int buflen)
kbd_spellchar(text[editpos]); kbd_spellchar(text[editpos]);
break; break;
case BUTTON_ON | BUTTON_LEFT: case KBD_CURSOR_LEFT:
case BUTTON_ON | BUTTON_LEFT | BUTTON_REPEAT: case KBD_CURSOR_LEFT | BUTTON_REPEAT:
/* moved cursor left */
editpos--; editpos--;
if (editpos < 0) if (editpos < 0)
editpos = 0; editpos = 0;
@ -331,9 +344,10 @@ int kbd_input(char* text, int buflen)
break; break;
} }
if (button != BUTTON_NONE)
lastbutton = button;
} }
lcd_setfont(FONT_UI); lcd_setfont(FONT_UI);
return 0; return 0;
#endif /* ONDIO */
} }