A Keyboard Layout With A Compose Key For Mac

Aug 20, 2019  Notes: Not all keyboards are available in all countries or regions. You can see where characters are located on keyboards for various languages, including what characters are produced when using the shift and option keys by following the instructions in About Keyboard Viewer.; Apple notebook built-in keyboards do not include a numeric keypad, and may have slight variations. A compose key implementation with a keyboard layout will work all over the OS in any application, not just in Cocoa applications. It can be switched on and off with the UI by selecting another keyboard layout. There is a visual feedback while typing the compose combination (which slightly changes the behaviour).

< Xorg

This article describes the basics of Xorg keyboard configuration. For advanced topics such as keyboard layout modification or additional key mappings, see X keyboard extension or Extra keyboard keys respectively.

The Xorg server uses the X keyboard extension (XKB) to define keyboard layouts. Optionally, xmodmap can be used to access the internal keymap table directly, although this is not recommended for complex tasks. Also systemd's localectl can be used to define the keyboard layout for both the Xorg server and the virtual console.

Note: XKB options can be overridden by the tools provided by some desktop environments such as GNOME and KDE.
  • 1Viewing keyboard settings
  • 2Setting keyboard layout
    • 2.2Using X configuration files
  • 3Frequently used XKB options
    • 3.5Configuring compose key
    • 3.7Switching state immediately when Caps Lock is pressed
  • 5Adjusting typematic delay and rate

Viewing keyboard settings

You can use the following command to see the actual XKB settings:

Third party utilities

There are some 'unofficial' utilities which allow to print specific information about the currently used keyboard layout.

  • xkb-switch-gitAUR:
  • xkblayout-state-gitAUR:

Setting keyboard layout

This article or section needs expansion.

Reason: Udev also comes into play (for example when plugging in a keyboard), undoing changes by setxkbmap (Discuss in Talk:Xorg/Keyboard configuration#)

Keyboard layout in Xorg can be set in multiple ways. Here is an explanation of used options:

This article shows you how to download and install the Cisco AnyConnect Secure Mobility Client version 4.3 on a Mac Computer. Prior to installing click here to review the Guidelines and Limitations section of the release notes. AnyConnect Secure Mobility Client is a modular endpoint software product. Download cisco anyconnect mac.

  • XkbModel selects the keyboard model. This has an influence only for some extra keys your keyboard might have. The safe fallback are pc104 or pc105. But for instance laptops usually have some extra keys, and sometimes you can make them work by simply setting a proper model.
  • XkbLayout selects the keyboard layout. Multiple layouts may be specified in a comma-separated list, e.g. if you want to quickly switch between layouts.
  • XkbVariant selects a specific layout variant. For instance, the default sk variant is qwertz, but you can manually specify qwerty, etc.
  • XkbOptions contains some extra options (comma-separated). Used for specifying layout switching, notification LED, compose mode etc. See the #Frequently used XKB options section for examples.
Note: You must specify as many variants as the number of specified layouts. If you want the default variant, specify an empty string as the variant (the comma must stay). For example, to have the default us layout as primary and the dvorak variant of us layout as secondary, specify us,us as XkbLayout and ,dvorak as XkbVariant.

The layout name is usually a 2-letter country code. To see a full list of keyboard models, layouts, variants and options, along with a short description, open /usr/share/X11/xkb/rules/base.lst. Alternatively, you may use one of the following commands to see a list without a description:

  • localectl list-x11-keymap-models
  • localectl list-x11-keymap-layouts
  • localectl list-x11-keymap-variants [layout]
  • localectl list-x11-keymap-options

Examples in the following subsections will have the same effect, they will set pc104 model, cz as primary layout, us as secondary layout, dvorak variant for us layout and the Alt+Shift combination for switching between layouts. See xkeyboard-config(7) for more detailed information.

Note: Fcitx/IBus users may find these methods not work, or just work for a while, since they will try to control keyboard layout. Fcitx users need to set the first input method to be Keyboard - layout. See Fcitx#Input methods configuration. IBus users need to enable 'Use system keyboard layout' option in Preference -> Advanced if using X configuration files, or manually specify the layout if using setxkbmap. See IBus#Non US keyboards

Using setxkbmap

setxkbmap sets the keyboard layout for the current X session only, but can be made persistent in xinitrc or xprofile. This overrides system-wide configuration specified following #Using X configuration files.

The usage is as follows (see setxkbmap(1)):

To change just the layout (-layout is the default flag):

For multiple customizations:

Using X configuration files

Note:xorg.conf is parsed by the X server at start-up. To apply changes, restart X.

The syntax of X configuration files is explained in Xorg#Configuration. This method creates system-wide configuration which is persistent across reboots.

Here is an example:

Using localectl

For convenience, the tool localectl may be used instead of manually editing X configuration files. It will save the configuration in /etc/X11/xorg.conf.d/00-keyboard.conf, this file should not be manually edited, because localectl will overwrite the changes on next start.

The usage is as follows:

To set a model, variant or options, all preceding fields need to be specified, but the preceding fields can be skipped by passing an empty string with '. Unless the --no-convert option is passed, the specified keymap is also converted to the closest matching console keymap and applied to the console configuration in vconsole.conf. See localectl(1) for more information.

To create a /etc/X11/xorg.conf.d/00-keyboard.conf like the above:

Frequently used XKB options

Switching between keyboard layouts

To be able to easily switch keyboard layouts, first specify multiple layouts between which you want to switch (the first one is the default). Then specify a key (or key combination), which will be used for switching. For example, to switch between a US and a Swedish layout using the CapsLock key, use us,se as an argument of XkbLayout and grp:caps_toggle as an argument of XkbOptions.

You can use other key combinations than CapsLock, they are listed in /usr/share/X11/xkb/rules/base.lst, start with grp: and end with toggle. To get the full list of available options, run the following command:

Terminating Xorg with Ctrl+Alt+Backspace

By default, the key combination Ctrl+Alt+Backspace is disabled. You can enable it by passing terminate:ctrl_alt_bksp to XkbOptions. This can also be done by binding a key to Terminate_Server in xmodmap (which undoes any existing XkbOptions setting). In order for either method to work, one also needs to have DontZap set to 'off' in ServerFlags; however, from at least version R6.8.0 (year 2004) [1] this is the default.

Swapping Caps Lock with Left Control

To swap Caps Lock with Left Control key, add ctrl:swapcaps to XkbOptions. Run the following command to see similar options along with their descriptions:

Enabling mouse keys

Mouse keys is disabled by default and has to be manually enabled by passing keypad:pointerkeys to XkbOptions. This will make the Shift+NumLock shortcut toggle mouse keys.

See also X keyboard extension#Mouse control for advanced configuration.

Configuring compose key

Though typically not on traditional keyboards, a Compose key can be configured to an existent key.

The Compose key begins a keypress sequence that involves (usually two) additional keypresses. Usage is typically either for entering characters in a language that the keyboard was not designed for, or for other less-used characters that are not covered with the AltGr modifier. For example, pressing Compose'e produces é, or Compose--- will produce an 'em dash': .

Though a few more eccentric keyboards feature a Compose key, its availability is usually through substituting an already existing key to it. For example, to make the Menu key a Compose key use the Desktop environment configuration, or pass compose:menu to XkbOptions (or setxkbmap: setxkbmap -option compose:menu). Allowed key substitutions are defined in /usr/share/X11/xkb/rules/base.lst:

If the desired mapping is not found in that file, an alternative is to use xmodmap to map the desired key to the Multi_key keysym, which acts as a compose key by default (note that xmodmap settings are reset by setxkbmap).

Key combinations

The default combinations for the compose keys depend on the locale configured for the session and are stored in /usr/share/X11/locale/used_locale/Compose, where used_locale is for example en_US.UTF-8.

You can define your own compose key combinations by copying the default file to ~/.XCompose and editing it. Alternatively, create an empty ~/.XCompose and include the default one using include '%L', for example:

The compose key works with any of the thousands of valid Unicode characters, including those outside the Basic Multilingual Plane. Take a look at the Compose(5) man page, it explains the format of the XCompose files.

However, GTK does not use XIM by default and therefore does not follow ~/.XCompose keys. This can be fixed by forcing GTK to use XIM by adding export GTK_IM_MODULE=xim and/or export XMODIFIERS='@im=none' to ~/.xprofile.

Tip: XIM is very old, you might have better luck with other input methods: SCIM, Uim, IBus, etc. See Localization#Input methods for details.
Note: XIM will prevent insertion of Unicode characters with the Ctrl+Shift+u combination.

Currency sign on other key

Most European keyboards have a Euro sign (€) printed on on the 5 key. For example, to access it with Alt+5, use the lv3:lalt_switch and eurosign:5 options.

The Rupee sign (₹) can be used the same way with rupeesign:4.

Switching state immediately when Caps Lock is pressed

Those who prefer typing capital letters with the Caps Lock key may experience a short delay when Caps Lock state is switched, resulting in two or more capital letters (e.g. THe, ARch LInux). This behaviour stems from typewriters.

Compose

Some more popular operating systems have removed this behaviour, either voluntarily (as it can be confusing to some) or by mistake, however this is a question of preference. Bug reports have been filed on the Xserver bug tracker, as there is currently no easy way to switch to the behaviour reflected by those other operating systems. For anyone who would like to follow up the issue, bug reports and latest working progress can be found at [2] and [3].

Workaround

First, export your keyboard configurations to a file:

In the file xkbmap, locate the Caps Lock section which begins with key <CAPS>:

and replace whole section with the following code:

Save and reload keyboard configurations:

Consider making it a service launching after X starts, since reloaded configurations do not survive a system reboot.

One-click key functions

To assign an additional one-click function to a modifier key, you can use xcape. For example it is possible to have CapsLock work as Escape when pressed alone, and as Control when used with another key. First set the Control swapping using setxkbmap as mentioned earlier, and xcape to set the Escape association:

You can set multiple associations separated with a semicolon, e.g.: Caps_Lock=Escape;Shift_L=Escape.

If you hold a key for longer than the timeout value (default 500 ms), xcape will not generate a key event.

Adjusting typematic delay and rate

The typematic delay indicates the amount of time (typically in milliseconds) a key needs to be pressed and held in order for the repeating process to begin. After the repeating process has been triggered, the character will be repeated with a certain frequency (usually given in Hz) specified by the typematic rate. Note that these settings are configured separately for Xorg and for the virtual console.

Using xset

The tool xset can be used to set the typematic delay and rate for an active X server, certain actions during runtime though may cause the X server to reset these changes and revert instead to its seat defaults.

Usage:

For example to set a typematic delay to 200ms and a typematic rate to 30Hz, use the following command (use xinitrc to make it permanent):

Issuing the command without specifying the delay and rate will reset the typematic values to their respective defaults; a delay of 660ms and a rate of 25Hz:

Using XServer startup options

A more resistant way to set the typematic delay and rate is to make them the seat defaults by passing the desired settings to the X server on its startup using the following options:

  • -ardelay milliseconds - sets the autorepeat delay (length of time in milliseconds that a key must be depressed before autorepeat starts).
  • -arinterval milliseconds - sets the autorepeat interval (length of time in milliseconds that should elapse between autorepeat-generated keystrokes).

See Xserver(1) for a full list of X server options and refer to your display manager for information about how to pass these options.

See also

  • Madduck guide on extending XKB (archived at Wayback Machine)
Retrieved from 'https://wiki.archlinux.org/index.php?title=Xorg/Keyboard_configuration&oldid=600710'
    Search