Thursday, November 20, 2008

Mapping Alpha to Numeric

I've been working w/ pen input computers for close to 10 years. Initially, it became very apparent that standardard (keyboard) input practices don't scale well to expected value ranges.

For example, entering in numeric values on a desktop computer with a keyboard is a non-issue (for the most part). If you intend "6", you type "6". However, if you are on a pen input device, if you intend "6", the recognizer may interpret "b".

Most of my requirements for pen input has focused around fields that should be constrained to numeric values. Simply using a 'numeric input only' text box often doesn't work. This is because if the recognizer interprets "b", the numeric text box discards that value. For the end user, this can be quite frustrating and counter-productive.

Presuming numeric-entry text, I've resolved to create an alphanumeric text box and simulate numeric-only by performing the necessary mapping from recognizer value to expected. Empirically, I've found the following table mapping suits most cases of misrecognition:

   lowercase letter O (o) -> zero
   uppercase letter O (O) -> zero
   uppercase letter D (D) -> zero

   lowercase letter I (i) -> one
   uppercase letter I (I) -> one
   lowercase letter L (l) -> one
   slash (/) -> one
   backslash (\) -> one
   vertical bar (|) -> one
   exclamation point (!) -> one

   lowercase letter Z (z) -> two
   uppercase letter Z (Z) -> two

   lowercase letter S (s) -> five
   uppercase letter S (S) -> five

   lowercase letter B (b) -> six
   uppercase letter G (G) -> six

   right angle bracket (>) -> seven

   lowercase letter Q (q) -> nine
   lowercase letter G (g) -> nine

   single quote (') -> decimal point
   comma (,) -> decimal point

In practice, I've found that the above mapping/conversion works pretty well and reduces the frustration and increases the validity of captured input.

No comments: