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


22

Ho un programma X11 che prende il maiuscolo e lo usa. Il problema è che voglio disabilitare la normale commutazione maiuscole / minuscole, ma farlo sembra disabilitare la chiave.

Quindi qualunque cosa X11 ottenga per una pressione del tasto maiuscole, deve comunque ottenere (nessuna disabilitazione della chiave, o rimappatura in un'altra chiave), ma senza nulla che traduca la pressione del tasto in un tasto maiuscolo (che potrebbe essere a livello di kernel? ).

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

Come posso dire al kernel di ignorare il tasto maiuscolo (scrivere la sua normale funzionalità), ma di passare comunque il messaggio a X?

Solo per aggiungere un po 'più di dettaglio:

Il "programma" che sto cercando di eseguire è "enso" umanizzato. Quando non è presente alcuna chiave, viene visualizzato l'errore "CRITICAL: root: impossibile trovare la chiave quasimode". Quando non ci sono errori, posso usare enso con caps, ma sofar non ha capito come disabilitare la funzionalità di caps mentre enso è ancora in grado di farlo.


Fornisci dettagli su ciò che hai provato, ovvero le esatte espressioni xmodmap. Senza i dettagli non possiamo dire se sapevi cosa fare e cosa hai fatto di sbagliato, o se lo hai fatto bene ma il codice non è riuscito per qualche altro motivo. Forniscici anche il sistema operativo che stai utilizzando perché alcuni hanno l'elaborazione del codice chiave che si verifica al di sotto del livello del server X.
Kyle Jones,

@Kyle Ho provato "rimuovi Lock = Caps_Lock", quindi "keycode 66 =" (che è stato mappato su CapsLock). Sto eseguendo Ubuntu 12.10 su una macchina a 64 bit.
Chris2048,

Un'altra possibilità è rimappare su un'altra chiave. setxkbmap -option ctrl:nocapsriassume Control_L, ad esempio.
Chris Down,

Stai dicendo che staresti bene se potessimo darti un modo per rimappare il blocco maiuscole per dire il tasto di controllo o non è quello che stai cercando? Allo stato attuale, questa domanda è un po 'confusa, sarebbe davvero molto utile se aggiungessi dettagli specifici alla domanda su ciò che hai provato finora.
slm

Solo così siamo chiari, c'è una funzionalità in Ubuntu 12.10 in cui puoi rendere il blocco maiuscole una chiave di controllo aggiuntiva. È questo che stai pensando quando dici "rimappatura"? Ecco uno screenshot della finestra di dialogo: flickr.com/photos/11708996@N00/3010939023
slm

Risposte:


28

Penso di avere una tecnica per disabilitare la commutazione del Capslocktasto ma non disabilitare completamente il tasto tutti insieme, o rimappare su un altro tasto sulla tastiera.

Se si utilizza il comando:

setxkbmap -option caps:none

La tastiera non si attiva più. L'ho confermato sul mio laptop con Fedora 14, il LED non si accende più e la normale Capslockfunzionalità è sparita.

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

Pertanto, gli eventi che vengono premuti sui tasti rimangono intatti affinché altre applicazioni possano raccoglierli.

setxkbmap

Il file /usr/share/X11/xkb/rules/xorg.lstcontiene l'elenco completo delle opzioni che è possibile assegnare setxkbmap.

Sfogliando 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 sarebbe invece suite.

$ 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


5
Se si esegue accidentalmente il comando con il capslock acceso, è possibile ripristinare xkbmap eseguendo setxkbmap -option "".
Nemo,

Si presenta in xev, ma in realtà non funziona nel motore Valve Source 2.
Velkan,

1

Se non si desidera che la Caps Lockchiave abbia il solito effetto, è possibile disattivare il Lockmodificatore, mantenendo il Caps_Lockkeyym.

xmodmap -e 'clear Lock'

Ciò non sembra disabilitare il maiuscolo.
Chris2048,

@ Chris2048 Works For Me ™. Potrebbe essere incompatibile con alcune impostazioni XKB o con alcune applicazioni (le applicazioni eseguono il proprio processo di blocco maiuscole, la maggior parte di esse utilizza le stesse funzioni di libreria ma ci sono eccezioni).
Gilles 'SO- smetti di essere malvagio'

0

Questo è molto simile alla risposta che ho dato per un'altra domanda . Questo frammento di codice xkb dovrebbe fare il trucco.

partial modifier_keys
xkb_symbols "capsoff" {
    key <CAPS> {
        type[Group1] = "ONE_LEVEL",
        symbols[Group1] = [ Caps_Lock ],
        actions[Group1] = [ NoAction() ]
    };
};

dove dovrebbe andare? Ho osservato questo tipo di frammenti per 10 minuti senza capirlo. Deve essere parte di un file più completo o può essere autonomo e applicare alla configurazione predefinita?
Nikana Reklawyks il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.