GNU/Linux >> Znalost Linux >  >> Linux

Změna rozložení/mapování klávesnice na konzole (tty) i na X agnostickým způsobem X/konzole?

Byl jsem schopen změnit rozložení/mapování klávesnice, když běží X Window System pomocí ~/.Xmodmap (a předpokládám, že byste to mohli také udělat přímo prostřednictvím protokolu X, např. pomocí libxcb jako obalu kolem volání protokolu X).

Dokázal jsem udělat totéž (poněkud) na konzoli/tty (tj. když X neběží) pomocí loadkeys .

Existuje způsob, jak upravit rozložení klávesnice podobně, ale z jediného zdroje , a to tak, že to ovlivní X i konzoli, tzn. způsobem, který je „Agnostik X-and-console“?

(Jediný způsob, který mě napadá, je napsat „ovladač klávesnice“, který komunikuje se vstupním rozhraním jádra, evdev a odešle požadovaný vstup (prostřednictvím uinput ?), nebo tak něco, ale nevím, jestli to má smysl, nebo jestli existuje jednodušší způsob.)

Přijatá odpověď:

Ano, existuje způsob a skutečně to dělá balíček pro nastavení konzole Debianu.

  • Rozvržení klávesnice určuje v podmínkách XKB (model, rozvržení, varianta a možnosti) správce v souboru s názvem keyboard , obvykle /etc/default/keyboard . Toto je jediný zdroj. Lze jej upravit pomocí textového editoru.
  • setxkbmap program dostane stejná nastavení XKB a podle toho nakonfiguruje X11 server.
    • Skript správce po instalaci balíčku pro konfiguraci klávesnice spustí setxkbmap přímo pomocí /etc/default/keyboard nastavení, pokud se ocitne s displejem X11. Tedy dpkg-reconfigure keyboard-configuration spuštění z emulátoru terminálu X11 GUI ovlivní rozložení klávesnice X11.
  • Položka setupcon skript převezme tato nastavení XKB a předá je přes ckbcomp nástroj pro generování mapy klávesnice a načte tuto mapu klávesnice do virtuálních terminálů jádra pomocí loadkeys /kbdcontrol .
    • Tento skript spouští služba při zavádění systému.
    • V ostatních případech jej lze také spustit ručně.

Jiné operační systémy systemd fungují odlišně, ale mají také jeden zdroj.

  • Rozvržení XKB, varianty a možnosti jsou uloženy v /etc/X11/xorg.conf.d/00-keyboard.conf . Toto je jediný zdroj.
    • Tento soubor je přímo čten serverem X11 při spuštění a přímo nastavuje mapu klávesnice X11.
    • Tento soubor je analyzován systemd-localed při spuštění. Soubor nelze užitečně upravovat pomocí textového editoru, když je systemd-localed běží, protože jej služba bezstarostně přepíše vlastními informacemi v paměti.
    • Chcete-li změnit informace XKB, spusťte localectl , který mluví s jiným serverem, který zase mluví s systemd-localed .
  • systemd-localed převede nastavení XKB na název mapy klávesnice virtuálního terminálu pomocí mapování v /usr/share/systemd/kbd-model-map , který pak zapíše do /etc/vconsole.conf . Na rozdíl od systému Debian negeneruje mapy za běhu z informací XKB, ale vybírá pouze předem dodané statické mapy uvedené v mapovém souboru.
  • systemd-vconsole-setup běží na bootstrap, čte /etc/vconsole.conf a načte mapu klávesnice do virtuálních terminálů jádra spuštěním loadkeys .

Další čtení

  • keyboard . Uživatelská příručka pro nastavení konzoly . Debian.
  • ckbcomp . Uživatelská příručka pro nastavení konzoly . Debian.
  • Andrew T. Young (2011). Konfigurace klávesnice .
  • Kde Xkb získává konfiguraci?
  • https://unix.stackexchange.com/a/326804/5132
Související:Skript provede smyčku pouze jednou?
Linux
  1. Jak mohu změnit rozložení vstupní klávesnice v konzole?

  2. Linux:Rozdíl mezi /dev/console , /dev/tty a /dev/tty0

  3. Kde je terminálový pohled na tty7

  1. Změna jazyka a rozložení klávesnice u různých distribucí

  2. Změnit písmo konzoly v textovém režimu?

  3. velikost konzole virsh a tty

  1. Použití Redditu z konzole v roce 2020

  2. Změnit rozložení klávesnice v Lightdm?

  3. Vztah rozložení klávesnice a Xmodmap?