This essay does not describe an existing computer program, just one that should exist. This essay is about a suggested student project in Java programming. This essay gives a rough overview of how it might work. I have no source, object, specifications, file layouts or anything else useful to implementing this project. Everything I have prepared to help you is right here.
This project outline is not like the artificial, tidy little problems you are spoon-fed in school, when all the facts you need are included, nothing extraneous is mentioned, the answer is fully specified, along with hints to nudge you toward a single expected canonical solution. This project is much more like the real world of messy problems where it is up to you to fully the define the end point, or a series of ever more difficult versions of this project and research the information yourself to solve them.
Everything I have to say to help you with this project is written below. I am not prepared to help you implement it; or give you any additional materials. I have too many other projects of my own.
Though I am a programmer by profession, I don’t do people’s homework for them. That just robs them of an education.
You have my full permission to implement this project in any way you please and to keep all the profits from your endeavour.
Please do not email me about this project without reading the disclaimer above.Have a look at my essay on keyboards. In it are various crude ASCII (American Standard Code for Information Interchange) drawings attempting to show keyboard layouts. I would like something to generate much prettier more realistic keyboard layouts.
Here is how it would work. You would find some drawing program to create *.gifs or jpgs of various shapes of keyboard keys. Perhaps having some with darker backgrounds. Your general purpose Applet would read a file describing the keyboard to be drawn and render it realistically. The keyboard configuration file, passed as an Applet parameter, would give the shapes of each key and its legend and perhaps some rough positioning clues. Ideally the program automatically computes the precise x,y coordinates of each key (perhaps using a custom layout manager).
You might allow a list of keyboard descriptor files. Then the user could select which one she wanted to view, or which ones she wanted to view simultaneously, with a pull-down selector.
You could then use screen capture to create *.gifs, or embed the Applet directly in HTML (Hypertext Markup Language) to generate displays dynamically.
If you want to go for something more challenging, create a state machine that lets the user type on the keyboard with mouse clicks, or with the real keyboard and see the keys depress and the type appear in a window. It has to pay attention to things like shift and alt keys and possibly dead keys if you want to simulate European keyboards. You might look at some of my keyboard remapping TSRs (Terminate and Stay Residents) written in heavily commented assembler such as ESPAN, DVORAK and QUEBEC to get some ideas on how they work.
You might eventually evolve this project into a full-scale platform-independent typing tutor modeled after Kriya Typing Tutor or Mavis Beacon. You could use it to help people learn which finger to use to hit which key. For an advanced project, figure out a way to determine which finger the novice used to hit each key and beep and refuse to accept the keystroke when he uses the wrong finger, even if he gets the right key. This requires the invention of some hardware to detect hand or finger positions.
The other way this project could evolve is to aid in preparing documentation to teach novices to use a keyboard. For this you need to find or create a font with glyphs to represent the various keys. You might want alternate glyphs to discriminate between keys that you hit and release and those that you press and hold while you hit some other key. Alternatively you might simply generate screen displays representing the sample keystrokes that can be captured as *.gif images and embedded in the documentation. That technique gets around the problem of creating and distributing the keycap images as a font. The drawback is the *.gifs are much bulkier.
Unicode now has a keycap enclosing character \u20E3, but no font has it and nothing I know of will render text inside it.
You might get your images of the keycaps several ways:
This page is posted
Optional Replicator mirror
Your face IP:[220.127.116.11]
You are visitor number|