forked from len0rd/rockbox
Patch #1316533 by Alexander Spyridakis: All characters on one virtual keyboard page for targets with large LCD.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7597 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
a0b439c169
commit
13fcd68285
1 changed files with 36 additions and 9 deletions
|
|
@ -31,16 +31,25 @@
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
|
||||||
|
#define KEYBOARD_MARGIN 3
|
||||||
|
|
||||||
|
#if (LCD_WIDTH >= 160) && (LCD_HEIGHT >= 96)
|
||||||
|
#define KEYBOARD_LINES 8
|
||||||
|
#define KEYBOARD_PAGES 1
|
||||||
|
|
||||||
|
#else
|
||||||
#define KEYBOARD_LINES 4
|
#define KEYBOARD_LINES 4
|
||||||
#define KEYBOARD_PAGES 3
|
#define KEYBOARD_PAGES 3
|
||||||
#define KEYBOARD_MARGIN 3
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
|
#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
|
||||||
(CONFIG_KEYPAD == IRIVER_H300_PAD)
|
(CONFIG_KEYPAD == IRIVER_H300_PAD)
|
||||||
#define KBD_CURSOR_RIGHT (BUTTON_ON | BUTTON_RIGHT)
|
#define KBD_CURSOR_RIGHT (BUTTON_ON | BUTTON_RIGHT)
|
||||||
#define KBD_CURSOR_LEFT (BUTTON_ON | BUTTON_LEFT)
|
#define KBD_CURSOR_LEFT (BUTTON_ON | BUTTON_LEFT)
|
||||||
#define KBD_SELECT BUTTON_SELECT
|
#define KBD_SELECT BUTTON_SELECT
|
||||||
#define KBD_PAGE_FLIP BUTTON_MODE
|
#define KBD_PAGE_FLIP BUTTON_MODE /* unused */
|
||||||
#define KBD_DONE_PRE BUTTON_ON
|
#define KBD_DONE_PRE BUTTON_ON
|
||||||
#define KBD_DONE (BUTTON_ON | BUTTON_REL)
|
#define KBD_DONE (BUTTON_ON | BUTTON_REL)
|
||||||
#define KBD_ABORT BUTTON_OFF
|
#define KBD_ABORT BUTTON_OFF
|
||||||
|
|
@ -74,10 +83,23 @@
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if KEYBOARD_PAGES == 1
|
||||||
|
static const char * const kbdpages[KEYBOARD_PAGES][KEYBOARD_LINES] = {
|
||||||
|
{ "ABCDEFG abcdefg !?\" @#$%+'",
|
||||||
|
"HIJKLMN hijklmn 789 &_()-`",
|
||||||
|
"OPQRSTU opqrstu 456 §|{}/<",
|
||||||
|
"VWXYZ., vwxyz.,0123 ~=[]*>",
|
||||||
|
"ÀÁÂÃÄÅÆ ÌÍÎÏ ÈÉÊË ¢£¤¥¦§©®",
|
||||||
|
"àáâãäåæ ìíîï èéêë «»°ºª¹²³",
|
||||||
|
"ÓÒÔÕÖØ ÇÐÞÝß ÙÚÛÜ ¯±×÷¡¿µ·",
|
||||||
|
"òóôõöø çðþýÿ ùúûü ¼½¾¬¶¨ " },
|
||||||
|
};
|
||||||
|
|
||||||
|
#else
|
||||||
static const char * const kbdpages[KEYBOARD_PAGES][KEYBOARD_LINES] = {
|
static const char * const kbdpages[KEYBOARD_PAGES][KEYBOARD_LINES] = {
|
||||||
{ "ABCDEFG !?\" @#$%+'",
|
{ "ABCDEFG !?\" @#$%+'",
|
||||||
"HIJKLMN 789 &_()-`",
|
"HIJKLMN 789 &_()-`",
|
||||||
"OPQRSTU 456 §|{}/<",
|
"OPQRSTU 456 §|{}/<",
|
||||||
"VWXYZ.,0123 ~=[]*>" },
|
"VWXYZ.,0123 ~=[]*>" },
|
||||||
|
|
||||||
{ "abcdefg ¢£¤¥¦§©®¬",
|
{ "abcdefg ¢£¤¥¦§©®¬",
|
||||||
|
|
@ -91,6 +113,8 @@ static const char * const kbdpages[KEYBOARD_PAGES][KEYBOARD_LINES] = {
|
||||||
"òóôõöø çðþýÿ ùúûü" },
|
"òóôõöø çðþýÿ ùúûü" },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
/* helper function to spell a char if voice UI is enabled */
|
/* helper function to spell a char if voice UI is enabled */
|
||||||
static void kbd_spellchar(char c)
|
static void kbd_spellchar(char c)
|
||||||
{
|
{
|
||||||
|
|
@ -105,9 +129,10 @@ static void kbd_spellchar(char c)
|
||||||
|
|
||||||
int kbd_input(char* text, int buflen)
|
int kbd_input(char* text, int buflen)
|
||||||
{
|
{
|
||||||
bool done = false;
|
bool done = false;
|
||||||
|
#if KEYBOARD_PAGES > 1
|
||||||
int page = 0;
|
int page = 0;
|
||||||
|
#endif
|
||||||
int font_w = 0, font_h = 0, i;
|
int font_w = 0, font_h = 0, i;
|
||||||
int x = 0, y = 0;
|
int x = 0, y = 0;
|
||||||
int main_x, main_y, max_chars;
|
int main_x, main_y, max_chars;
|
||||||
|
|
@ -134,7 +159,7 @@ int kbd_input(char* text, int buflen)
|
||||||
status_y2 = LCD_HEIGHT;
|
status_y2 = LCD_HEIGHT;
|
||||||
|
|
||||||
editpos = strlen(text);
|
editpos = strlen(text);
|
||||||
|
|
||||||
max_chars = LCD_WIDTH / font_w - 2; /* leave room for < and > */
|
max_chars = LCD_WIDTH / font_w - 2; /* leave room for < and > */
|
||||||
line = kbdpages[0];
|
line = kbdpages[0];
|
||||||
|
|
||||||
|
|
@ -207,7 +232,7 @@ int kbd_input(char* text, int buflen)
|
||||||
return -1;
|
return -1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef KBD_PAGE_FLIP
|
#if defined(KBD_PAGE_FLIP) && KEYBOARD_PAGES > 1
|
||||||
case KBD_PAGE_FLIP:
|
case KBD_PAGE_FLIP:
|
||||||
if (++page == KEYBOARD_PAGES)
|
if (++page == KEYBOARD_PAGES)
|
||||||
page = 0;
|
page = 0;
|
||||||
|
|
@ -235,7 +260,8 @@ int kbd_input(char* text, int buflen)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
x = 0;
|
x = 0;
|
||||||
#ifndef KBD_PAGE_FLIP /* no dedicated flip key - flip page on wrap */
|
#if !defined(KBD_PAGE_FLIP) && KEYBOARD_PAGES > 1
|
||||||
|
/* no dedicated flip key - flip page on wrap */
|
||||||
if (++page == KEYBOARD_PAGES)
|
if (++page == KEYBOARD_PAGES)
|
||||||
page = 0;
|
page = 0;
|
||||||
line = kbdpages[page];
|
line = kbdpages[page];
|
||||||
|
|
@ -263,7 +289,8 @@ int kbd_input(char* text, int buflen)
|
||||||
x--;
|
x--;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#ifndef KBD_PAGE_FLIP /* no dedicated flip key - flip page on wrap */
|
#if !defined(KBD_PAGE_FLIP) && KEYBOARD_PAGES > 1
|
||||||
|
/* no dedicated flip key - flip page on wrap */
|
||||||
if (--page < 0)
|
if (--page < 0)
|
||||||
page = (KEYBOARD_PAGES-1);
|
page = (KEYBOARD_PAGES-1);
|
||||||
line = kbdpages[page];
|
line = kbdpages[page];
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue