release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide



Search | Go
Wiki > Main > DocsIndex > MultiScreenVKeyboard

Multi-Screen capable vkeyboard design

Info

This is design-paper how multi-screen support can be added to the vkeyboard
In 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

r3 - 02 Apr 2021 - 20:46:07 - UnknownUser


Parents: DocsIndex
Copyright © by the contributing authors.