Mouse keys

Revision as of 13:29, 9 August 2024 by imported>Tsarivan613 (→‎History: Added citation needed flags)
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

Template:Short description 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. Today, mouse keys usually refers to the numeric keypad layout standardized with the introduction of the X Window System in 1984.<ref>The X Keyboard Extension: Protocol Specification</ref><ref>The X Keyboard Extension: Library Specification</ref>

LayoutEdit

File:X window system MouseKeys default numpad layout.svg
X window system MouseKeys default numpad layout
key action
Template:Key press with Template:Key press

enable/disable MouseKeys

Template:Key press cursor up
Template:Key press cursor down
Template:Key press cursor right
Template:Key press cursor left
Template:Key press cursor up and left
Template:Key press cursor up and right
Template:Key press cursor down and right
Template:Key press cursor down and left
Template:Key press select primary button
Template:Key press select modifier button
Template:Key press select alternate button
Template:Key press click selected button
Template:Key press double click selected button
Template:Key press depress selected button
Template:Key press release selected button
Template:Key press enter key

HistoryEdit

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/missing/unavailable equipment

In 1987, Macintosh Operating System 4.2 Easy Access provided MouseKeys support to all applications. Easy access was (de)activated by clicking the Template:Key press key five times.Template:Citation needed

By the early 2020s, with graphics tablets becoming more common, a configuration change may be required before enabling MouseKeys.Template:Citation needed

MouseKeysAccelEdit

File:X Protocol MouseKeysAccel Control Trajectory.svg
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.<ref>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</ref> 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.

<math> \mathrm{action\_delta} \times \mathrm{mk\_max\_speed} \times \left(

\frac{ i } { \mathrm{mk\_time\_to\_max} } \right)

^{\frac{ 1000 + \mathrm{mk\_curve} } { 1000 }} </math>

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.<ref>GNOME Documentation Library, Configuring a Keyboard-Based Mouse Template:Webarchive</ref>

EnablingEdit

Under the X Window Systems X.Org and XFree86 used on Unix-like systems such as Linux, BSD, and AIX, MouseKeys (and MouseKeysAccel), when available, is nominally (de)activated by Template:Key press+Template:Key press+Template:Key press.<ref>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</ref> MouseKeys without acceleration (also known as plot mode) is sometimes available with Template:Key press+Template:Key press. This is nominally independent of the window manager in use, but may be overridden, or even made unavailable by a configuration file.

Before enabling, it may be necessary to change system configuration. The setxkbmap utility can be used to change the configuration under Xorg:<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

setxkbmap -option keypad:pointerkeys

There are also various utilities to allow more precise control via user-configurable key bindings, such as xmousekeys and xdotool.

Since KDE 5, MouseKeys is enabled and configured by systemsetting5<ref>KDE.org, Using System Settings, System Settings Categories and Modules</ref> (Hardware → Input Devices → Mouse → Keyboard Navigation)

MouseKeys for Apple Inc.'s macOS is enabled and configured via the Accessibility<ref>Apple.com, Mac OS X, Accessibility</ref> ([apple] → System Preferences → Accessibility → Mouse & Trackpad).

Microsoft changed the method of enabling between Windows 2000,<ref>Microsoft.com, Accessibility Tutorials, Windows 2000, Turning MouseKeys On and Off</ref> Windows XP (added diagonal cursor movement and MouseKeysAccel),<ref>Microsoft.com, Accessibility Tutorials, Windows XP, MouseKeys: Control the Mouse Pointer Using the Numeric Keypad</ref> and Windows Vista.<ref>Microsoft.com, Accessibility Tutorials, Windows Vista, Control the mouse pointer with the keyboard (Mouse Keys)</ref>

Common usageEdit

Replacing the mouse keysEdit

Replacing the mouse keys by the numeric keypad is as follows:

Typing Template:Key press (with the numeric keypad) is equivalent to clicking the selected button. By default, the selected button is the primary button (nominally under index finger, left button for most right-handed people and right button for most left-handed people). Typing Template:Key press (with the numeric keypad) selects the alternate button (nominally under ring finger, right button for most right-handed people and left button for most left-handed people). Typing Template:Key press (with the numeric keypad) selects the modifier button (nominally under the middle finger, middle button of a 3-button mouse). Typing Template:Key press (with the numeric keypad) selects the primary button. The selection remains in effect until a different button is selected.

Assignment of left/middle/right button to primary/modifier/alternate, alternate/modifier/primary, or something else is settable by many means. Some mice have a switch, that swaps assignment of right and left keys. Many laptop bioses have a setting for mouse button assignment. Many window managers have a setting that permutes the assignment. Within the X Window System core protocol, permutation can be applied by xmodmap.

Moving the pointer by keysEdit

Other than Template:Key press, all other numeric keys from the numeric keypad are used to move the pointer on the screen. For example, Template:Key press will move the pointer upwards, while Template:Key press will move it diagonally downwards to the left.

See alsoEdit

ReferencesEdit

Template:Reflist