|
|
|
Multi-Screen capable vkeyboard designInfoThis is design-paper how multi-screen support can be added to the vkeyboardIn this version not all aspects are reviewed and discussed. It is only a first attempt for it. Paper
Design-paper for a multiscreen-capable vkeyboard for rockbox:
note:
non-latin chars won't be displayed on charcell-targets
ther are two target which uses keyboard-modes
(char-selector, line-editing) because there aren't enought
buttons
the vkeyboard has two screen-areas:
area one:
shows the selectable chars
area two (is only one line):
which shows the typed characters
there are also two cursors:
one is the "picker":
with this cursor the user can move inside the virtual page
to select the next desired char to be inserted to the typed string
the other one is the "line":
with this cursor the user can move to the place in the string
in which the next char should be inserted or the char before the cursors
should be deleted.
there is a virtual page, which holds all selectable chars
depending on the screen-size only parts of this page is shown
or complete(if there is enough screen-space).
There are two pages builtin on for the latin-chars and
one for the morse-code-input(currently only a help-screen)
on smaller screens an rect is used which defines the viewable clip of
the virtual page.
The x/y-coords of the rect defines the first char and the width/height-values
defines how many lines (height) and how many chars per line(width)
should be shown(this line will be always the lcd-width).
So the pages gets wrapped to the screen width.
when the "picker" cursor moves outside the viewable rect, if the rect is
smaller then the virtual-page then the rect gets scrolled in this direction.
(When moving UP/DOWN)
To switch between the two pages you move the cursor to the right side of the screen
(when the picker-page is shown) then the next press to right will switch
to the morse-code-page. To switch back simply to do the same but now to the left side.
Notes:
Ondio: there is a third "page" which switches the mode to line-editing.
this can be reached if you move the cursor to the left-side(picker-page)
or to the right-side(morse-code-page)
to leave this "page" press UP (picker-page) or DOWN(morse-code-page)
<-picker-> <-morse-> ^-line edit-v
Player: the global page is threated as one line
the morse-code page isn't displayed, only the string "morse Input" is shown
each screen, on which the keyboard should be displayed, have following
data-structs:
for the virtual page:
pvar data // pointer the array in which holds the chars
var len // offset to the next line in the virtual page
keyboard:
pvar screen // a pointer to the associated screen-struct for the screen
pvar page // a pointer to the used virtual page-data-struct
var lines // number of lines, this is a calculated value
// with this formula: page->len/display->width
Device dependent Button-mapping:
iRiver H1xx/H3xx:
STOP to leave the screen discaring the made changes
PLAY to leave the screen and save the changes
REC delete the chare before the "line" cursor
MODE switch between the virtual pages morse-code and characters
main-screen:
the joystick-buttons( UP/DOWN/LEFT/RIGHT ) moves the "picker" cursor
SELECT to insert the current highlighted char to the string.
PLAY+LEFT/RIGHT move the "line-cursor"
remote-screen(H1xx):
FF/REW/VOL-UP/VOL-DOWN moves the "picker" cursor
SOURCE/BITRATE moves the "line" cursor
Archos Player
ON switch between "line edit" and "picker"
MENU flips the picker lines
"+"/"-" moves the picker cursor
r2 - 23 Dec 2005 - 14:48:02 - StephanWezel
Copyright © by the contributing authors.
|