This design presents characterss (A-Z, 0-9, some punctuation) in a column
underneath the cursor's position in the textbox; we call this column the
character selector. This attempts to solve several problems that exist in the
current model.

 - Can easily find the letter you want to type.
    - If you don't see your character in the currently display, page up/down
      until you do. We exploit the fact that the user knows the alphabet which
      defines a natural ordering on letters.
    - Current systems require searching characters laid out in a non-standard
      rectangular grid on screen.
 - Easier to edit
    - Arrow keys allow you to navigate the textbox's current contents and the
      character selector follows you around.
    - Current systems try to mimic physical keyboard by putting including
      backspace and arrow 'keys' in the onscreen keyboard. The user has to find
      and navigate to these in order to manipulate already entered text. This
      unnecessarily adds and extra level of indirection between the controller
      in the user's hands and the effect of the user's actions on the entered
      text.

Our scenario involves a user with a controller offering 4 arrow keys and a
select button. We define the controls as follows:

up arrow - move currently selected character in the selector up one
down arrow - move currently selected character in the selector down one
right arrow - move the cursor right one
left arrow - move the cursor left one

hold up or double-press up - page up the character selector
hold down or double-press down - page down the character selector
hold right or double-press right - insert character before the character under the cursor
hold left or double-press left - delete character under the cursor

select - advance to the next form, submit the form, etc
hold select - accept the auto-completed entry and advance to the next form

Learnability:
    - Pros
        - Natural mapping between the controls and the actions they produce
          onscreen.
        - User knows the alphabet, so he knows where to find his desired
          character in the character selector.
    - Cons
        - Numbers and punctuation are also listed in the character selector.
          A new user may not know to look for these characters after the
          alphabetic characters.
        - Complex movements (page up/down, backspace, etc) will require
          on-screen instructions. These should either always be present when
          the textbox has focus or be easily accessible in some other way.
        - The user may expect to be able to type lowercase letters, but we do
          not include these in the character selector to prevent the list of
          choices from becoming too long. We think this is a reasonable
          decision, since no current use case really requires case senstivity
          for a function other than aesthetic. A new user might will have to
          learn this perhaps through exploration or an instructional message.

Efficiency:
    - Pros
        - Arranging characters linearly makes it easy to find the desired
          character.
        - There is no indirection between user controls and navigating
          on-screen. The textbox looks like something that you can move left
          and right in, and the left and right arrows do just that. The
          character selector looks like something that you can move up and down
          in, and the up and down arrows do just that.
    - Cons
        - Because we have limited physical controls (4 arrow keys + 1 select
          key), we need to overload these keys to allow for more operations.
          This introduces long keypress or double keypresses which naturally
          take longer than a single keypress would.

Safety:
    - Pros
        - The user is able to edit anything he as already typed, so if he
          changes his mind and wants to type something completely different he
          can.
        - Recent errors are very easy to correct. A mistyped letter can be
          erased or overwritten with 1 navigation movement.
        - We will make use of audio cues (like an aesthetic beep) to signal the
          user that he has held the key long enough for the long keypress
          operations.
    - Cons
        - Hiding the character selected in the character selector will be
          difficult for textboxes the perform password entry. There will be a
          short period of time when the character just typed is visible to
          anyone looking at the screen.



1. Billy wants to enter his username "BILLY". He moves up/down until 'B' is
selected. Then presses the right arrow to insert 'B' and advance the cursor.



2. The cursor now points to the second position in the text box. The character
selector retains its last selection, so it is still at 'B' (this is to avoid
state changes that the user would not anticipate and allow easy typing of double
letters). Billy pages down until he sees 'I', selects it and moves right. He
repeats this for 'L', 'L', and 'Y'.



3. Billy has finished entering his username and presses 'select' to move on. He
is now at a new textbox in which he must enter his password "CACTUS". He
follows the same process as for his username. The only difference is that this
time every character that he inserts changes to an asterisk after one second.
Moving the cursor reveals the character that it is under for exactly one second
before it turns back into an asterisk.
Billy scrolls down to 'C', then presses the right arrow. A plain 'C' is visible
in the textbox for one second before turning into an asterisk. Billy forgot
which character he just typed, so he presses the left arrow, moving the cursor
under the first character in the textbox. The 'C' is revealed for one second
before turning back into an asterisk.



4. Billy has finished entering his password and presses select. He is now in
the movie search field and wants to search for 'TERRAFERMA'. This textbox
supports auto-complete (with a list of available movies). As Billy begins
typing, the most likely entry (by whatever metric the source of the
auto-complete items provides) that has as a prefix what Billy has already typed
appears in the textbox. Whatever has been autocompleted appears in a greyed out
color. Billy can hold select at any time to accept the auto-complete item or
simply press select to search only based on what he has typed.
Billy types 'TER' and the autocomplete mechanism suggests 'TERMINATOR' as the
most popular entry with prefix 'TER'. In the textbox, 'MINATOR' appears in grey
after what Billy has already typed.



5. This is not what Billy wants, so he continues typing and enters 'R'. Now
auto-complete suggests 'TERRAFORMA' so Billy holds select to choose that Movie.

  • No labels