GNU/Linux >> Linux Esercitazione >  >> Linux

Come prevenire l'effetto di attivazione/disattivazione del blocco maiuscole, senza rimapparlo o disabilitarlo?

Ho un programma X11 che afferra il blocco delle maiuscole e lo usa. Il problema è che voglio disabilitare la normale commutazione del blocco maiuscole, ma così facendo sembra disabilitare la chiave.

Quindi, qualunque cosa X11 ottenga per la pressione di un tasto maiuscole, deve ancora ottenere (senza disabilitare la chiave o rimapparla su un'altra chiave), ma senza che nulla traduca la pressione di un tasto in un interruttore di maiuscole (che potrebbe essere a livello del kernel? ).

Ho provato a cambiare lo scancode, ma questo ha appena rimappato la chiave.
Ho rimosso la voce capslock con xmodmap anche questo, ma questo ha anche disabilitato i maiuscoli.

Come posso dire al kernel di ignorare il tasto maiuscole (rispetto alla sua normale funzionalità), ma continuare a trasmettere il messaggio a X?

Solo per aggiungere un po' più di dettaglio:

Il "programma" che sto cercando di eseguire è umanizzato "enso". Quando non ci sono errori, posso usare enso con caps, ma sofar non ha capito come disabilitare la funzionalità caps mentre enso è ancora in grado di ottenerlo.

Risposta accettata:

Penso di avere una tecnica per disabilitare la commutazione del Capslock chiave ma non disabilitando completamente il tasto insieme o rimappandolo su un altro tasto sulla tastiera.

Se usi il comando:

setxkbmap -option caps:none

La tastiera non si attiverà più. L'ho confermato sul mio laptop con Fedora 14, il LED non si accende più e il normale Capslock la funzionalità è scomparsa.

Tuttavia, l'utilizzo di xev mostra ancora che il tasto è stato premuto:

$ 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
    ...

Quindi gli eventi del tasto premuto vengono ancora lasciati intatti per essere prelevati da altre applicazioni.

imposta mappa xkb

Il file /usr/share/X11/xkb/rules/xorg.lst contiene l'elenco completo delle opzioni che puoi dare a setxkbmap .

Scorrendo questo file per "cap" ho notato questa riga:

caps:none            CapsLock is disabled

Ci sono altri valori in questo file, quindi se questo non è quello che stai cercando, forse uno di quei valori alternativi si adatterebbe invece.

$ 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

Riferimenti

  • Disabilita Caps Lock e rimappa il menu su Super_R con xmodmap non funziona più
  • Disabilita e abilita Caps Lock in Ubuntu
  • Disabilita il tasto Caps Lock in Linux
  • Tastiera:modifica o disattiva Caps Lock
Correlati:decisione su un carattere e determinazione della notazione corretta?
Linux
  1. Come spegnere senza il prompt di conferma?

  2. Come prevenire l'esecuzione accidentale del comando Rm -r *?

  3. Come produrre l'effetto cache della CPU in C e Java?

  4. Come posso usare grep per abbinare ma senza stampare le partite?

  5. Xorg:come posso mappare AltGr al tasto CapsLock (per alternare i simboli di 3° livello)

Come abilitare l'effetto sfocatura in KDE Plasma 5.13

Come tracciare una linea particolare senza spostare il cursore in Vim?

Attiva/disattiva Bloc Num senza la chiave - Senza autorizzazioni Sudo?

Come passare la password a su/sudo/ssh senza sovrascrivere il TTY?

Come posso tarare una directory senza mantenere la struttura della directory?

Come posso elencare i file in un archivio zip senza decomprimerlo?