Next: Windows Mouse, Previous: Windows HOME, Up: Microsoft Windows [Contents][Index]

### G.6 Keyboard Usage on MS-Windows

This section describes the Windows-specific features related to keyboard input in Emacs.

Many key combinations (known as “keyboard shortcuts”) that have conventional uses in MS-Windows programs conflict with traditional Emacs key bindings. (These Emacs key bindings were established years before Microsoft was founded.) Examples of conflicts include `C-c`, `C-x`, `C-z`, `C-a`, and `W-SPC`. You can redefine some of them with meanings more like the MS-Windows meanings by enabling CUA Mode (see CUA Bindings).

By default, the key labeled `Alt` is mapped as the `META` key. If you wish it to produce the `Alt` modifier instead, set the variable `w32-alt-is-meta` to a `nil` value.

MS-Windows reserves certain key combinations, such as `Alt-TAB`, for its own use. These key combinations are intercepted by the system before Emacs can see them. You can use the `w32-register-hot-key` function to allow a key sequence to be seen by Emacs instead of being grabbed by Windows. This function registers a key sequence as a hot key, overriding the special meaning of that key sequence for Windows. (MS-Windows is told that the key sequence is a hot key only when one of the Emacs windows has focus, so that the special keys still have their usual meaning for other Windows applications.)

The argument to `w32-register-hot-key` must be a single key, with or without modifiers, in vector form that would be acceptable to `define-key`. The meta modifier is interpreted as the `Alt` key if `w32-alt-is-meta` is `t` (the default), and the hyper modifier is always interpreted as the Windows key (usually labeled with `start` and the Windows logo). If the function succeeds in registering the key sequence, it returns the hotkey ID, a number; otherwise it returns `nil`.

For example, `(w32-register-hot-key [M-tab])` lets you use `M-TAB` normally in Emacs; for instance, to complete the word or symbol at point at top level, or to complete the current search string against previously sought strings during incremental search.

The function `w32-unregister-hot-key` reverses the effect of `w32-register-hot-key` for its argument key sequence.

By default, the `CapsLock` key only affects normal character keys (it converts lower-case characters to their upper-case variants). However, if you set the variable `w32-capslock-is-shiftlock` to a non-`nil` value, the `CapsLock` key will affect non-character keys as well, as if you pressed the `Shift` key while typing the non-character key.

If the variable `w32-enable-caps-lock` is set to a `nil` value, the `CapsLock` key produces the symbol `capslock` instead of the shifted version of they keys. The default value is `t`.

Similarly, if `w32-enable-num-lock` is `nil`, the `NumLock` key will produce the symbol `kp-numlock`. The default is `t`, which causes `NumLock` to work as expected: toggle the meaning of the keys on the numeric keypad.

The variable `w32-apps-modifier` controls the effect of the `Apps` key (usually located between the right `Alt` and the right `Ctrl` keys). Its value can be one of the symbols `hyper`, `super`, `meta`, `alt`, `control`, or `shift` for the respective modifier, or `nil` to appear as the key `apps`. The default is `nil`.

The variable `w32-lwindow-modifier` determines the effect of the left Windows key (usually labeled with `start` and the Windows logo). If its value is `nil` (the default), the key will produce the symbol `lwindow`. Setting it to one of the symbols `hyper`, `super`, `meta`, `alt`, `control`, or `shift` will produce the respective modifier. A similar variable `w32-rwindow-modifier` controls the effect of the right Windows key, and `w32-scroll-lock-modifier` does the same for the `ScrLock` key. If these variables are set to `nil`, the right Windows key produces the symbol `rwindow` and `ScrLock` produces the symbol `scroll`.

Emacs compiled as a native Windows application normally turns off the Windows feature that tapping the `Alt` key invokes the Windows menu. The reason is that the `Alt` serves as `META` in Emacs. When using Emacs, users often press the `META` key temporarily and then change their minds; if this has the effect of bringing up the Windows menu, it alters the meaning of subsequent commands. Many users find this frustrating.

You can re-enable Windows’s default handling of tapping the `Alt` key by setting `w32-pass-alt-to-system` to a non-`nil` value.

The variables `w32-pass-lwindow-to-system` and `w32-pass-rwindow-to-system` determine whether the respective keys are passed to Windows or swallowed by Emacs. If the value is `nil`, the respective key is silently swallowed by Emacs, otherwise it is passed to Windows. The default is `t` for both of these variables. Passing each of these keys to Windows produces its normal effect: for example, `Lwindow` opens the `Start` menu, etc.24

The variable `w32-recognize-altgr` controls whether the `AltGr` key (if it exists on your keyboard), or its equivalent, the combination of the right `Alt` and left `Ctrl` keys pressed together, is recognized as the `AltGr` key. The default is `t`, which means these keys produce `AltGr`; setting it to `nil` causes `AltGr` or the equivalent key combination to be interpreted as the combination of `Ctrl` and `META` modifiers.

#### Footnotes

### (24)

Some combinations of the “Windows” keys with other keys are caught by Windows at a low level in a way that Emacs currently cannot prevent. For example, `Lwindow r` always pops up the Windows ‘`Run`’ dialog. Customizing the value of `w32-phantom-key-code` might help in some cases, though.

Next: Windows Mouse, Previous: Windows HOME, Up: Microsoft Windows [Contents][Index]