GNU/Linux >> Znalost Linux >  >> Linux

Přemapujte klíče bez xmodmap nebo jakýchkoli nástrojů X

Nejprve dobrá zpráva

Systémová konzole Linux má absolutně vlastní sadu mapování klávesnice, která lze spravovat pomocí nástrojů z kbd balíček, konkrétně dumpkeys a showkey pro zjišťování a loadkeys k načtení přizpůsobeného mapování. Otázka SuperUser Jak změnit mapu kláves konzole v Linuxu? má odpověď s dobrými informacemi o tom, jak tyto nástroje používat.

A teď ta špatná zpráva

I když je pravda, že tyto nástroje vám umožní přemapovat klíče na linuxové konzoli, aniž byste museli používat xmodmap nebo vyžadují, aby X běžel, budou pouze ovlivnit mapování kláves na virtuální textové konzoli. Změny nebudou mít absolutně žádný vliv na grafické prostředí, protože systém XInput/evdev X čte přímo ze vstupních zařízení a provádí vlastní zpracování.

Pokud jste tedy doufali, že se vyhnete použití xmodmap tím, že jen přemapuji na konzoli a nechám to platit všude, se obávám, že to nepůjde. Ve skutečnosti byste museli přemapovat obě konzole (pomocí loadkeys ) a X11 (pomocí metody jako xmodmap ), abyste všude používali stejné rozložení klávesnice.

Řešení xmodmap pomalost (a chybovost, protože jeho přemapování jsou závadná a netrvalá v desktopových prostředích, která používají přepínání rozložení) by znamenalo definovat zcela nový rozložení klávesnice založené na jakémkoli rozložení, které jste dříve používali, spíše než na použití runtime modifikací. Při spuštění X byste načetli toto nové, přemapované rozvržení místo toho, co nyní používáte. (Zdá se, že toto je nyní jediné způsob, jak spolehlivě upravit rozložení klávesnice v nedávném Ubuntusu – a možná i dalších distribucích – jako jejich xmodmap již není užitečné.)

Informace o definování a používání vlastního xkb rozložení klávesnice, viz:

  1. Jak na to:Definice vlastního rozložení klávesnice ve Wiki komunity Ubuntu.
  2. Jak upravit rozložení klávesnice v Linuxu, příspěvek na blogu Romana Giannettiho.

Oba byly napsány letos (2014), takže informace by měly být aktuální. Informace z wiki Ubuntu by měly být použitelné pro jakoukoli distribuci, z větší části, protože všechny používají xkb systému v X.


Ve skutečnosti existují způsoby, jak přemapovat na dostatečně nízké úrovni, aby se daly aplikovat na celý systém, ať už X11 nebo ne, a staly se důležitějšími než kdy jindy, když jsme svědky nástupu Waylandských skladatelů, kteří zanedbávají odhalení uživatelského rozhraní pro přemapování libinputu. podporu.

V zásadě potřebujete překonfigurovat, jak vstupní vrstva jádra překládá surové skenovací kódy na kódy kláves, než se dostanou do konzole nebo do evdev API, na kterém jsou X11 a Wayland.

Jsem si vědom dvou způsobů, jak toho dosáhnout:

  1. Upravte hardwarovou databázi (hwdb ) vstup pro vaši klávesnici. udev vám to umožní přidáním souborů pravidel do /etc/udev/hwdb.d/ a spuštění opětovného sestavení databáze pomocí systemd-hwdb update a poté vynucení jeho použití bez restartu pomocí udevadm trigger .

    Tato stránka ArchiWiki obsahuje úplné pokyny a výslovně říká, že bude fungovat pro vstup X11 i konzole.

  2. Existuje démon nazvaný evdevremapkeys, který byl speciálně napsán pro přemapování klíčových událostí na zařízeních evdev na podporu přemapování opičích záplat do klientů evdev, kteří je nepodporují, jako jsou například skladatelé Wayland.

    V zásadě používá stejný přístup jako ovladače uživatelského prostoru jako G15Daemon, které potřebují kompenzovat nestandardní vstupní zařízení. (Otevřete zařízení evdev, spolkněte všechny události, které má v úmyslu přemapovat, aby je nemohlo vidět nic jiného, ​​co na zařízení poslouchá, a poté odešlete opravené události prostřednictvím uinput API pro vytváření vstupních zařízení na úrovni jádra z uživatelského prostoru.)


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

  2. Linux – Hard Remap Keys?

  3. Jak zkopírovat rozložení diskových oddílů celého disku pomocí standardních nástrojů?

  1. Klávesové zkratky, které jsou nezávislé na rozložení klávesnice?

  2. Používáte Ubuntu bez znalosti Linuxu?

  3. 4 nástroje ke stažení libovolného souboru pomocí příkazového řádku v Linuxu

  1. Jak otevřít sériový port v linuxu bez změny pinu?

  2. Jak převést \uXXXX unicode na UTF-8 pomocí konzolových nástrojů v *nix

  3. Přemapujte klávesy Win, Ctrl a Alt na Linuxu