An Android soft keyboard IME that changes settings for each and every key press in a random but controlled way -- the list of parameters is pre-stored in a file. The parameters are: size, location, orientation, key assignments, color, target letter, and others (see below).
The basic operations are:
1. You first display the first on-screen keyboard and a small pop-up showing a letter to be entered. All these are controlled by the first set of parameters read from the parameter file.
2. You wait for user to press the first key.
3. Then immediately you change the on-screen keyboard with the second given set of parameters. You record all touch event details (x, y, t, etc) and user typing accuracy.
4. You repeat what above until a full session is completed (ie., you complete the parameter file).
Three added requirements:
1. speed
The keyboard change has to be done in no more than 2 frame time -- which means no more than 33ms in a 60 fps (frame per second) Android device. Yet you are NOT allowed to pre-calculate the next keyboard, because we may need to add some randomness to some or all the parameters to avoid potential human memorization. This time requirement is critical as otherwise the test is meaningless. You can assume we are using Tegra-3 with 4-core ARM CPU at at least 1.1GHz (the topmost tier of hardware) with Android ICS (set to level 14). We need you to prove the speed to us.
2. split and unlocked modes
Important. See below in 'Legal' section.
3. frame and transparent modes
Normal soft keyboard is opaque, blocking view of underlining text view. In the 'frame' mode we need, the soft keyboard has to be fully transparent, only showing key frames (thin lines) without even showing key assignments (in this case it is assumed one of the known common keyboard layouts, such as QWERTY or DVORAK). The 'transparent' mode is frame mode with key assignments shown (ideally in a transparent contrast color to minimize blocking of content below).
2. split and unlock modes
The keyboard has a 'split' mode, just like what on iPad ([login to view URL]). The actual layout will be in the parameter file. The left and right parts are set independently. For example, please don't assume them having the same size or height. Instead, assume them 'two' independent keyboards.
Of course we need 'unlock' mode too ([login to view URL]) but we are more than that, as we need re-sizing and tilting/rotation too. We even want to have fisheye keyboard ([login to view URL]). Please simply assume the application of a generic/arbitrary geometrical transformation on a 'standard' rectangular keyboard and then display/use it.
Technical Starting Point:
There are lots of related posts out there. For example, you are recommended to take a look at this page: [login to view URL]
You must be very familiar with what below:
1. Onscreen Input Methods
[login to view URL]
2. Creating an Input Method
[login to view URL]
3. SoftKeyboard - Soft Keyboard
[login to view URL]
It is further expected that you have studied Android LatinIME:
git clone [login to view URL]
Please read the project first and write the word "Understood". Also write your steps and suggestions to complete the project with a short description of what you understood.