Fast keyboard method, version 1.1

Discuss the development of new homebrew software, tools and libraries.

Moderators: cheriff, TyRaNiD

Shine
Posts: 728
Joined: Fri Dec 03, 2004 12:10 pm
Location: Germany

Fast keyboard method, version 1.1

Post by Shine »

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:

Image

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:

Image

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.
madc
Posts: 17
Joined: Mon Jun 27, 2005 3:18 pm
Location: Nanking,China
Contact:

Post by madc »

I think there must be some visible hint on the screen. I don't link PVNC's virtual keyboard, but the inpurt mode switch is necessary.
User avatar
Saotome
Posts: 182
Joined: Sat Apr 03, 2004 3:45 am

Post by Saotome »

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.
infj
Tim
Posts: 38
Joined: Tue Jul 12, 2005 4:40 am

Post by Tim »

It'd probably be harder to use the psp analog stick, since you'd have less precision. If it worked... that'd probably be quite a good input method.
zerocool563
Posts: 4
Joined: Sun May 08, 2005 5:51 am

Post by zerocool563 »

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.
Shine
Posts: 728
Joined: Fri Dec 03, 2004 12:10 pm
Location: Germany

Post by Shine »

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.
User avatar
Saotome
Posts: 182
Joined: Sat Apr 03, 2004 3:45 am

Post by Saotome »

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.
infj
ktan91
Posts: 3
Joined: Tue Jul 12, 2005 7:30 am

Post by ktan91 »

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
Shine
Posts: 728
Joined: Fri Dec 03, 2004 12:10 pm
Location: Germany

Post by Shine »

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.
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.

Anyone who wants to implement it? Could be the new homebrew standard text input OSK :-)
Shine
Posts: 728
Joined: Fri Dec 03, 2004 12:10 pm
Location: Germany

Post by Shine »

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
Yes, you understood my program :-) Should be easy to port the 440 lines of C code to the xbox.
liquid8d
Posts: 66
Joined: Thu Jun 30, 2005 6:29 am

nice

Post by liquid8d »

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 :)

Image

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
wulf
Posts: 81
Joined: Wed Apr 13, 2005 6:56 pm

Post by wulf »

I have an idea... what about using the analog stick kinda like the iPod's pad? one could use it to "roll" past letters using a circular motion.. similar to the post above about it, but with all 26 letters at once...
User avatar
Agoln
Posts: 326
Joined: Wed Jun 08, 2005 3:14 am
Location: Fort Wayne, IN

Post by Agoln »

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
Lego of my Ago!
Arwin
Posts: 426
Joined: Tue Jul 12, 2005 7:00 pm

Post by Arwin »

Shine wrote:
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
Yes, you understood my program :-) Should be easy to port the 440 lines of C code to the xbox.
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:

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!
Kamilion
Posts: 24
Joined: Tue Mar 01, 2005 11:40 am

Post by Kamilion »

In my opinion, this would work fairly well for a SSH client implimented on the PSP. Additional input options would be able to use the two UARTS as well.
I'll look into it.
qleyo
Posts: 21
Joined: Fri May 06, 2005 4:34 am
Location: Nottingham, UK
Contact:

Post by qleyo »

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.
Feisar
Posts: 1
Joined: Sun Jul 31, 2005 9:07 am

Post by Feisar »

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 :)
User avatar
Souls85
Posts: 21
Joined: Sat Jul 30, 2005 8:30 am
Contact:

Post by Souls85 »

here is my idea for a keyboard
Image
then X would be shift
and triangle would be delete
spawn968
Posts: 1
Joined: Sun Jul 31, 2005 7:19 pm

Post by spawn968 »

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.
Arwin
Posts: 426
Joined: Tue Jul 12, 2005 7:00 pm

Post by Arwin »

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.
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.

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.
Arwin
Posts: 426
Joined: Tue Jul 12, 2005 7:00 pm

Post by Arwin »

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:
Image

C version for PSPSDK will follow soon.

Contact me on the forums or at arwin@niwra.nl 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)
User avatar
Souls85
Posts: 21
Joined: Sat Jul 30, 2005 8:30 am
Contact:

Post by Souls85 »

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.
Feel free to take a look at my website.
I made some pretty cool psp backrounds.
27Bstroke6
Posts: 23
Joined: Thu Jul 07, 2005 3:56 pm

Post by 27Bstroke6 »

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
Arwin
Posts: 426
Joined: Tue Jul 12, 2005 7:00 pm

Post by Arwin »

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.
Its really not that complicated, actually! This might help:

Image > 'i' ImageImage > 't' ImageImage > 's'

Image > 'r' Image > 'e' Image > 'a' ImageImage > 'l' ImageImage > 'l' ImageImage > 'y'

Compare the colors of the button to the chart:

Image

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.
Arwin
Posts: 426
Joined: Tue Jul 12, 2005 7:00 pm

Post by Arwin »

I worked on making a compact interface:

Image

about 470x40 :)

TO A MODERATOR PASSING BY:

Sorry for cluttering this topic. If you see a chance to move the p-sprint related posts to a separate topic, that would be highly appreciated.
Arwin
Posts: 426
Joined: Tue Jul 12, 2005 7:00 pm

Post by Arwin »

And now a dynamic interface, demonstrated in this animated gif:

Image

And if you want to test yourself (requires .NET Framework runtime):

http://www.niwra.nl/psp/p-sprint/p-sprint0.2.rar
dlists99
Posts: 3
Joined: Wed Aug 03, 2005 8:12 am

Post by dlists99 »

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.
Arwin
Posts: 426
Joined: Tue Jul 12, 2005 7:00 pm

Post by Arwin »

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.
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.

Would love to hear some feedback on it, from someone who's tried it him/herself.
User avatar
cwbowron
Posts: 76
Joined: Fri May 06, 2005 4:22 am
Location: East Lansing, MI
Contact:

OSK in pspChess

Post by cwbowron »

I had to use an OSK for the upcoming network interface version of pspChess and this is what I came up with:


Image
Image

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)
Shine
Posts: 728
Joined: Fri Dec 03, 2004 12:10 pm
Location: Germany

Post by Shine »

This looks worse than the origninal Sony OSK, because you have to hit 11 keystrokes for some keys. What about arranging it in a 3x4 matrix? This would reduce the maximum number of keystrokes from one char to another to 6 at least.
Post Reply