Skip to content

Global Hotkeys

Chris Smashe edited this page Jun 23, 2026 · 6 revisions

Global Hotkeys

Global hotkeys let you trigger TypeWhisper from any application without bringing the app to the foreground. This page covers the available hotkeys, the Shortcuts settings panel, and how global hotkey detection works on Wayland.

The Shortcuts panel: evdev backend status, the global-on-Wayland toggle, the main dictation hotkey, activation mode, and the prompt palette shortcut

Available hotkeys

Hotkey What it does
Main dictation hotkey The one global hotkey that starts/stops dictation (behavior depends on your activation mode).
Prompt palette hotkey Optional hotkey that opens the prompt palette.
Recent-transcriptions palette Opens the palette of recent transcriptions.
Copy-last-transcription Copies your most recent transcription.
Transform-selection Voice-edits the text currently selected in another application.

See Dictation for how the main hotkey behaves in Toggle, Push to talk, and Hybrid activation modes.

The recent-transcriptions palette, opened with its hotkey: a searchable list of your recent transcriptions

Status block

The top of the Shortcuts panel reports what the active hotkey backend can actually do, so you know whether your hotkey fires globally before you rely on it:

Field What it shows
Active The active backend's display name.
Display server Your session type (wayland, x11, …).
Capture scope Global (works in any focused window) or Focused only (TypeWhisper window).
Press/release support Whether the backend can deliver key-release events (needed by Push to talk and Hybrid).

Keyboard-access banner

On Wayland, when TypeWhisper can't yet read keyboard event nodes, a banner explains that the evdev backend needs read access to /dev/input/event* and offers an Enable keyboard access action. Approving its single admin prompt installs a keyboard-scoped uaccess udev rule at /etc/udev/rules.d/61-typewhisper-input.rules that grants your currently active session read access to keyboard devices immediately — no logout, no reboot. The rule is narrower and more secure than joining the input group: it is scoped to keyboards (not mice/touchpads) and to your session.

On init systems without systemd-logind (Devuan, Alpine without elogind) uaccess has no effect, so the rule's GROUP="input" fallback applies and setup adds you to the input group instead — that grant only takes effect after you log out and back in, and TypeWhisper tells you when a re-login is needed. See Wayland notes.

Capability-mismatch warning

If the active backend can only deliver key presses (no releases) while your activation mode is Push to talk or Hybrid — both of which need release events — a warning appears suggesting you switch to Toggle or enable a backend that supports press+release.

Shortcuts settings panel

The GNOME auto-setup flow: the gsettings binding preview, the Set up automatically and Remove integration buttons, and the manual command to copy

Auto-setup

The Shortcuts settings panel includes per-desktop shortcut writers with a one-click auto-setup flow. This registers your configured TypeWhisper hotkey with the active desktop environment so you do not have to hand-edit config files. A preview shows exactly which lines will be added — your existing shortcuts are preserved — and a Remove integration button undoes the binding. Auto-setup is offered only when a writer matches your detected desktop.

Bind a custom shortcut manually

For desktops without auto-setup (or if you prefer), bind any key combination to the copyable command:

typewhisper

When TypeWhisper is already running, invoking this command toggles dictation in the existing instance rather than launching a second copy. The panel shows per-desktop instructions for GNOME, KDE, Hyprland, Sway, XFCE, Cinnamon, and MATE (falling back to generic guidance otherwise).

On Hyprland and Sway, which support separate press/release binds, the panel additionally offers a true push-to-talk pair (copyable individually or together):

# Hyprland
bind  = CTRL SHIFT, SPACE, exec, typewhisper record start
bindr = CTRL SHIFT, SPACE, exec, typewhisper record stop

# Sway
bindsym --no-repeat $mod+space exec typewhisper record start
bindsym --release   $mod+space exec typewhisper record stop

Wayland global hotkey detection

On Wayland, TypeWhisper detects global hotkeys through an evdev backend that reads /dev/input/event* directly. Because it reads input devices directly, the configured shortcut fires regardless of which window has focus.

  • Enabled by default.
  • Requires read access to keyboard event nodes, granted by the keyboard-scoped uaccess udev rule the first-run setup installs (applied to the active session immediately — no logout — with GROUP="input" as the fallback on init systems without logind).
  • Fallback chain: if the evdev path is unavailable, it falls back to the XDG portal, then to focused-only SharpHook.
  • Can be turned off from Settings → Shortcuts to keep focused-only behavior.

The Read keyboard events globally on Wayland toggle is shown in the Shortcuts panel screenshot at the top of this page.

For more on Wayland-specific behavior and setup, see Wayland notes.

Related pages

  • Dictation — activation modes for the main dictation hotkey.
  • Wayland notes — evdev backend, the keyboard uaccess rule, and portal fallbacks.
  • Desktop integration — autostart and tray behavior.
  • Prompts — actions surfaced through the prompt palette.

Changelog

Date Change
2026-06-17 Initial version.
2026-06-17 Added Shortcuts panel and auto-setup screenshots.
2026-06-17 Added recent-transcriptions palette screenshot.
2026-06-17 Documented the Status block (backend/display server/scope/press-release), the input-group banner and command, the capability-mismatch warning, the manual custom-shortcut flow (incl. XFCE/Cinnamon/MATE and Hyprland/Sway push-to-talk binds), and the auto-setup preview and Remove-integration action.
2026-06-23 v0.10.0: replaced the input-group banner with the Enable keyboard access flow — a keyboard-scoped uaccess udev rule that applies to the active session immediately (no logout), with input-group fallback only on non-logind systems.

Clone this wiki locally