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:
parent
2afdf95401
commit
705ad51035
1 changed files with 41 additions and 27 deletions
|
@ -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 */
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue