Mouse keys

From Wikipedia, the free encyclopedia
Jump to: navigation, search

Mouse keys is a feature of some graphical user interfaces that uses the keyboard (especially numeric keypad) as a pointing device (usually replacing a mouse). Its roots lie in the earliest days of visual editors when line and column navigation was controlled with arrow keys (e.g., hjkl, ctl-esdx). Today, mouse keys usually refers to the numeric keypad layout standardized with the introduction of the X Window System in 1984.[1][2]

Layout[edit]

X window system MouseKeys default numpad layout
key action
Num Lock With Alt-Shift

Enable/Disable MouseKeys

8 cursor up
2 cursor down
6 cursor right
4 cursor left
7 cursor up and left
9 cursor up and right
3 cursor down and right
1 cursor down and left
/ select primary button
* select modifier button
- select alternate button
5 click selected button
+ double click selected button
0 depress selected button
. release selected button
Enter Enter Key

History[edit]

Historically, MouseKeys supported GUI programs when many terminals had no dedicated pointing device. As pointing devices became ubiquitous, the use of mouse keys narrowed to situations where a pointing device was missing, unusable, or inconvenient. Such situations may arise from the following:

  • precision requirements (e.g., technical drawing)
  • disabled user or ergonomics issues
  • environmental limits (e.g., vibration in car or plane)
  • broken equipment

MouseKeysAccel[edit]

X window system MouseKeysAccel trajectory
parameter meaning
mk_delay milliseconds between the initial key press and first repeated motion event
mk_interval milliseconds between repeated motion events
mk_max_speed steady speed (in action_delta units) applied each event
mk_time_to_max number of events (count) accelerating to steady speed
mk_curve ramp used to reach maximum pointer speed

The X Window System MouseKeysAccel control applies action (usually cursor movement) repeatedly while a direction key {1,2,3,4,6,7,8,9} remains depressed.[3] When the key is depressed, an action_delta is immediately applied. If the key remains depressed, longer than mk_delay milliseconds, some action is applied every mk_interval milliseconds until the key is released. If the key remains depressed, after more than mk_time_to_max actions have been applied, action_delta magnified mk_max_speed times, is applied every mk_interval milliseconds.

The first mk_time_to_max actions increase smoothly according to an exponential.


\mathrm{action\_delta} \times \mathrm{mk\_max\_speed} \times \left(
 \frac{ i } { \mathrm{mk\_time\_to\_max} } \right)
^{\frac{ 1000 + \mathrm{mk\_curve} } { 1000 }}

mk_curve result
-1000 uniform speed, linearly increasing action
0 uniform acceleration, linearly increasing speed
1000 uniform jerk, linearly increasing acceleration

These five parameters are configurable.[4]

Enabling[edit]

Under the X Window Systems Xorg and XFree86 used on Unix-like systems such as Linux, BSD, and AIX, MouseKeys (and MouseKeysAccel) is nominally (de)activated by Alt+LeftShift+Num Lock.[5] MouseKeys without acceleration (also known as plot mode) is sometimes available with Shift+NumLock. This is independent of the Window Manager in use and may be overridden by a configuration file. There are also various utilities to allow more precise control via user-configurable key bindings, such as xmousekeys and xdotool.

MouseKeys for Apple Inc's Mac OS X is enabled and configured via the Accessibility[6] ([apple] => System Preferences => Accessibility => Mouse & Trackpad).

Microsoft changed the method of enabling between Windows 2000,[7] Windows XP (added diagonal cursor movement and MouseKeysAccel),[8] and Windows Vista.[9]

See also[edit]

References[edit]

  1. ^ The X Keyboard Extension: Protocol Specification
  2. ^ The X Keyboard Extension: Library Specification
  3. ^ The X Keyboard Extension: Library Specification, Library Version 1.0/Document Revision 1.1, X Consortium Standard, X Version 11 / Release 6.4, Keyboard Controls, 10.5.2, The MouseKeysAccel Control
  4. ^ GNOME Documentation Library, Configuring a Keyboard-Based Mouse
  5. ^ The X Keyboard Extension: Library Specification, Library Version 1.0/Document Revision 1.1, X Consortium Standard, X Version 11 / Release 6.4, Keyboard Controls, 10.5.1, The MouseKeys Control
  6. ^ Apple.com, Mac OS X, Accessibility
  7. ^ Microsoft.com, Accessibility Tutorials, Windows 2000, Turning MouseKeys On and Off
  8. ^ Microsoft.com, Accessibility Tutorials, Windows XP, MouseKeys: Control the Mouse Pointer Using the Numeric Keypad
  9. ^ Microsoft.com, Accessibility Tutorials, Windows Vista, Control the mouse pointer with the keyboard (Mouse Keys)