Accessibility Computing Numerical Pointer

From OLPC
Jump to: navigation, search

Introduction

The Accessibility Computing Numerical Pointer is intended to be implemented as an auxiliary program which can be accessed from any program which wishes to use it.

The idea is that by using just ten digit keys and one extra key to signify ENTER that pointer events and associated information can be generated and passed to the calling program. In addition, the Accessibility Computing Numerical Pointer is intended to provide some other facilities, such as generating Unicode characters and selecting colours.

The system could be used in various systems, not just the OLPC laptop. If being implemented using a basic telephone keypad it is suggested that the star key be used to represent the Enter key of this specification.

What ACNP is

An alternate (or simplified) means of Human-Computer interface where use of normal inputs such as the mouse, touchpad, keyboard, etc... are not adequate for either the human due to physical limitations or the computer due to software or other limitations.
See discussion

Specification

The Numerical Pointer Room

The numerical pointer is specified for three-dimensional space so that it is available for possible advanced usage. It is recognized that most usage will be in two-dimensional space and that the z value will not be used in those situations.

At entry the following values are set.

integer ACNP_leftbutton=0
integer ACNP_rightbutton=0
integer ACNP_centrebutton=0
integer ACNP_shiftkey=0
integer ACNP_controlkey=0
integer ACNP_altkey=0
integer ACNP_pointerevent=0
integer ACNP_x=0
integer ACNP_y=0
integer ACNP_z=0
integer ACNP_expansion=0

The display could show three checkboxes for the buttons and three checkboxes for the keys, set out in a three wide by two high grid with left button above shift key, right button above control key and centre button above alt key; a set of radio buttons for the events and some text boxes for the values of x, y and z.

The response to keys is as follows.

Keying 0 moves to the Unicode room if ACNP_expansion has the value 0.

Keying 1 sets ACNP_leftbutton to have a value of 1.

Keying 2 sets ACNP_rightbutton to have a value of 1.

Keying 3 sets ACNP_centrebutton to have a value of 1.

Keying 4 moves to the key setting alcove.

Keying 5 moves to the pointer event selection alcove.

Keying 6 moves to the expansion and resetting alcove.

Keying 7 moves to the x value alcove.

Keying 8 moves to the y value alcove.

Keying 9 moves to the z value alcove.

key setting alcove

Keying 1 sets ACNP_shiftkey to have a value of 1 and then the operating point moves to the Numerical Pointer room.

Keying 2 sets ACNP_controlkey to have a value of 1 and then the operating point moves to the Numerical Pointer room.

Keying 3 sets ACNP_altkey to have a value of 1 and then the operating point moves to the Numerical Pointer room.

pointer event selection alcove

Keying 0 sets a null event by seeting the value of ACNP_pointerevent to 0. This is in effect so as to report back to the calling program that the call to the Accessibility Computing Numerical Pointer is cancelled and that no event is being provided. The operating point then moves to the Numerical Pointer room.

Keying 1 to 7 selects an event type by setting the value of ACNP_pointerevent. The operating point then moves to the Numerical Pointer room.

The meanings of the various values of ACNP_pointerevent are as follows.

0 means no event.

1 means a button or buttons pressed event.

2 means a button or buttons released event.

3 means a button or buttons clicked event.

4 means a button or buttons double clicked event.

5 means a pointer move event.

6 means a pointer enters over event.

7 means a pointer exits off event.

expansion and resetting alcove

The reestting alcove is useful for resetting buttons back to 0 if one or more of them has been pressed by mistake.

Keying 1 sets ACNP_leftbutton to have a value of 0. The operating point then moves to the Numerical Pointer room.

Keying 2 sets ACNP_rightbutton to have a value of 0. The operating point then moves to the Numerical Pointer room.

Keying 3 sets ACNP_centrebutton to have a value of 0. The operating point then moves to the Numerical Pointer room.

Keying 4 sets ACNP_shiftkey to have a value of 0. The operating point then moves to the Numerical Pointer room.

Keying 5 sets ACNP_controlkey to have a value of 0. The operating point then moves to the Numerical Pointer room.

Keying 6 sets ACNP_altkey to have a value of 0. The operating point then moves to the Numerical Pointer room.

Keying 7 causes the operating point to move to the on-screen-button pushing alcove. (feature added on 2008-05-10)

Keying 8 causes the operating point to move to the on-screen-button mouse-over alcove. (feature added on 2008-05-12)

Keying 9 copies the value in ACNP_x to ACNP_expansion. The operating point then moves to the Numerical Pointer room.

Please note that at the present time there is no use of the value in ACNP_expansion other than that it must be 0 in order to gain access to the Unicode room and the Colour Selection room. There is, at present, no need to alter the value in ACNP_expansion. The mechanism has been included so as to allow later expansion of the capabilities of the Accessibility Computing Numerical Pointer system. In such a situation someone could set the value of ACNP_expansion and then keying 0, the effect of the 0 then being defined by the value in ACNP_expansion according to the specification at that time.

x value alcove

Upon entering the alcove the value of ACNP_x is set to 0.

Keying any of 0 through to 9 causes the value of ACNP_x to multiplied by 10 and the value indicated by the key added to it. For example, keying 3 causes the value of ACNP_x to be multiplied by 10 and then have 3 added to it.

Keying Enter moves to the Numerical Pointer room.

y value alcove

Upon entering the alcove the value of ACNP_y is set to 0.

Keying any of 0 through to 9 causes the value of ACNP_y to multiplied by 10 and the value indicated by the key added to it. For example, keying 3 causes the value of ACNP_y to be multiplied by 10 and then have 3 added to it.

Keying Enter moves to the Numerical Pointer room.

z value alcove

Upon entering the alcove the value of ACNP_z is set to 0.

Keying any of 0 through to 9 causes the value of ACNP_z to multiplied by 10 and the value indicated by the key added to it. For example, keying 3 causes the value of ACNP_z to be multiplied by 10 and then have 3 added to it.

Keying Enter moves to the Numerical Pointer room.

on-screen-button pushing alcove

Upon entering the alcove the value of ACNP_onscreenbutton is set to 0.

Key 1 to push on-screen-button 1, keying sets the value of ACNP_onscreenbutton to 1.
Key 2 to push on-screen-button 2, keying sets the value of ACNP_onscreenbutton to 2.
Key 3 to push on-screen-button 3, keying sets the value of ACNP_onscreenbutton to 3.
Key 4 to push on-screen-button 4, keying sets the value of ACNP_onscreenbutton to 4.
Key 5 to push on-screen-button 5, keying sets the value of ACNP_onscreenbutton to 5.
Key 6 to push on-screen-button 6, keying sets the value of ACNP_onscreenbutton to 6.
Key 7 to push on-screen-button 7, keying sets the value of ACNP_onscreenbutton to 7.
Key 8 to push on-screen-button 8, keying sets the value of ACNP_onscreenbutton to 8.
Key 9 to push on-screen-button 9, keying sets the value of ACNP_onscreenbutton to 9.

For example, keying 673 would allow a person unable to use a mouse, either due to infirmity or because the system has no mouse facility, to push on-screen-button 3 as if it had been clicked by using a mouse.

Please note that keying 0 is not defined at present, to allow for possible expansion.

For the avoidance of doubt, the idea is that, in the example, when keying 673 to push on-screen-button 3 as if it had been clicked by using a mouse, there is no need to key Enter after keying 673.

The on-screen-button pushing facility is added on 2008-05-10.

on-screen-button mouse-over alcove

Upon entering the alcove the value of ACNP_onscreenbutton is set to 0.

Key 1 to mouse-over on-screen-button 1, keying sets the value of ACNP_onscreenbutton to 1.
Key 2 to mouse-over on-screen-button 2, keying sets the value of ACNP_onscreenbutton to 2.
Key 3 to mouse-over on-screen-button 3, keying sets the value of ACNP_onscreenbutton to 3.
Key 4 to mouse-over on-screen-button 4, keying sets the value of ACNP_onscreenbutton to 4.
Key 5 to mouse-over on-screen-button 5, keying sets the value of ACNP_onscreenbutton to 5.
Key 6 to mouse-over on-screen-button 6, keying sets the value of ACNP_onscreenbutton to 6.
Key 7 to mouse-over on-screen-button 7, keying sets the value of ACNP_onscreenbutton to 7.
Key 8 to mouse-over on-screen-button 8, keying sets the value of ACNP_onscreenbutton to 8.
Key 9 to mouse-over on-screen-button 9, keying sets the value of ACNP_onscreenbutton to 9.

For example, keying 683 would allow a person unable to use a mouse, either due to infirmity or because the system has no mouse facility, to mouse-over on-screen-button 3 as if it had been moved over by using a mouse.

Please note that keying 0 is not defined at present, to allow for possible expansion.

For the avoidance of doubt, the idea is that, in the example, when keying 683 to mouse-over on-screen-button 3 as if it had been moved over by using a mouse, there is no need to key Enter after keying 683.

The on-screen-button pushing facility is added on 2008-05-12.

The Unicode Room

At entry the following values are set.

integer ACNP_codepoint=0

The response to keys is as follows.

Keying 0 moves to the Colour Selection room if ACNP_codepoint has the value 0. If ACNP_codepoint does not have the value 0 then the value of ACNP_codepoint is multiplied by 16.

Keying any of 1 through to 8 causes the value of ACNP_codepoint to be multiplied by 16 and the value indicated by the key added to it. For example, keying 3 causes the value of ACNP_codepoint to be multiplied by 16 and then have 3 added to it.

Keying 9 moves to the higher values alcove.

Keying Enter leaves the Accessibility Computing Numerical Pointer and, depending upon the implemenation, may generate a keypressed event or similar to the program from which the Accessibility Computing Numerical Pointer was accessed.

higher values alcove

Keying 0 through to 6 is used to enter the following hexadecimal items, updating the value of ACNP_codepoint and going back to the Unicode room.

key 0 for hexadecimal 9
key 1 for hexadecimal A
key 2 for hexadecimal B
key 3 for hexadecimal C
key 4 for hexadecimal D
key 5 for hexadecimal E
key 6 for hexadecimal F

(Responses for 7, 8, 9 and Enter are not defined at present, they should be implemented as "do nothing".)

The Colour Selection Room

At entry the following values are set.

integer ACNP_red=0
integer ACNP_green=0
integer ACNP_blue=0
integer ACNP_alpha=0
integer ACNP_colourpurpose=0
integer ACNP_presetcolour=0

The response to keys is as follows.

Keying 1 moves to the red value alcove.

Keying 2 moves to the green value alcove.

Keying 3 moves to the blue value alcove.

Keying 4 moves to the alpha value alcove.

Keying 8 moves to the colour purpose alcove.

Keying 9 moves to the preset colours alcove.

Keying Enter leaves the Accessibility Computing Numerical Pointer and, depending upon the implemenation, may generate a colour change event or similar to the program from which the Accessibility Computing Numerical Pointer was accessed.

red value alcove

Upon entering the alcove the value of ACNP_red is set to 0.

Keying any of 0 through to 9 causes the value of ACNP_red to be multiplied by 10 and the value indicated by the key added to it. For example, keying 3 causes the value of ACNP_red to be multiplied by 10 and then have 3 added to it.

Keying Enter moves to the Colour Selection room.

green value alcove

Upon entering the alcove the value of ACNP_green is set to 0.

Keying any of 0 through to 9 causes the value of ACNP_green to be multiplied by 10 and the value indicated by the key added to it. For example, keying 3 causes the value of ACNP_green to be multiplied by 10 and then have 3 added to it.

Keying Enter moves to the Colour Selection room.

blue value alcove

Upon entering the alcove the value of ACNP_blue is set to 0.

Keying any of 0 through to 9 causes the value of ACNP_blue to be multiplied by 10 and the value indicated by the key added to it. For example, keying 3 causes the value of ACNP_blue to be multiplied by 10 and then have 3 added to it.

Keying Enter moves to the Colour Selection room.

alpha value alcove

Upon entering the alcove the value of ACNP_alpha is set to 0.

Keying any of 0 through to 9 causes the value of ACNP_alpha to be multiplied by 10 and the value indicated by the key added to it. For example, keying 3 causes the value of ACNP_alpha to be multiplied by 10 and then have 3 added to it.

Keying Enter moves to the Colour Selection room.

colour purpose alcove

Upon entering the alcove the value of ACNP_colourpurpose=0 is set to 0.

Keying any of 0 through to 9 causes the value of ACNP_colourpurpose=0 to be multiplied by 10 and the value indicated by the key added to it. For example, keying 3 causes the value of ACNP_colourpurpose=0 to be multiplied by 10 and then have 3 added to it.

Keying Enter moves to the Colour Selection room.

0 means foreground colour
1 means background colour
2 means line colour
3 means fill colour
11 means first decoration colour
12 means second decoration colour
13 means third decoration colour

preset colours alcove

Upon entering the alcove the value of ACNP_presetcolour is set to 0.

Keying any of 0 through to 9 causes the value of ACNP_presetcolour to be multiplied by 10 and the value indicated by the key added to it. For example, keying 3 causes the value of ACNP_presetcolour to be multiplied by 10 and then have 3 added to it.

Keying Enter moves to the Colour Selection room.

0 means black
1 means brown
2 means red
3 means orange
4 means yellow
5 means green
6 means blue
7 means magenta (purple)
8 means grey
9 means white
10 means cyan
11 means pink
12 means dark grey
13 means light grey
14 means lavender (light purple)
15 means mint (light green)
16 means sky (light blue)

Implementation ideas

The system would be implemented by having a wide, not too high, panel appear along the bottom of the screen once entry was requested to the Accessibility Computing Numerical Pointer. The panel would describe the key presses currently available and what they did.

For example, at start up.

0 -> Unicode room

Mouse event generation

1 sets left button

2 sets right button

3 sets centre button

4 -> key setting

5 -> pointer event selection

6 -> expansion and resetting

7 -> x value

8 -> y value

9 -> z value

Certainly, the information above is presented in a vertical column. The panel on the screen would be much wider than tall. Also some abbreviation from the above might be necessary.

If, say, 7 were keyed, the panel would be redrawn showing that the current value of x is 0.

The panel would state that digit keys could be used to set x and that Enter would go back to the main room.

Each digit press would update the value of x in the display.

Keying Enter would redraw the original panel, displaying on that panel the current value of x.

The child would not need a printed manual nor knowledge of the underlying software: he or she would be propmpted by on-screen explanation of which key has which effect at that stage of the process.

Practical implementation on the OLPC laptop