Fare un backtick produce solo un backtick

Il mio tasto inverso (`) non produce nulla quando premuto per la prima volta – Devo premerlo due volte per generare un`. Se dimentico e digito `e, ottengo un carattere accentato e.

Sono in grado di risolvere questo problema solo temporaneamente, per la sessione corrente, eseguendo:

xmodmap -e 'keycode 49 = grave asciitilde' 

Il problema è che non riesco a capire come rendere permanente questa modifica. Ho trovato molte domande correlate su Ask Ubuntu, ma nessuna che risolva questo problema specifico.

Sto usando KDE.

Nelle preferenze di sistema, i layout di tastiera, ci sono tre “varianti” del Regno Unito:

 Layout Variants ------ -------- English (UK) Default English (UK) English (UK, extended WinKeys) English (UK) English (UK, international with dead keys) 

La mia tastiera ha i tasti di Windows, quindi ho scelto la seconda variante durante il processo di installazione, come sembrava ragionevole.

In effetti, la differenza tra la variante “Predefinita” e la variante “WinKeys esteso” sembra non avere nulla a che fare con i tasti Windows. La variante “Extended WinKeys” in realtà apporta molte modifiche al comportamento dei tasti AltGr, la maggior parte di essi per il meglio, ad esempio, l’apostrofo spostato AltGr e le chiavi circumflex aggiungono l’accento acuto e accento circonflesso alla successiva lettera che viene premuta, anziché risultati casuali che la variante “Predefinita” dà.

Tuttavia, la variante “Extended Winkeys” corregge anche l’apice spostato di AltGr e restituisce una barra spezzata come è stampata sulla chiave piuttosto che la barra solida errata fornita da “Default”. Questo a sua volta significa che AltGr-backtick non può essere usato per aggiungere l’accento grave alla lettera successiva, come sarebbe coerente con la variante “Extended Winkeys”, quindi qualcuno ha evidentemente deciso di sostituire l’apice con quella funzione.

Dal momento che qualsiasi utente Linux di Linux usa la funzionalità Compose-key per scrivere lettere accentate, nessuno conosce le differenze tra queste varianti di tastiera e cattura solo le persone. Nei vari forum che menzionano la chiave retrospettiva che dà questo comportamento inaspettato, tutti erano sconcertati sul perché fosse successo.

Questo è il genere di cose che questo bug causa. Se volessi visualizzare il contenuto di uno script di shell da qualche parte nel percorso, potrei digitare:

 $ cat `which zegrep` 

Ma invece, ottengo:

 $ cat ẁhich zegrep 

… il backtick e “w” si combinano in w-with-grave

Questa è la mapping della chiave backtick con il layout “Extended WinKeys” del Regno Unito:

 $ xmodmap -pke | grep "keycode 49" keycode 49 = dead_grave notsign grave notsign brokenbar notsign bar bar 

E se cambi il layout della tastiera in “Default” nel Regno Unito, la mapping dei tasti dead_grave viene spostata nella terza posizione, che è la posizione “mode_shifted” (abilitata da un tasto Mode_shift se ne hai una definita sulla tastiera) che rende molto di più senso:

 $ xmodmap -pke | grep "keycode 49" keycode 49 = grave notsign dead_grave notsign bar bar brokenbar notsign 

Sto pensando che dovrei segnalare un bug, dal momento che evidentemente altre persone si imbattono in questo, ma non sono sicuro di cosa raccomandare. Forse rinominare “UK, extended WinKeys” in “UK, deadkeys via AltGr”, in modo che le persone in genere non lo selezionino a meno che non sapessero cosa fossero “deadkey” e in particolare volevano quel comportamento. Oppure sposta la funzione dead_grave nella posizione spostata di AltGr sulla chiave backtick, che lo renderebbe coerente con gli altri deadkey.

Ad ogni modo, basta andare sui layout della tastiera, aggiungere un nuovo layout e selezionare la tastiera predefinita UK.

Questo è chiamato “dead key”. Cerca una variante del layout della tastiera che indichi qualcosa come “elimina le dead keys” o una variante che non sia “dead keys”. Per la tastiera gb, la variante è chiamata English (UK) penso. Puoi anche impostarlo con la riga di comando:

 setxkbmap -layout gb -variant basic 

Tuttavia, questo non sarà permanente. Fint di base

Se non ne trovi uno così, è ansible (e abbastanza facile) creare il tuo layout.