p-sprint (psp keyboard emu)
p-sprint (psp keyboard emu)
The p-sprint keyboard driver simulation is now available as an include package:
http://www.niwra.nl/psp/p-sprint-c/p_sp ... nclude.rar (7.69kb)
It currently implemented among others in
- dosbox (dos emulator)
- MicroWindows (modified drivers for the quick and dirty nano-x/microwindows port in svn)
- Basilisk II (mac emulator)
- PSP PDA (pda soft - calendar, notepad, filebrowser, text editor, music player etc.)
- Peldet (telnet client)
Next, the latest version of the test application.
http://www.niwra.nl/psp/p-sprint-c/p-sprint62a.rar (382kb)
(See version.txt in the rar file for details)
If you're new to the application, you might like to look at this map while typing:
Documentation:
http://www.niwra.nl/psp/p-sprint-c/doc/index.htm
Support graphics:
http://www.niwra.nl/psp/p-sprint-c/doc/ ... gespng.rar
These contain transparant symbols for the unique keycombos that you can use to overlay on your own osks or use for other types of feedback in your software.
Latest screenshot:
http://www.niwra.nl/psp/p-sprint-c/p_sp ... nclude.rar (7.69kb)
It currently implemented among others in
- dosbox (dos emulator)
- MicroWindows (modified drivers for the quick and dirty nano-x/microwindows port in svn)
- Basilisk II (mac emulator)
- PSP PDA (pda soft - calendar, notepad, filebrowser, text editor, music player etc.)
- Peldet (telnet client)
Next, the latest version of the test application.
http://www.niwra.nl/psp/p-sprint-c/p-sprint62a.rar (382kb)
(See version.txt in the rar file for details)
If you're new to the application, you might like to look at this map while typing:
Documentation:
http://www.niwra.nl/psp/p-sprint-c/doc/index.htm
Support graphics:
http://www.niwra.nl/psp/p-sprint-c/doc/ ... gespng.rar
These contain transparant symbols for the unique keycombos that you can use to overlay on your own osks or use for other types of feedback in your software.
Latest screenshot:
Last edited by Arwin on Tue Nov 08, 2005 2:36 am, edited 29 times in total.
I've updated to version 0.4 (as usual, downloadable from first post) so that it now supports a dictionary, and two methods to use it.
=================================
DICTIONARY MODES
=================================
As of the latest version, you can now use a small, 5000 common word dictionary.
There are two ways to use this dictionary:
1. Rank by Use
Type the combination that prompts, but not necessarily types a letter. For instance, press 'x' to prompt the 'e'. Now press the down key on the directional pad, to activate the dictionary.
The words are ordered by frequency, first letter and word length. The display will show the four most common three letter words starting with an 'e'. To see the next four words, press down. To go back to the previous four words, press up.
To see the most first page of common words starting with an 'e' but consisting of more or fewer characters, press left or right.
2. Search alphabetically
First type in a search string, like 'eve', using the normal keypad entry or the Rank by Use dictionary method.
Now press the dictionary key again (down) and press the mode selection (0 on the numeric pad - remember, keep num-lock on).
You will now be shown all words starting with 'eve'.
=================================
DICTIONARY MODES
=================================
As of the latest version, you can now use a small, 5000 common word dictionary.
There are two ways to use this dictionary:
1. Rank by Use
Type the combination that prompts, but not necessarily types a letter. For instance, press 'x' to prompt the 'e'. Now press the down key on the directional pad, to activate the dictionary.
The words are ordered by frequency, first letter and word length. The display will show the four most common three letter words starting with an 'e'. To see the next four words, press down. To go back to the previous four words, press up.
To see the most first page of common words starting with an 'e' but consisting of more or fewer characters, press left or right.
2. Search alphabetically
First type in a search string, like 'eve', using the normal keypad entry or the Rank by Use dictionary method.
Now press the dictionary key again (down) and press the mode selection (0 on the numeric pad - remember, keep num-lock on).
You will now be shown all words starting with 'eve'.
Some more updates for determining something like a final look for on the PSP that should go with most software:
Download in first post is updated.
I'm really looking forward to making this an eboot / PSP c-source ... but I'm relatively inexperienced with stuff like that, so it might take a while and/or I'll be asking for help.
I'll be using the fast-key source as a basis (again, thanks Shine), but there's a lot of work to be done and writing c is a little more tedious for me, and debugging is definitely harder.
(that's why I'm working so hard on finalising the design in VB.NET first, to save a lot of time on all the experimenting)
Download in first post is updated.
I'm really looking forward to making this an eboot / PSP c-source ... but I'm relatively inexperienced with stuff like that, so it might take a while and/or I'll be asking for help.
I'll be using the fast-key source as a basis (again, thanks Shine), but there's a lot of work to be done and writing c is a little more tedious for me, and debugging is definitely harder.
(that's why I'm working so hard on finalising the design in VB.NET first, to save a lot of time on all the experimenting)
You should arrange the buttontexts physically like the buttons sit on the psp, it's much easier than trying to remember whether square is the left or the top button..
http://www.dtek.chalmers.se/~tronic/PSPTexTool.zip Free texture converter for PSP with source. More to come.
It would take up more space. But after testing it, I do agree it works better. You also have a better overview to find where the keys are. Thanks for this suggestion, i'll post a version for you to test here in a short while.ector wrote:You should arrange the buttontexts physically like the buttons sit on the psp, it's much easier than trying to remember whether square is the left or the top button..
Yeah now that's what I'm talking about. Nice work.
http://www.dtek.chalmers.se/~tronic/PSPTexTool.zip Free texture converter for PSP with source. More to come.
-
- Posts: 23
- Joined: Thu Jul 07, 2005 3:56 pm
I have never seen so much reinventing of the wheel on any topic related to the PSP than for alphanumeric input systems. Does anyone even bother to research the many years of prior literature and work in this area for devices that have limited or no keyboards -- before announcing yet another wonderful new interface? A great deal of work and effort has gone into this problem already. I realize that "Not Invented Here" still is close to almost every programmer's heart, but clearly some of these "oh, I just invented a great new input system" concepts are utterly devoid of an understanding of human factor design -- and in some cases of relevant design patents already in force (e.g., it's very easy to infringe on the "T9" patents, but other interfaces, such as "Dasher", are specifically free to implement).
Well the problem is always that these machines are often subtely or less subtly different, as are the requirements for an input method. My initial goal for phase one was to design something that needs little space on the screen, and little code. With the sequential combination pairs of this version, I've achieved that, while maintaining an intuitive user interface. I've been looking at Dasher but for now it is not what I'm looking for. I might use it for phase 3, to see if I can squeeze the technology in the tiny button interface.27Bstroke6 wrote:I have never seen so much reinventing of the wheel on any topic related to the PSP than for alphanumeric input systems. Does anyone even bother to research the many years of prior literature and work in this area for devices that have limited or no keyboards -- before announcing yet another wonderful new interface? A great deal of work and effort has gone into this problem already. I realize that "Not Invented Here" still is close to almost every programmer's heart, but clearly some of these "oh, I just invented a great new input system" concepts are utterly devoid of an understanding of human factor design -- and in some cases of relevant design patents already in force (e.g., it's very easy to infringe on the "T9" patents, but other interfaces, such as "Dasher", are specifically free to implement).
However, if you think you know a better system than this right out of the box, that meets the same space requirements, please let me know. I've heard people quote 40WPM for Dasher - since I type about 96WPM on a normal keyboard and you need max 2 keys for one letter in p-Sprint Turbo, in theory this new approach should match it, and with a bare minimum of code, purely in phase one (simple key input, no complex logic, learning, or dictionaries - just combining two different keystrokes to one character).
For phase two, I wanted to see how much it would help to add a dictionary and how easy that would be. So far that's looking good as well, although I still need to optimise the dictionary integration into the new sequential pair approach. But it's in there, both the version that searches, and the version that allows you to select by wordlength.
Anyway, I botched the dictionary back into it as well as the caps and numlock modes. So now it's fully functional. I think this is getting pretty close to what I set out to design, and what should then be ported to the PSP. Please test and let me know what you think!
Link in the first post updated with the latest version. Here are some obligatory shots:
EDIT: Sorry, that's not meant as a commercial - you'd be amazed what you end up typing when you're developing something like this and have to type to test. :D
-
- Posts: 23
- Joined: Thu Jul 07, 2005 3:56 pm
Much of the research in this area has occurred in two sectors -- interfaces for the handicapped, and devices with limited input capabilities. Obviously there's a lot of overlap between the two in terms of the technical requirements. The human factors side of the equation suggests several things to try avoid.
One is the use of too many total input buttons to choose from, if button sharing is taking place in any one input mode (e.g. alpha, numeric, etc.) Research suggests that when you can't provide a separate button for every letter (e.g., a real keyboard) it's best to use the absolute minimum -- ideally only one in conjunction with some other modality of input. An example is a mouse, which can select in 2-D space plus one "button" (if we consider left click only).
The Dasher model does away with the button entirely by controlling all input exclusively through mouse movements (or in the PSP case the analog pad). This is certainly not the only viable model, of course. But multiple buttons are to be avoided, and this problem becomes even more intense if the meaning of any given button can change in the course of input. Worst case: multiple buttons with changing input definitions in a single input mode.
Dictionary-based systems (you must be careful of existing broad patents once you get into this) basically come in two flavors, static and learning. The former is simple to implement and fairly limited, while the latter is much more powerful and of course more difficult to implement (and to do right, since you don't want to "contaminate" the learning dictionary with errors).
It's worth noting that another advantage of minimizing the number of input buttons in the input choice set is that it allows for more "modeless" input to applications. E.g., if an input scheme requires choosing from among four buttons, those buttons are not available for the application when in input mode. On the other hand, if the input mechanism uses a totally different part of the device (e.g. analog pad) the buttons are still free in a modeless operational sense. Again, other models are of course possible.
One is the use of too many total input buttons to choose from, if button sharing is taking place in any one input mode (e.g. alpha, numeric, etc.) Research suggests that when you can't provide a separate button for every letter (e.g., a real keyboard) it's best to use the absolute minimum -- ideally only one in conjunction with some other modality of input. An example is a mouse, which can select in 2-D space plus one "button" (if we consider left click only).
The Dasher model does away with the button entirely by controlling all input exclusively through mouse movements (or in the PSP case the analog pad). This is certainly not the only viable model, of course. But multiple buttons are to be avoided, and this problem becomes even more intense if the meaning of any given button can change in the course of input. Worst case: multiple buttons with changing input definitions in a single input mode.
Dictionary-based systems (you must be careful of existing broad patents once you get into this) basically come in two flavors, static and learning. The former is simple to implement and fairly limited, while the latter is much more powerful and of course more difficult to implement (and to do right, since you don't want to "contaminate" the learning dictionary with errors).
It's worth noting that another advantage of minimizing the number of input buttons in the input choice set is that it allows for more "modeless" input to applications. E.g., if an input scheme requires choosing from among four buttons, those buttons are not available for the application when in input mode. On the other hand, if the input mechanism uses a totally different part of the device (e.g. analog pad) the buttons are still free in a modeless operational sense. Again, other models are of course possible.
Last edited by 27Bstroke6 on Fri Aug 05, 2005 11:38 pm, edited 1 time in total.
But only so of course if you want something that is easy to get into.27Bstroke6 wrote:One is the use of too many total input buttons to choose from, if button sharing is taking place in any one input mode (e.g. alpha, numeric, etc.) Research suggests that when you can't provide a separate button for every letter (e.g., a real keyboard) it's best to to use the absolute minimum -- ideally only one in conjunction with some other modality of input. An example is a mouse, which can select in 2-D space plus one "button" (if we consider left click only).
And I do really like that. It's just that the analog pad is the one key, preferably along with the R and L buttons, that I would like to keep separated from the keyboard entry so that the analog pad and shoulder buttons can be reserved for mouse emulation.The Dasher model does away with the button entirely by controlling all input exclusively through mouse movements (or in the PSP case the analog pad).
Also, after testing Dasher, I have some concern that the analog pad might not be sensitive enough for Dasher - it's not all that easy or comfortable to control, especially when you need mouse-like behaviour and precision. Nevertheless, I think with some tweaking you might still get a workable setup. and I definitely think it's worth to port Dasher to the PSP, even if only to wow people with.
Agreed. I'm trying to avoid that as much as possibe. But in this case, there's something to be said for the system I'm using. First of all, you can basically know the two button combination for the keys from looking at the user interface directly. Right now I'm barely reinforcing that - in fact, the redistribution of letters over the buttons might just harm it more than it helps - there's a lot to be won there.This is certainly not the only viable model, of course. But multiple buttons are to be avoided, and this problem becomes even more intense if the meaning of any given button can change in the course of input.
Also, you're mostly not moving your fingers, just like on a real keyboard, you can hold your fingers of both hands over the buttons, and they won't generally have to move at all. So you can start to memorise the button-finger combinations. And you can put down your PSP on a table and it is almost like a real keyboard in that respect.
Agreed. But my system doesn't do that all that much.Worst case: multiple buttons with changing input definitions in a single input mode.
Yep. But I know enough about linguistics and such to pull that off well if necessary. However, my first goal is to make a very light and easy, non learning system. Not that many systems really benefit from learning anyway - that can, after all, also interfere with the changing buttons concept, of which MS Office's automatically adjusting drop-down menus are a very good (or bad) example.Dictionary-based systems (you must be careful of existing broad patents once you get into this) basically come in two flavors, static and learning. The former is simple to implement and fairly limited, while the latter is much more powerful and of course more difficult to implement (and to do right, since you don't want to "contaminate" the learning dictionary with errors).
True. But like I said, it's the analog button and shoulder buttons that I'd prefer to keep free (mouse movement, word selection, left click, right click - it's worth noting that Dasher doesn't do a lot of these things, and my system would be a lot more natural when, say, filling out a form or editing text - but you could get used to switching to Dasher and then back to an editing system also, I suppose).It's worth noting that another advantage of minimizing the number of input buttons in the input choice set is that it allows for more "modeless" input to applications. E.g., if an input scheme requires choosing from among four buttons, those buttons are not available for the application when in input mode. On the other hand, if the input mechanism uses a totally different part of the device (e.g. analog pad) the buttons are still free in a modeless operational sense. Again, other models are of course possible.
I will probably make the system configurable - in a situation where the left and right analog buttons are available, the dictionary system would win a lot from being able to use them to get into the dictionary directly and autoselect the first suggestion with a double-click for instance, rather than through the (SELECT) button-menu, and get faster to the CAPS and Numbers/Symbol option.
I still have to work out a little which features will be used most, and in which setting (obviously, a phase one/no dictionary implementation can do without the dictionary options, making it much simpler)
Have you tried the latest version yet at all? I'd like to know what you think. I'll be polishing it up, but then I'll soon start working on a basic phase 1 version on the psp.
Last edited by Arwin on Fri Aug 05, 2005 9:59 pm, edited 1 time in total.
-
- Posts: 23
- Joined: Thu Jul 07, 2005 3:56 pm
If the analog pad is insufficiently sensitive for 2-D Dasher input, then that would be a significant problem. I suspect we won't know that one way or another until there's a PSP test implementation. While the Dasher folks have worked out variations that use 1-D input, or even simple button pushes (down to just one button I believe), they are less attractive (and slower) in the general-form input case than standard Dasher 2-D input. However, it's pretty impressive that they've figured out how to do full alphanumeric input in such incredibly limited hardware cases.
Some sort of extension for handling "mouse clicks" and line editing would indeed be necessary -- but there are various ways that could be done without leaving the Dasher input mode.
A lot will depend on real-world testing (gee, what a surprise!)
Some sort of extension for handling "mouse clicks" and line editing would indeed be necessary -- but there are various ways that could be done without leaving the Dasher input mode.
A lot will depend on real-world testing (gee, what a surprise!)
I agree that testing is important. Hence my prototyping before I actually even begin to code on the PSP itself.27Bstroke6 wrote:A lot will depend on real-world testing (gee, what a surprise!)
And while we're on the subject of testing ... you tested p-sprint Turbo's latest version yet? ;) There's a lot that can still be improved in terms of graphical feedback, but this seems to work pretty ok. I also think there's a more efficient key layout to be found, but that would, like real keyboards, increase the learning curve considerably. Something which Dasher didn't go for either.
I'm thinking of writing a small trainer application to speed up learning the keys, and add some typing exercises and speed measurements, just for the fun of it (and of course because it really helps - I've learnt to type with a typing tutor on PC once, and that got me really addicted and made me a proficient typer :) ).
I think, by the way, that the PSP would be a good platform to do Dasher in 3D even. Plenty of raw power in that area. You could let the letters come out placed in 2D circles that flow over a bended 3D path straight into the screen. That way you preserve the visual word-formation, but can use less movement to actually select one of the 'tunnels'
-
- Posts: 23
- Joined: Thu Jul 07, 2005 3:56 pm
Yes, a "3-D" approach might indeed be viable (and very interesting) to consider if necessary. In fact, the Dasher folks have looked at extended input models (including an experimental one using Peano curves). However, I probably should clarify one point. What I called 2-D analog pad Dasher input would be called 1-D by the Dasher project, since all alphanumeric input choices originate in a 1-D vertical line starting at the right of the display. So their terminology is tied to that display facet, not to the dimensions of input device movement. So what we're now calling 3-D would be called 2-D using "official" Dasher terminology.
Last edited by 27Bstroke6 on Sat Aug 06, 2005 12:18 am, edited 1 time in total.
I always update the link in the first post, and usually in the download update the version.txt document. The latest screenshot should normally be the one last posted in this thread.emumaniac wrote:any chance of posting your latest file and news again like you did earlier, it helps to keep websites updated.
Does that help?
The new version is up on the front page of pspupdates. Also here is the release thread:
http://www.pspupdates.com/forum/showthread.php?t=10324
http://www.pspupdates.com/forum/showthread.php?t=10324
Yep, but it does have the wrong screenshot. Also, I'd like to point out that so far I've nearly always updated this thread first, and then the pspupdates.com thread. ;)Indomie wrote:The new version is up on the front page of pspupdates. Also here is the release thread:
http://www.pspupdates.com/forum/showthread.php?t=10324
Which doesn't really mean as much, except that you don't need to look in any other threads than this one. ;)
hmm, just noticed that I actually hadn't updated it ... Had some connection issues this morning (night) and left without waiting for the page to come back. Still said version 0.8!emumaniac wrote:yeah a lot of people want to stick the original release place (ie this one and not the Premium Forum)
glad to see you update here first :)
0.9 up there as of now.
well, I read an introduction to C this morning to brush up on the basics. And it should be that - really basic, but I'll still be really happy when I see it working on the PSP ;).
I suppose the best thing to do later on is to integrate it with the stdio, so that it becomes a standard keyboard method that people can use when they port source direclty.
I suppose the best thing to do later on is to integrate it with the stdio, so that it becomes a standard keyboard method that people can use when they port source direclty.
-
- Posts: 23
- Joined: Thu Jul 07, 2005 3:56 pm
I was just thinking that it would be nice to be able to port keyboard dependent software to the psp without having to go in and change all headers, especially since the psp doesn't really have anything as an alternative by default.27Bstroke6 wrote:All new keyboard methods belong in separate libraries, not in stdio. Further "contamination" of stdio (there's been far too much over the last 30 years -- and I've been watching it since the first version back then with V6 Unix) is to be avoided if at all possible.
But I think I understand what you mean - you could probably setup a keyboard driver for stdio.h or something, right?
Anyway, I just got it working in its raw form. :)
Here's a preview of the PSP code. There's still a bug with backspace in there. The source is there also, but don't mind it too much, I'm just starting - this is my first PSP project and my first C project in more than 10 years, so I just wanted to get it to work first, and then think about a better structure later (as in making functions).
Things will get better and more easily integrateable into your own code, and of course I'll be working on a nicer interface, and then add the dictionary.
But hey! It works :)
See first post for download.
Things will get better and more easily integrateable into your own code, and of course I'll be working on a nicer interface, and then add the dictionary.
But hey! It works :)
See first post for download.
Last edited by Arwin on Mon Aug 08, 2005 8:06 pm, edited 1 time in total.
Some minor adjustments:
- START now saves your line to p-spout.txt in the root of your memcard. I thought this would be nice to do because that makes p-sprint the first util with which you can write and save a note to a txt file, as far as I know.
- moved screenshot to R button
Download updated in first post.
- START now saves your line to p-spout.txt in the root of your memcard. I thought this would be nice to do because that makes p-sprint the first util with which you can write and save a note to a txt file, as far as I know.
- moved screenshot to R button
Download updated in first post.
really good and some points
First, I *really* like the idea of two-press combos to type! I also
like the way the middle letters are slightly raised- matches the
buttons well.
Second, it feels backwards to me...I continuously hit the
second press, then the first. For some reason, when I locate
e.g. 'n' on the screen, my fingers go right to the mini version of the layout
and I press circle first, then square. maybe that would be better switched!
Next, capital letters are too intermixed to make them modal...ever
use the Palm Pilot's Grafitti system? Consider a combo that makes
the following single letter capitalized, then returns to lower. (Grafitti
also has a combo to swap b/t lower and upper mode for acronyms)
Also, consider using a trigger instead of select. Repeat isn't very important. Maybe left trigger for upper case + numbers.
Finally, we're going to need a ~ (tilde) in there for URLs really soon!
This will enable so much.
I can't wait for a basic text editor. It will be useful. An interface for wget, too! Or lynx.......keep up the good work!
like the way the middle letters are slightly raised- matches the
buttons well.
Second, it feels backwards to me...I continuously hit the
second press, then the first. For some reason, when I locate
e.g. 'n' on the screen, my fingers go right to the mini version of the layout
and I press circle first, then square. maybe that would be better switched!
Next, capital letters are too intermixed to make them modal...ever
use the Palm Pilot's Grafitti system? Consider a combo that makes
the following single letter capitalized, then returns to lower. (Grafitti
also has a combo to swap b/t lower and upper mode for acronyms)
Also, consider using a trigger instead of select. Repeat isn't very important. Maybe left trigger for upper case + numbers.
Finally, we're going to need a ~ (tilde) in there for URLs really soon!
This will enable so much.
I can't wait for a basic text editor. It will be useful. An interface for wget, too! Or lynx.......keep up the good work!