Allright, so first of all I haven't gotten my GP2x yet and such, and therefore I have no idea if this idea is feasable at all or not. Still, I guess it could be better than most Virtual Keyboards existing as of now.
So, we all know the classic "horizontal bar" style Virtual Keyboard by now: a clumsy and slow way to allow the user to input text, yet it's also very basic and easy to implement. It's slow to operate, though... Why? Probably because for every character, you need a different ammount of keypresses, depending on the character that you've previously inputted. For example, you might need 5 buttonpresses to input "A", 2 for "B", and then suddenly 10 or so for "V".. Quite a hassle to work with, I think..
Now, how could we do this better? Well having each and every button on the GP2x represent one single letter would be nice, but we ain't got that much buttons, unfortunately. So we've got to do it a bit different. Key is still, though, to try and get the ammount of buttons needed to pressed to get a single character for all different kinds of characters about the same. So "A" takes, say, 3 buttons to press, and so does "B", and even "V".
The joystick has 8 directions.
The joystick has 1 button.
2 shoulder buttons.
4 right-hand buttons.
2 below-right-hand buttons.
(2 or 3 volume buttons).
Conclusion? We've got to combine keys to get a proper input done.
8*4=32.. So that'd allow us to input all letters and some signs by combining the right hand buttons and the joystick directions. My idea is to combine a right-hand buttonhit with a left-hand stick direction. Say "X" and "joystick up" corresponds to "b". Make a keyset that works with this method, display the keys that correspond with the button/joystick directions/presses graphically on the screen in 4 boxes, and voila! Easy-to-operate virtual keyboard. Need more input characters? Pressing the joystick could change between upper and lowercase characters. Hitting start or select could bring up yet another keyset with numbers, additional characters and stuff like that.
Don't understand what I'm on about AT ALL (probably, since I have the feeling I'm writing bad english here)? I've quickly whipped up a prototype of what I mean a while ago in about one hour at 01:00 (at night ) in Multimedia Fusion (which I now recognize as being a great tool for making prototypes. Using it for anything else other than that seems kind of worthless to me now after I've seen the light of C and C++) and changed it around a bit a few minutes go. A bit more info about how to use it is in the program itself. The .dll file is nothing really harmful, and if you've ever used a Multimedia Fusion-made program, you might already have it on your HD somewhere.
You can get the prototype itself (Win32 only, sorry Linux users. :/) here: http://home.deds.nl/~megagun/temp/vkeyproto2.zip
(Note: you have to extract this to your HD somewhere, as it depends on an ini file. Also note that you've got to hold both keys (arrow keys and numpad keys) to input a character)
Since I'll be getting my GP2x in a while (don't have it yet), and since I'm probably going to play a lot with it first before attempting to code, and since that's probably going to take a while too (the figureing out how to code for GP2x, etc..), I'm strongly encouraging anyone with a bit of time to try and code this for GP2x. Don't get me wrong, I'm not lazy or something, I just know it'll take a while and I know a lot of people are skilled enough to quickly whip this up.. so.. yeah.. Also, note that my prototype is kind of weird on PC, and that everyone should be able to use it on GP2x much faster, since the GP2x stick seems more "slidey" than your keypad, and the screen is close to the actual buttons, meaning faster hand-eye coordination.
It'd be nice if the keyboard configuration could be stored on the NAND somewhere, meaning that every application you use which uses this virtual keyboard system would in theory look and behave the same (read: use the same configuration).
Comments? Questions? I'd be glad to answer them.
So, we all know the classic "horizontal bar" style Virtual Keyboard by now: a clumsy and slow way to allow the user to input text, yet it's also very basic and easy to implement. It's slow to operate, though... Why? Probably because for every character, you need a different ammount of keypresses, depending on the character that you've previously inputted. For example, you might need 5 buttonpresses to input "A", 2 for "B", and then suddenly 10 or so for "V".. Quite a hassle to work with, I think..
Now, how could we do this better? Well having each and every button on the GP2x represent one single letter would be nice, but we ain't got that much buttons, unfortunately. So we've got to do it a bit different. Key is still, though, to try and get the ammount of buttons needed to pressed to get a single character for all different kinds of characters about the same. So "A" takes, say, 3 buttons to press, and so does "B", and even "V".
The joystick has 8 directions.
The joystick has 1 button.
2 shoulder buttons.
4 right-hand buttons.
2 below-right-hand buttons.
(2 or 3 volume buttons).
Conclusion? We've got to combine keys to get a proper input done.
8*4=32.. So that'd allow us to input all letters and some signs by combining the right hand buttons and the joystick directions. My idea is to combine a right-hand buttonhit with a left-hand stick direction. Say "X" and "joystick up" corresponds to "b". Make a keyset that works with this method, display the keys that correspond with the button/joystick directions/presses graphically on the screen in 4 boxes, and voila! Easy-to-operate virtual keyboard. Need more input characters? Pressing the joystick could change between upper and lowercase characters. Hitting start or select could bring up yet another keyset with numbers, additional characters and stuff like that.
Don't understand what I'm on about AT ALL (probably, since I have the feeling I'm writing bad english here)? I've quickly whipped up a prototype of what I mean a while ago in about one hour at 01:00 (at night ) in Multimedia Fusion (which I now recognize as being a great tool for making prototypes. Using it for anything else other than that seems kind of worthless to me now after I've seen the light of C and C++) and changed it around a bit a few minutes go. A bit more info about how to use it is in the program itself. The .dll file is nothing really harmful, and if you've ever used a Multimedia Fusion-made program, you might already have it on your HD somewhere.
You can get the prototype itself (Win32 only, sorry Linux users. :/) here: http://home.deds.nl/~megagun/temp/vkeyproto2.zip
(Note: you have to extract this to your HD somewhere, as it depends on an ini file. Also note that you've got to hold both keys (arrow keys and numpad keys) to input a character)
Since I'll be getting my GP2x in a while (don't have it yet), and since I'm probably going to play a lot with it first before attempting to code, and since that's probably going to take a while too (the figureing out how to code for GP2x, etc..), I'm strongly encouraging anyone with a bit of time to try and code this for GP2x. Don't get me wrong, I'm not lazy or something, I just know it'll take a while and I know a lot of people are skilled enough to quickly whip this up.. so.. yeah.. Also, note that my prototype is kind of weird on PC, and that everyone should be able to use it on GP2x much faster, since the GP2x stick seems more "slidey" than your keypad, and the screen is close to the actual buttons, meaning faster hand-eye coordination.
It'd be nice if the keyboard configuration could be stored on the NAND somewhere, meaning that every application you use which uses this virtual keyboard system would in theory look and behave the same (read: use the same configuration).
Comments? Questions? I'd be glad to answer them.