Home
Wireless Freedom!
Resources for the Disabled
 
 
The Hawking Project
  Specifications
  eLocutor v1
  eLocutor v2
eLocutor v3
  Other Software
  ...and Hardware
  Institute
   
Who We Are
Site Map
Contact Us
 

   
 
 
 
Input Device | Input Device Driver | Menu | Cursor Control | Keyboard | Output | Environment
 
 
The Input device will be a minimum of a two-way or binary switch (having only two states – ON and OFF) for both navigation as well as data entry. Common devices like the mouse are very cheap and already have the necessary ergonomics and engineering reliability to take the action of a binary switch with readymade connectivity in terms of cabling and device drivers.

We will use one of these, limiting action to the basic click, either left or right button, configurable on demand. Support for even more sophisticated levels of the mouse and other pointers, and for specialized gadgets like head-movement devices, that may have multiple switch functions, can be added later.

 
 
 
The Input Device called Binary Switch will be connected to the Serial Port of the system.The Input Device Driver will ride above the system’s default serial driver. The Driver will have to provide events such as ON and OFF. In addition, the driver will also have to provide a fixed number of user configurable timeout events. For example the user may configure the driver to return four timeout events – 10 milliseconds, 50 milliseconds, 750 milliseconds and 1 second for the OFF position and two timeout events – 25 milliseconds and 500 milliseconds for the ON position. In case there are multiple staggered events, like the example used, the driver will keep sending the events until the system eats up (reacts to) an event. If the system does eat up an event, then the driver will reset its internal timer.
 
 
 
The Menu will only have two levels of options – categories and sub-categories. If the device is in the OFF position for <timeout1> period, the system will automatically cycle through the categories. When the switch is releases the option is selected. To cycle through sub-categories, the switch is maintained in an OFF position for <timeout2> period. On release the sub-category is selected.

We must look at ways to utilize the standard menus built into programs, so that we combine the functionalities of data entry and navigation simultaneously. This way we ensure that a person using the Hawking Communicator can blend into an organization without necessarily needing specialized software or hardware. The concept outlined below calls for the Hawking Communicator to be a seamless combination of data entry and command interface, so that the user is able to enter data directly into an active application whenever necessary.

 
 
 
The cursor control is the default control that is activated when the system starts up. Basically, the control has four positions – North, East, South and West. To cycle through these options, the switch is kept in the ON position for <timeout3> period. On release the direction is selected, and the cursor moves in that direction. On clicking the switch movement of the cursor stops.

Alternatively, use a combination of radial and linear movement. When the cursor is activated, it will start working, either from the top left-hand corner, or from wherever the cursor is at that point, sweeping the screen, with a transparent line or shadow. When it points in the right direction, a second click <timeout3> will activate the linear action, moving down the radial line till it reaches the desired area, when releasing the button will stop it, and the next click <timeout1> will select the letter (word, phrase, sentence, command button). This should get the user to the desired point faster, with less clicks.

 
 
 
Option 1

The screen keyboard will be simulated using the keypad behavior on modern mobile phones. The keyboard is a 4x4 matrix of multifunction keys. The behavior of each key will need to be elaborated, but will be based on the Siemens S 35 phone.

Also the keys will have different interpretations based on the current state of the system. For example — the keyboard will represent the English alphabet (the default language of the system) only when the system is in a mode accepting input — when document is active, when file names are to be specified. At other times the keyboard could function as short cuts to menus — categories and sub-categories.

Option 2

In the basic data entry mode, sets appear in easy to navigate palettes. Each set comprises letters, words (nouns and verbs etc presented in a standard form each, the option to modify being automatically invoked once a choice is made) and phrases and possibly even complete sentences, plus extension sets of characters, including numerals and punctuation marks, depending on the user’s own preferred patterns of usage, modeled over time. Thus the “keyboard” is much more intuitive than an emulation of a standard QWERTY-based 104-key device would be.

If the Display area is centered in the middle of the screen, the palettes can be placed around it, the exact size of each palette depending in the number of choices possible for that path. To get started, we must have preset standards for assemblages of words and phrases, which will either be available in the public domain or will need to be analyzed from historical data.

 
 
We need to offer two basic types of output at all times, viz., voice and text. Text should be available in an environment that allows for easy transfer to either mode, hence the need for typical menu items as Cut, Copy, Paste, etc to be easily accessible. All other standard output modes will be controlled from the application being used. Thus Communicator will incorporate two built-in output modes, and all standad platform output modes will be accessed by invoking the commands built into the active application.
 
 
 
The Environment is a transparent overlay on the active screen. Thus, two applications (Communicator and one other) are functional and accessible at all times. Communicator also controls activation of the other application’s functions, as in menu items and cursor control. It must always be trivial to identify where text is being pasted, thus enabling the process of writing directly in the other application. Switching between control of Communicator and control of the other application needs to be defined for simplicity.

However, the Environment has a second, important, context as a text interface. In this aspect of its functionality, the user will choose an Environment that will preselect the most likely choice of words and phrases needed at that point. Thus, the user may be in a social situation, or in the work environment and so on. The throughput in data entry should therefore be much faster, since suitable choices will be generated and displayed rather than inappropriate ones.

 
 
 
Device Manager|Communicator Driver|Message Handler|Register Device Callback|Device Callback
 
 
 
The Hawking Communicator interacts with the Input Device(s) as shown in fig 1.1 below.
 
 
 
The Device Manager is responsible for installing and configuring the various input devices supported by the system (not detailed here).
 
 
 
The Communication Device Driver is the component responsible for communicating with simple drivers like the Serial Port, COM Port and the USB driver.
 
 
The Message Handler manages all the messages for the system. It handles the messages for Input Devices through Callback Functions.

Interface between Message Handler and the Communicator Device Driver.

 
 
 
The RegisterDeviceCallback function registers a Callback function with the Communicator Device Driver. This is to be used by the Communicator Device Driver to send events back to the Message Handler.

int RegisterDeviceCallback (WNDPROC lpfnDeviceCallback, int iParams);

Parameters
lpfnDeviceCallnback
[in] Pointer to callback within the Message Handler.

iParams
[in] Zero for now. Later could be used to send some parameters.

Return
If the function succeeds the function returns a non-negative value. If it fails it returns a negative value with the error code.

 
 
 
The DeviceCallback function is the callback that is used by the Communicator Device Driver to send messages and events to the Message Handler.

int far DeviceCallback (int iDeviceId, int iMsgId, long lParams, int iStatus);

Parameters
iDeviceId
[in] The Id of the device sending the message / event

iMsgId
[in] The Id of the message

lParams
[in] The low order word will provide the position (if relevant) of the device in X coordinates (lower byte) and Y coordinates (higher byte) respectively in pixels.
The high order word will provide a time stamp for the event.

iStatus
[in] Will provide status information, zero for now

Return
If the function succeeds the function returns a non-negative value. If it fails it should return a negative value with the error code.

 
FIG 1.1
 
 
 
 
Legend:
Orange area represents the unique code that will be written in the Communicator.
Green area is the comprehensive device driver for each platform.
Cream area is the standard code and drivers supplied with devices and platforms.
 
 
 Home | Wireless Freedom! | Resources for the Disabled | Who We Are | Contact Us