Mouse keys
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
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
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
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.
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
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
- FilterKeys feature
- StickyKeys feature
- Togglekeys feature
- On-screen keyboard
References
- ↑ The X Keyboard Extension: Protocol Specification
- ↑ The X Keyboard Extension: Library Specification
- ↑ 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
- ↑ GNOME Documentation Library, Configuring a Keyboard-Based Mouse
- ↑ 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
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Apple.com, Mac OS X, Accessibility
- ↑ Microsoft.com, Accessibility Tutorials, Windows 2000, Turning MouseKeys On and Off
- ↑ Microsoft.com, Accessibility Tutorials, Windows XP, MouseKeys: Control the Mouse Pointer Using the Numeric Keypad
- ↑ Microsoft.com, Accessibility Tutorials, Windows Vista, Control the mouse pointer with the keyboard (Mouse Keys)