GNOME Keyboard Layout Switching and Compose Keys

The GNOME desktop environment offers integrated, user-friendly mechanisms for typing in multiple languages and inserting special characters. This article explains how GNOME manages keyboard input sources, the mechanics behind switching between layouts, and the setup and functionality of the Compose Key for extended typographical input.

Keyboard Layout Switching

GNOME manages keyboard layouts directly through the standard Settings application under the Keyboard section (or Region & Language in older GNOME releases). Users can add multiple input languages under the Input Sources list.

Once multiple layouts are configured, GNOME automatically activates an input switcher applet in the top bar. Switching between active layouts is handled using global keyboard shortcuts:

  • Super + Space: Switches to the next input source.
  • Shift + Super + Space: Switches to the previous input source.

Under the hood, GNOME relies on xkbcommon (under Wayland) or standard XKB (under X11) to manage the key-mapping tables. GNOME Shell acts as the compositor and interface layer, detecting the shortcut globally and signaling the input subsystem to switch the active keymap. Advanced users can choose whether input sources apply globally across the entire desktop or individually per application window, configurable via the GNOME Tweaks utility or via GSettings:

gsettings set org.gnome.desktop.input-sources per-window true

The Compose Key

A Compose Key is a dedicated modifier that allows users to type accented letters, mathematical symbols, and non-standard glyphs through intuitive key combinations. For instance, pressing the Compose Key followed by " and a produces ä, while Compose followed by c and = produces €.

By default, the Compose Key is disabled in GNOME. It can be enabled through modern GNOME Settings:

  1. Navigate to Settings > Keyboard.
  2. Locate the Special Character Entry section.
  3. Click Compose Key and select a physical key to repurpose (common choices include Right Alt, Caps Lock, Right Ctrl, or the Menu key).

In distributions running older GNOME interfaces, this configuration is handled via GNOME Tweaks under the Keyboard & Mouse tab.

Custom Sequences and System Integration

GNOME leverages the XKB and IBus input frameworks to process Compose sequences. The system reads the standard compose table mapped to the current system locale, but users can define custom combinations by creating a ~/.XCompose file in their home directory:

include "%L" # Include the default system compose table

<Multi_key> <t> <m> : "™" # Compose + t + m
<Multi_key> <e> <m> : "—" # Compose + e + m (Em dash)

Through the coordination of GNOME Shell, xkbcommon, and localized keymaps, GNOME delivers an input pipeline that balances standard everyday typing with specialized linguistic requirements.