Wiki > Main > MultiScreenVKeyboard (compare)
Difference: MultiScreenVKeyboard (r2 vs. r1)
This is design-paper how multi-screen support can be added to the vkeyboard
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 var lines // how many lines are in the page var x,y,w,h // which defines rect to be shown 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 - StephanWezelRevision r2 - 23 Dec 2005 - 14:48 - StephanWezel
Revision r1 - 22 Dec 2005 - 22:55 - StephanWezel
Copyright © by the contributing authors.