Introduction: Instructable: Keyboard System
In honor of Instructables.com, this will be a collaboration. My goal is to arrive at a finished design, as a product of the collaboration. Several steps in this instructable are reserved for posting specific ideas, programming logic, flowcharts, or other ideas related to that particular step, which advance the original concept toward completion.
As we already know, this instructable will serve as a record of any development of the seed concept, as it takes place. There are four optional paths to expand upon, within this instructable (Steps 4 thru 7). Each of these optional steps can be developed independently. Each does not need to be analogous to any other. They can be appended on a first come first serve basis.
I am hoping to decide upon what would be considered (by the group) as the most favorable programming method for the finished product. For now, I am asking that the simple requirements presented here are observed.
I have initially supplied these optional steps as clean slates, so that anyone may start from scratch, if they so choose, as long as the specific operational requirements in a particular step are met.
There are no limitations as to how much relative credit any particular contributor would be entitled to.
NOTE: As is the case with any forum, one should avoid editing any post, after a comment or response has been made to it.
Step 1: Keyboard Fundementals
I've added this step to collect information relevant to any and all of the following control options. This is for discussion of hardware/firmware combinations for detecting key presses, switch denouncing options, software development for the alternate layout display, etc.
Keep in mind that it is best if the different control options are easily usable with the remainder of the system. This is to allow easy testing of different options, and provide for the possibility of others adding different control schemes.
This step added by nah.
Step 2: Primary Keyboard Layout
Please take a look at this figure of a new input device for a common PC.
This is the plan view of a primary keyboard layout. Almost all of the keys required for normal English typing are present. Other characters are found on one or more alternate keyboard layouts, which are accessed by a mouse (or other input device).
You might immediately recognize that the letter keys are arranged alphabetically, and broken down into groups that each begin with a vowel. The entire alphabet is within reach of one hand.
This keyboard works in conjunction with a mouse having a middle scroll-wheel button. When the wheel button is pressed, an alternate keyboard layout is displayed on the screen, in front of all other applications. (An example of a screen layout is shown in Step 3.) When this occurs, the alternate character set shown on the screen becomes active. In essence, the wheel button acts as an additional keyboard control character.
(Hereafter, the terms character-set and layout may be used conjunctively.)
In addition to the letter keys, there are the familiar editing keys and keyboard control keys (CTRL, SHFT, ALT). These auxiliary keys are present in this primary layout, as well as all other layouts.
The wheel button is used to instruct the operating system to accept alternate layouts, while using a single keyboard. This keyboard system is designed to configure the English alphabet in an intuitive arrangement, without requiring the user to remove his or her hand from that arrangement to use the mouse (or other input device).
The primary keyboard layout is posted here for reference only. It would not be required as a screen layout.
Step 3: Alternate Keyboard Layout
This is a screen view of an alternate keyboard layout, as it appears when the wheel button is pressed. Note that the normal display is faded to a watermark appearance while the layout is shown transparently over it. One or more characters from the alternate layout may then be generated. (For logistics, see steps 4 thru 7.)
Also note that the screen layout has the same shape as the keyboard itself. If a respective key is pressed on the keyboard while the screen layout is shown, the appropriate alternate character will be generated at the cursor, in the current application.
Once the alternate character set is de-activated (by one of Steps 4 thru 7), the alternate keyboard layout disappears from the screen and the display returns to normal brightness. Typing then continues with the primary keyboard layout.
Naturally, the programming for this functionality would also need to run transparently to every software application, so that all the normal keyboard characters are available within each application.
The following are the four options to be expanded upon and evaluated by this forum. My hope is that one may be selected as most preferable, with respect to ease in programming or integration within common operating systems.
Step 4: Wheel Option A
For an alternate keyboard layout, the wheel button would need to be pressed and held to activate the alternate character set and to display its layout on the screen. One or more alternate characters can be generated while the wheel button is held down. Releasing the wheel button de-activates any alternate layout.
For a third layout, the wheel button would need to be pressed, held, and scrolled one position up. For a fourth layout, the wheel is scrolled one position down, and so on. All of the alternate layouts may be accessed by continually scrolling the wheel button in either direction, as it is held down.
Step 5: Wheel Option B
If the wheel button is pressed and released, an alternate layout is locked in place (toggled) while one or more alternate characters are selected. As this occurs, the characters are generated within the current application as they are entered. Once the wheel button is pressed again (toggled), the alternate layout is de-activated.
To access more than one alternate layout, the wheel button would need to be pressed, then scrolled to a specific layout, and then released.
Step 6: Wheel Option C
An alternate layout appears when the wheel button is pressed. In this mode, the alternate layout is programmed to remain on the screen after the wheel button is released, and until or unless a single character is selected on the actual keyboard. Once a character key is pressed, the layout display disappears automatically, and that alternate character set is thus de-activated.
In this mode, the wheel button would need to be pressed and held, to type more than one character from an alternate keyboard layout.
To access more than one alternate layout, the wheel button would need to be pressed and scrolled to a specific layout. The wheel is then released (for typing a single character) or held (for typing one or more characters).
Step 7: Wheel Option D
In this mode, an alternate layout may be accessed, activated, and locked by simply scrolling the wheel button (without pressing it).
In this mode, the alternate layout is set to disappear and de-activate as soon as one character is generated.
The alternate layout may be locked by pressing the wheel button and holding it, before any character is generated.
It can also be locked by pressing and releasing the wheel button to toggle it, before any character is generated. In this case, the layout would need to be toggled again to de-activate it.
Step 8: Finished Product
First, it is my intent to credit any members who contribute to the end product of this instructable, and grant them a fair share of all rights to any intellectual property resulting from their collaboration.
I am prepared to allow the forum to help in deciding who deserves credit, in terms of a share in the resulting IP rights, and to what percentage. As a rule, the first one to introduce a particular element, by providing a specification, will receive credit for it.
If anyone desires a share based on his/her contribution, all I ask is that they identify themselves by name (and eventually other info), either with this instructable or by private message to me. In fairness to other members, your contribution should be posted at this instructable, to be viewed by the forum, in order to merit legitimate inventorship.
Finally, contributors need not be concerned with acquiring the IP rights, themselves, as that aspect may be considered covered to every practical extent, and already available to them.