Fast keyboard method, version 1.1
Fast keyboard method, version 1.1
The D-Pad has 9 directions and there are 4 buttons, so you can enter very fast 36 different characters. With left and right trigger and "Start" for switching the character set, you'll have 76 characters. I've implemented a program for testing this concept (for 1.0 and 1.5 firmware version compiled, with source included) : fastkeyboard-1.1.zip
Copy the layout.txt to the root in the memory stick. The format is a combination of one of this chars:
followed by "=", followed by the special action or character to which this combination should be mapped to. If you press "Start", the second set is choosed, which is defined after the "s" in the layout.txt.
So for example to type "Hello ps2dev!" enter this:
start
left+square
start
left+triangle
up+square
up+square
right+cross
leftTrigger
right+square
down+cross
left+down+triangle
square
left+triangle
left+up+circle
start
right+up+cross
New in version 1.1: The D-Pad directions and the Start selection are displayed:
The layout should be enhanced, for example often used characters should be easier to access, but it is a good start and I'm sure once you've learned the keys, it could be nearly as fast as a normal keyboard.
Copy the layout.txt to the root in the memory stick. The format is a combination of one of this chars:
followed by "=", followed by the special action or character to which this combination should be mapped to. If you press "Start", the second set is choosed, which is defined after the "s" in the layout.txt.
So for example to type "Hello ps2dev!" enter this:
start
left+square
start
left+triangle
up+square
up+square
right+cross
leftTrigger
right+square
down+cross
left+down+triangle
square
left+triangle
left+up+circle
start
right+up+cross
New in version 1.1: The D-Pad directions and the Start selection are displayed:
The layout should be enhanced, for example often used characters should be easier to access, but it is a good start and I'm sure once you've learned the keys, it could be nearly as fast as a normal keyboard.
Last edited by Shine on Tue Jul 12, 2005 6:49 am, edited 1 time in total.
How about the analog stick?
I've written an input system for the PS2 that uses the analog stick. It's pretty fast and simple.
(don't have a PSP yet so i don't know if it works as good as on PS2).
here are some screenshots:
pic1,pic2,pic3.
and the ELF-file (for PS2) if anyone wants to test it: test.elf.
the character set only shows up on screen if you push the analog stick in any direction, then you can select a character and enter it with the circle-button.
I've written an input system for the PS2 that uses the analog stick. It's pretty fast and simple.
(don't have a PSP yet so i don't know if it works as good as on PS2).
here are some screenshots:
pic1,pic2,pic3.
and the ELF-file (for PS2) if anyone wants to test it: test.elf.
the character set only shows up on screen if you push the analog stick in any direction, then you can select a character and enter it with the circle-button.
infj
-
- Posts: 4
- Joined: Sun May 08, 2005 5:51 am
Ive written a text input using the analog stick, not as pretty as youres, just shows the currently selected character on the screen, not all there positions etc, i want to get it released asap but im trying to intigrate it into a program im workin on and ive hit some snags if you want it though i could write a standalone of just that, let me know.
Perhaps my method could be combined with the analog stick: Instead of selecting single characters with the analog stick, like Saotome implemented it, you can select a group of characters with it and then select one char out of the group with the cross/circle/triangle/square. Could be easier than with the D-Pad (it's sometimes difficult to press the diagonal directions) and perhaps more than 9 directions are possible.
Maybe it's just me, but now that i look on your screenshot I don't think I could get used to that system. It's just as simple as entering the characters as binary codes with just two buttons, you just have to learn the binary codes of each char ;) j/k
ok, maybe its faster (if you practise long enough) for 'typing' (for example in a text editor) than my system, but for someone that just wants to enter some chars (for example his name in the hiscore-list after a game), it's better to keep it as simple as possible.
ok, maybe its faster (if you practise long enough) for 'typing' (for example in a text editor) than my system, but for someone that just wants to enter some chars (for example his name in the hiscore-list after a game), it's better to keep it as simple as possible.
infj
You are right, it is not as intutive as the OSK from Sony or your system, but perhaps could be enhanced with a better GUI, for example instead of displaying the directions of the D-Pad, arranging the 4 character groups in a circle, where you can see immediatly where to move the D-Pad (and in the center the group without moving the D-Pad) and displaying the button symbols for every character and with some nice animations.Saotome wrote:maybe its faster (if you practise long enough) for 'typing' (for example in a text editor) than my system, but for someone that just wants to enter some chars (for example his name in the hiscore-list after a game), it's better to keep it as simple as possible.
Anyone who wants to implement it? Could be the new homebrew standard text input OSK :-)
Yes, you understood my program :-) Should be easy to port the 440 lines of C code to the xbox.ktan91 wrote:i like one of those progs on the xbox... u use X[]/\O to select and joystick to select between boxes.. so theres nine i think and move ur joystick to the boxes and press the buttons that correspond w/ the letters ;D
nice
Actually, at first I didn't think this would work at all, but when I saw your pic, it got me thinking it would be excellent with the right graphical implementations on screen.. I would suggest using the dpad and analog l/r/u/d each for changing chars.. using select as a switch that would give you 96 chars..
Only problem I see is not everyone would want to implement it, so it would be hard to get users used to it.
... okay here we go :)
This might be nice, problem now would become a smaller onscreen, and not fullscreen implementation...
Some key points, highlighting the key pressed (also select button when 'on') helps the user picture what they are selecting in their mind, also, letters on the buttons should be from top to bottom, left to right, just like you are reading, cuz that's how us english speaking ppl read :) This just makes it all more usable.
Thoughts?
LiQuiD8d
Only problem I see is not everyone would want to implement it, so it would be hard to get users used to it.
... okay here we go :)
This might be nice, problem now would become a smaller onscreen, and not fullscreen implementation...
Some key points, highlighting the key pressed (also select button when 'on') helps the user picture what they are selecting in their mind, also, letters on the buttons should be from top to bottom, left to right, just like you are reading, cuz that's how us english speaking ppl read :) This just makes it all more usable.
Thoughts?
LiQuiD8d
I have modified this orginial code just a bit to make it a little easier for anyone to use.
I have created three functions,
void getLayout() -- gets the layout from the text.
char getCharacter(SceCtrlData*,u32*) -- gets the next character that someone types and returns it.
char* getLine(char*,char) -- takes the first arg and adds the second arg. Almost a strcat, but it uses the R trigger to delete a key.
I will probably start using this in my IRC client until a *real* keyboard comes out.
Link: www.cs.purdue.edu/~ljbuesch/fkM.tar.gz
I have created three functions,
void getLayout() -- gets the layout from the text.
char getCharacter(SceCtrlData*,u32*) -- gets the next character that someone types and returns it.
char* getLine(char*,char) -- takes the first arg and adds the second arg. Almost a strcat, but it uses the R trigger to delete a key.
I will probably start using this in my IRC client until a *real* keyboard comes out.
Link: www.cs.purdue.edu/~ljbuesch/fkM.tar.gz
Lego of my Ago!
Good job, I like it. I think it could work pretty well. Just missing the delete button, which could be the opposite from the shoulder button. Also I suggest the following changes:Shine wrote:Yes, you understood my program :-) Should be easy to port the 440 lines of C code to the xbox.ktan91 wrote:i like one of those progs on the xbox... u use X[]/\O to select and joystick to select between boxes.. so theres nine i think and move ur joystick to the boxes and press the buttons that correspond w/ the letters ;D
1. Use the analog stick for selecting the right character group
The d-pad is a tad rough for selecting the diagonal directions.
2. Show only the character group that you are currently selecting.
This will make the input screen compact, and allow for a nice editing interface. You can always add a full layout as a help function.
3. Use the d-pad for cursor functions, walking through the text.
With these modifications, I think it should work very well!
So is there not a way to call the already existing keyboard feature on PSP?
Otherwise I am thinking of the 7280 text input feature, its left or right to run through the keys and that way we can use the analogue stick aswell.
Otherwise I'm stealing one of your keypad programs :-p I need keypad input.
Otherwise I am thinking of the 7280 text input feature, its left or right to run through the keys and that way we can use the analogue stick aswell.
Otherwise I'm stealing one of your keypad programs :-p I need keypad input.
I must admit, I like this idea. When my PSP arrives, I may try something similar. Supposedly there's non-keyboard methods of input for the PC that are used for people with disabilities which are just as good as a keyboard, so with the limited inputs on a PSP it makes sense to try something like this :)
While you guys are thinking of alternate ways to speed up keyboard entry, you might want to have a look at the dasher project at http://www.inference.phy.cam.ac.uk/dasher/ . I used to have this on my Ipaq and got proficient enough that it was faster than the handwriting recognition system. It was originally designed for people with disabilities, but I think that they'd agree that not having a keyboard is a bit of a disability in and of itself.
It's a very interesting concept! But the advantage of a good system that does not rely on linguistics are that it's really lightweight - just some combining of controller data and key mappings and you're done. However, I do agree that the underlying principles of a system like dasher are the way to go if you really want something reasonably fast.spawn968 wrote:While you guys are thinking of alternate ways to speed up keyboard entry, you might want to have a look at the dasher project at http://www.inference.phy.cam.ac.uk/dasher/ . I used to have this on my Ipaq and got proficient enough that it was faster than the handwriting recognition system. It was originally designed for people with disabilities, but I think that they'd agree that not having a keyboard is a bit of a disability in and of itself.
I would probably opt for a simple system that combines the two. Sentences are often very predictable (someone wrote a talking robot based on that principle) and a very large percentage of all tekst consists of just a very limited set of words and phrases.
I think I might have a go at this a little later on. You can use all kinds of linguistic properties of English for this. For instance, on the word level, certain letters normally never follow another certain letter. And the same goes for certain word categories. Certain words are almost always followed by other words. I guess the dasher works a lot like that, but I would like to see it a little more compact if possible, and perhaps also just text-only.
EDIT: I designed a first simple, low-space usage method first in Visual Basic, that has no complex logic or dictionaries and seems to work pretty nicely. I'll work on it some more at home - still need caps and symbols, but I do already have normal characters, numbers, space and backspace, and the dynamic on-screen help working. I'll post the design here later.
Hi Guys,
I've been working a bit. Let me know what you think!
p-sprint simple psp button keyboard
VB.NET proof of concept version
(c) 2005 Arwin van Arum
download:
http://www.niwra.nl/psp/p-sprint/p-sprint0.1.rar
screenshot:
C version for PSPSDK will follow soon.
Contact me on the forums or at [email protected] if you want to use this system in your program. I don't want money for it, just want to design a standard interface with you guys. ;)
The idea is to use as few buttons as possible, preferably leaving the analog stick and R and L buttons free for text selection and/or mouse simulation.
I have taken an Oxford list of key occurrances, and mapped the keys according to how often they occur in the English language. The most used keys have the shortest sequence.
I have used a confirmation button because ultimately you can type very fast combinations, and systems that require a pause get in the way of that.
It is of course possible to combine this system with dictionaries and so on. But I want a good base that doesn't require anything else than (almost) direct key-mappings.
I also wanted something that would do with very little extra space for typing guidance. In theory, the outline as shown on the picture in the main program, should fit on a single line of text.
In this pc demo-version, the PSP keys are mapped as follows:
PSP - PC
directional pad - direction keys
triangle, circle, cross, square - num-locked keypad 8,6,2,4
SELECT (changes input mode) - num-locked keypad 0
Currently supported input modes:
normal
Type a key combination and press -> (right arrow on directional pad) to confirm sequence and output the key. Eg. 'x' -> 'e'
-> after another -> = space
<- after another <- = backspace
caps-lock (obvious)
numeric
Very simple, but funny. Circle is 0, Cross is 1, Square is 2, Triangle is 3. Again, confirm with '->'. If you want to type 4, simply press 2 (Square) twice, and then press '->.'
TO DO:
- add a symbol mode
- add up/down key function for special related characters (eg. e, é, è, E, É, etc.)
- add option to insert ascii/unicode keycode (easy combination with numeric mode)
- write a neat c-class for PSP for others to use (shouldn't be too hard, with so many nice sample code available)
I've been working a bit. Let me know what you think!
p-sprint simple psp button keyboard
VB.NET proof of concept version
(c) 2005 Arwin van Arum
download:
http://www.niwra.nl/psp/p-sprint/p-sprint0.1.rar
screenshot:
C version for PSPSDK will follow soon.
Contact me on the forums or at [email protected] if you want to use this system in your program. I don't want money for it, just want to design a standard interface with you guys. ;)
The idea is to use as few buttons as possible, preferably leaving the analog stick and R and L buttons free for text selection and/or mouse simulation.
I have taken an Oxford list of key occurrances, and mapped the keys according to how often they occur in the English language. The most used keys have the shortest sequence.
I have used a confirmation button because ultimately you can type very fast combinations, and systems that require a pause get in the way of that.
It is of course possible to combine this system with dictionaries and so on. But I want a good base that doesn't require anything else than (almost) direct key-mappings.
I also wanted something that would do with very little extra space for typing guidance. In theory, the outline as shown on the picture in the main program, should fit on a single line of text.
In this pc demo-version, the PSP keys are mapped as follows:
PSP - PC
directional pad - direction keys
triangle, circle, cross, square - num-locked keypad 8,6,2,4
SELECT (changes input mode) - num-locked keypad 0
Currently supported input modes:
normal
Type a key combination and press -> (right arrow on directional pad) to confirm sequence and output the key. Eg. 'x' -> 'e'
-> after another -> = space
<- after another <- = backspace
caps-lock (obvious)
numeric
Very simple, but funny. Circle is 0, Cross is 1, Square is 2, Triangle is 3. Again, confirm with '->'. If you want to type 4, simply press 2 (Square) twice, and then press '->.'
TO DO:
- add a symbol mode
- add up/down key function for special related characters (eg. e, é, è, E, É, etc.)
- add option to insert ascii/unicode keycode (easy combination with numeric mode)
- write a neat c-class for PSP for others to use (shouldn't be too hard, with so many nice sample code available)
-
- Posts: 23
- Joined: Thu Jul 07, 2005 3:56 pm
I started a thread on Dasher (of which I'm a big fan) for the PSP sometime back. Please see:
http://forums.ps2dev.org/viewtopic.php? ... d06403bcbe
http://forums.ps2dev.org/viewtopic.php? ... d06403bcbe
Its really not that complicated, actually! This might help:Souls85 wrote:wow thats complicated lol
not too bad Id have to actually try it on my psp to see if I liked it
also the dasher program would be a great idea. I can type almost 40 wpm with it.
> 'i' > 't' > 's'
> 'r' > 'e' > 'a' > 'l' > 'l' > 'y'
Compare the colors of the button to the chart:
And you see that the colors give it away.
I'm also making a mono, single line input that needs just one extra line for showing how to type.
And now a dynamic interface, demonstrated in this animated gif:
And if you want to test yourself (requires .NET Framework runtime):
http://www.niwra.nl/psp/p-sprint/p-sprint0.2.rar
And if you want to test yourself (requires .NET Framework runtime):
http://www.niwra.nl/psp/p-sprint/p-sprint0.2.rar
Did any of you guys play Beyond Good and Evil? That had a great virtual keyboard method. It uses the analog-circular method shown above. But instead of fitting all of the characters into one circle, they kind of overlapped to give each character a wider range of the selection arc. They dealt with the overlap by making it more of a corkscrew rather than just a circle. So if you'd spin the analog one way you'd go lower in the characters and the other way you'd go higher. Its mildly difficult to explain but it worked out great.
I agree that was pretty decent. But say you were chatting, with my system you would fairly easily be able to keep most of your screen devoted to showing the conversation and related stuff. So that's why I'm going to continue with this system for a while.dlists99 wrote:Did any of you guys play Beyond Good and Evil? That had a great virtual keyboard method. It uses the analog-circular method shown above. But instead of fitting all of the characters into one circle, they kind of overlapped to give each character a wider range of the selection arc. They dealt with the overlap by making it more of a corkscrew rather than just a circle. So if you'd spin the analog one way you'd go lower in the characters and the other way you'd go higher. Its mildly difficult to explain but it worked out great.
Would love to hear some feedback on it, from someone who's tried it him/herself.
OSK in pspChess
I had to use an OSK for the upcoming network interface version of pspChess and this is what I came up with:
The key layout is
LEFT/RIGHT - change character frame
TRIANGLE/CIRCLE/SQUARE/CROSS - select character
LTRIGGER - backspace
RTRIGGER - space (1x) / enter (2x)
UP - toggle shift lock
If anyone wants the code, let me know, or wait for the next release of pspChess (which could be a while)
The key layout is
LEFT/RIGHT - change character frame
TRIANGLE/CIRCLE/SQUARE/CROSS - select character
LTRIGGER - backspace
RTRIGGER - space (1x) / enter (2x)
UP - toggle shift lock
If anyone wants the code, let me know, or wait for the next release of pspChess (which could be a while)