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]


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


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


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]


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. The setxkbmap utility can be used to temporary enable mouse keys under Xorg:[6]

setxkbmap -option keypad:pointerkeys

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[7] ([apple] => System Preferences => Accessibility => Mouse & Trackpad).

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

See also[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. ^ "xkeyboard-config manual page". 2012. Retrieved 15 March 2015. 
  7. ^, Mac OS X, Accessibility
  8. ^, Accessibility Tutorials, Windows 2000, Turning MouseKeys On and Off
  9. ^, Accessibility Tutorials, Windows XP, MouseKeys: Control the Mouse Pointer Using the Numeric Keypad
  10. ^, Accessibility Tutorials, Windows Vista, Control the mouse pointer with the keyboard (Mouse Keys)