GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak přemapovat klávesu Numlock, aby byla smazána?

Kvůli rozložení mé klávesnice chci mít numlock trvale stisknutý a používat klávesu numlock jako klávesu mazání. Nedaří se mi to zprovoznit. Jakékoli nápady, jak to udělat, oceníme.

Edit:Používám Ubuntu 16

Zde je to, co jsem zkusil:

Používejte Xmodmap s numlockx

Inspirováno touto otázkou. Chápu to tak, že xmodmap je zastaralý, takže to pravděpodobně není skvělý nápad.

  • Vytvořte soubor ~/.Xmodmap s řádkem keycode 77 = Delete NoSymbol
  • Spusťte xmodmap ~/.Xmodmap
  • Spusťte numlockx on

To umožňuje, aby numlock fungoval jako mazání a povoluje numerickou klávesnici, dokud poprvé nestisknu klávesu numlock. Potom klávesa numlock deaktivuje numerickou klávesnici.

Použít XKB

  • Upravit /usr/share/X11/xkb/symbols/us mít key <NMLK> { [Delete, Num_Lock] }; na konci základní mapy kláves.
  • restartujte počítač

také zkusil:

  • Upravit /usr/share/X11/xkb/symbols/us mít replace key <NMLK> { [Delete, Num_Lock] }; na konci základní mapy kláves.
  • restartujte počítač

To trpí podobnými problémy jako druhá metoda, možnost mazat funguje, ale klávesa numlock vypíná numerickou klávesnici. Zdá se také, že si nehraje s jinými klávesami, jako je klávesa Windows, když je povolena numerická klávesnice. Líbí se mi, že mohu ovládat numlock pomocí shift+numlock. Nenašel jsem žádný rozdíl mezi používáním nahradit a nepoužíváním.

Přijatá odpověď:

Zde je způsob, jak toho dosáhnout pouze pomocí xkb, což je podle mě lepší než použití xmodmap. Tato odpověď obsahuje více podrobností o tom, čeho jsem chtěl dosáhnout, než původní otázka. Xmodmap a xkb nehrají vždy dobře dohromady, tento přístup umožňuje mnohem větší flexibilitu:

To vše pochází z:https://wiki.archlinux.org/index.php/X_keyboard_extension

Zde je seznam dostupných keysymů, které, jak se zdá, fungují:http://docs.ev3dev.org/projects/grx/en/ev3dev-stretch/c-api/input_keysyms.html

To se provádí ručně, abyste mohli začít s konfigurací, která již na vašem počítači existuje, abyste předešli problémům s kompatibilitou s různými klávesnicemi.
Příklady předchozích spuštění jsou uvedeny v config_files/linux/keyboards

Začněte spuštěním xkbcomp $DISPLAY output.xkb získáte aktuální nastavení klávesnice
.
Poté přidejte:

    interpret osfLeft{
        repeat= True;
        action = RedirectKey(keycode=<LEFT>, clearmodifiers=Lock);
    };
    interpret osfRight{
        repeat= True;
        action = RedirectKey(keycode=<RGHT>, clearmodifiers=Lock);
    };
    interpret osfDown{
        repeat= True;
        action = RedirectKey(keycode=<DOWN>, clearmodifiers=Lock);
    };
    interpret osfUp{
        repeat= True;
        action = RedirectKey(keycode=<UP>, clearmodifiers=Lock);
    };
    interpret osfEndLine{
        repeat= True;
        action = RedirectKey(keycode=<END>, clearmodifiers=Lock);
    };
    interpret osfBeginLine{
        repeat= True;
        action = RedirectKey(keycode=<HOME>, clearmodifiers=Lock);
    };
    interpret osfEscape{
        repeat=True;
        action = RedirectKey(keycode=<ESC>, clearmodifiers=Lock);
    };

do sekce kompatibility vygenerovaného souboru.

Související:Instalace programů do kořenových vs domácích oddílů v Ubuntu?

Na konec sekce typů přidejte:

   type "CUST_CAPSLOCK" {
       modifiers= Shift+Lock;
       map[Shift] = Level2;            // Note that this maps Shift only of {Shift,Lock} to Level2. Alt+Shift will be mapped to Level2
       map[Shift+Lock] = Level3;       // but Lock+Shift won't map to Level2 even without this line.
       map[Lock] = Level3;
       level_name[Level1]= "Base";
       level_name[Level2]= "Shift";
       level_name[Level3]= "Lock";
   };
   interpret osfDelete{
       repeat=True;
       action = RedirectKey(keycode=<DELE>, clearmodifiers=Lock);
   };

Vyhledejte interpret Caps_Lock a změňte LockMods na SetMods takže caps lock pouze nastaví modifikátor, nikoli jej uzamkne.

Chcete-li povolit, aby capslock + WASD fungovaly jako klávesy se šipkami:upravte klávesy <AD02> , <AC01> , <AC02> , <AC03> mít typ CUST_CAPSLOCK a mají příslušně osfUp , osfLeft , osfDown , osfRight na třetí pozici.

Chcete-li povolit, aby capslock + HJKL fungovaly jako klávesy se šipkami:upravte klávesy <AC06> , <AC07> , <AC08> , <AC09> mít typ CUST_CAPSLOCK a mají příslušně osfLeft , osfDown , osfUp , osfRight na třetí pozici.

Chcete-li povolit registraci capslock + 0 jako home a capslock + $ registraci jako end:upravte klíče <AE04> a <AE10> mít typ CUST_CAPSLOCK a mají příslušně osfEndLine a osfBeginLine na třetí pozici.

Chcete-li povolit registraci capslock + mezerník jako escape (užitečné pro vim), upravte klíč <SPCE> mít typ CUST_CAPSLOCK , mít space na druhé pozici a osfEscape na třetí pozici.

Chcete-li změnit klíč numlock na klíč mazání a vytvořit capslock + numlock, vytvořte <NMLK> mají typ CUST_CAPSLOCK , mají pozici jedna a dvě mají osfDelete a pozice tři mají Num_Lock

Nyní nahrajte změněný soubor zpět na server pomocí:xkbcomp output.xkb $DISPLAY .

Pokud vše funguje, umístěte soubor někam, ~/.Xkeymap funguje a vytvořte skript například s názvem ~/start_keyboard.sh s:

#!/bin/bash

xkbcomp ~/.Xkeymap $DISPLAY

Udělejte jej spustitelným (chmod u+x ~/start_keyboard.sh ) a přidejte skript do spouštěcích aplikací.


Ubuntu
  1. 16.04 Klávesa Delete nefunguje?

  2. Jak vynutit smazání souboru?

  3. Jak konsolidovat více Mok klíčů nebo odstranit nepotřebné?

  1. Přemapování vypínače k ​​odstranění?

  2. Jak odstranit panel Gnome?

  3. Jak odstranit všechny řádky souboru ve Vimu

  1. Jak vyměnit/přemapovat klávesu Caps Lock s klávesou Tab?

  2. Jak odstranit úlohy cron

  3. Jak odstranit službu v Kubernetes