GNU/Linux >> Znalost Linux >  >> Linux

Jak zabránit efektu přepínání Caps-lock, aniž byste jej přemapovali nebo deaktivovali?

Mám program X11, který chytne caps-lock a používá ho. Problém je v tom, že chci deaktivovat běžné přepínání caps-lock, ale zdá se, že tím deaktivuji klíč.

Takže cokoli X11 dostane za stisk klávesy Caps-lock, musí to stále dostat (žádné deaktivování klávesy nebo její přemapování na jinou klávesu), ale bez toho, aby se stisk klávesy převedl na přepínání velkých písmen (což by mohlo být na úrovni jádra? ).

Pokusil jsem se změnit skenovací kód, ale toto jen přemapovalo klíč.
Odstranil jsem záznam capslock pomocí xmodmap také, ale toto také deaktivovalo velká písmena.

Jak mohu říct jádru, aby ignorovalo caps-key (napište jeho běžnou funkci), ale přesto předávalo zprávu X?

Jen pro doplnění podrobností:

‚Program‘, který se snažím spustit, je humanizovaný ‚enso‘.
Když neexistuje žádný klíč, zobrazí se mi chyba „CRITICAL:root:Couldn't find quasimode key“. Když se neobjeví žádná chyba, mohu použít enso s caps, ale zatím jsem nepřišel na to, jak deaktivovat funkci caps, když to enso stále dokáže.

Přijatá odpověď:

Myslím, že mám techniku ​​pro deaktivaci přepínání Capslock klávesu, ale ne úplně deaktivovat klávesu dohromady nebo ji přemapovat na jinou klávesu na klávesnici.

Pokud použijete příkaz:

setxkbmap -option caps:none

Klávesnice se již nebude přepínat. Potvrdil jsem to na svém notebooku se systémem Fedora 14, LED dioda již nesvítí a je normální Capslock funkce je pryč.

Použití xev však stále ukazuje, že je klávesa stisknuta:

$ xev
...
...
KeyPress event, serial 35, synthetic NO, window 0x6800001,
    root 0xb1, subw 0x0, time 261504852, (167,-15), root:(353,268),
    state 0x10, keycode 66 (keysym 0xffffff, VoidSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 35, synthetic NO, window 0x6800001,
    root 0xb1, subw 0x0, time 261504971, (167,-15), root:(353,268),
    state 0x10, keycode 66 (keysym 0xffffff, VoidSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
    ...

Takže události stisknuté klávesy jsou stále ponechány nedotčené pro ostatní aplikace, aby si je mohly vyzvednout.

setxkbmap

Soubor /usr/share/X11/xkb/rules/xorg.lst obsahuje úplný seznam možností, které můžete dát setxkbmap .

Při prohledávání tohoto souboru pro „cap“ jsem si všiml tohoto řádku:

caps:none            CapsLock is disabled

V tomto souboru jsou další hodnoty, takže pokud to není to, co hledáte, možná by se místo toho hodila jedna z těchto alternativních hodnot.

$ grep cap /usr/share/X11/xkb/rules/xorg.lst
  grp:caps_switch      CapsLock (while pressed), Alt+CapsLock does the original capslock action
  grp:caps_toggle      CapsLock
  grp:shift_caps_toggle Shift+CapsLock
  grp:shift_caps_switch CapsLock (to first layout), Shift+CapsLock (to last layout)
  grp:alt_caps_toggle  Alt+CapsLock
  lv3:caps_switch      CapsLock
  lv3:caps_switch_latch CapsLock (chooses 3rd level, latches when pressed together with another 3rd-level-chooser)
  ctrl:nocaps          Make CapsLock an additional Ctrl
  ctrl:swapcaps        Swap Ctrl and CapsLock
  grp_led:caps         CapsLock
  caps                 CapsLock key behavior
  caps:internal        CapsLock uses internal capitalization. Shift "pauses" CapsLock
  caps:internal_nocancel CapsLock uses internal capitalization. Shift doesn't affect CapsLock
  caps:shift           CapsLock acts as Shift with locking. Shift "pauses" CapsLock
  caps:shift_nocancel  CapsLock acts as Shift with locking. Shift doesn't affect CapsLock
  caps:capslock        CapsLock toggles normal capitalization of alphabetic characters
  caps:numlock         Make CapsLock an additional NumLock
  caps:swapescape      Swap ESC and CapsLock
  caps:escape          Make CapsLock an additional ESC
  caps:backspace       Make CapsLock an additional Backspace
  caps:super           Make CapsLock an additional Super
  caps:hyper           Make CapsLock an additional Hyper
  caps:shiftlock       CapsLock toggles Shift so all keys are affected
  caps:none            CapsLock is disabled
  compose:caps         CapsLock
  shift:breaks_caps    Shift cancels CapsLock
  shift:both_capslock  Both Shift-Keys together toggle CapsLock
  shift:both_capslock_cancel Both Shift-Keys together activate CapsLock, one Shift-Key deactivates

Odkazy

  • Zakažte Caps Lock a přemapujte nabídku na Super_R pomocí xmodmap již nefunguje
  • Zakažte a povolte Caps Lock v Ubuntu
  • Zakázat klávesu Caps Lock v systému Linux
  • Klávesnice – úprava nebo zakázání Caps Lock
Související:Rozhodnutí o písmu a určení správného zápisu?
Linux
  1. Jak vypnout bez výzvy k potvrzení?

  2. Jak zabránit náhodnému spuštění příkazu Rm -r *?

  3. Jak předat heslo do su/sudo/ssh bez přepsání TTY?

  1. Jak mohu tarovat adresář bez zachování adresářové struktury?

  2. Jak vytvořit efekt mezipaměti procesoru v C a Java?

  3. Jak používáte doušky na terminálu ke změně velikosti obrázku bez převzorkování?

  1. Jak mohu vypsat soubory v archivu zip, aniž bych jej dekomprimoval?

  2. Jak vyměníte caps lock za ovládání v xfce?

  3. Jak odstranit miliony souborů bez narušení serveru