Come definire una chiave di composizione nel terminale (nessun ambiente desktop)?


17

Vorrei definire una composechiave sul mio sistema (Debian Sid "Wheezy"). Non ho Xorg (e non voglio alcun ambiente desktop). Solo nel terminale.

Vorrei impostarlo sulla mia Alt-Grchiave (a destra Alt). Ci ho provato per un po 'ma non riesco a capire come configurarlo.

Ho studiato e trovato alcune indicazioni:

  • $ showkeymi dà il codice Alt-Grchiave della mia chiave (# 100)

  • $ dumpkeyse $ dumpkeys --compose-onlygenera "il contenuto corrente del driver della tastiera", nel formato specificato da keymaps, secondo la manpagina

  • $ loadkeys carica una tabella di traduzione da tastiera

Sono sicuro che non è così difficile ma mi manca il modo di affrontarlo ...


Hm, non sto seguendo il 100%, cosa ti piacerebbe fare l'Alt-Gr quando lo colpisci?
Emanuel Berg,

Vorrei che fosse la chiave di composizione . In realtà, vorrei solo definire una chiave di composizione da qualche parte, e dal momento che sono abituata ad averla sul mio Alt-Gr, mi piacerebbe definirla lì. È molto facile da configurare con una GUI , ma dovrei essere in grado di definirlo in modalità console pura poiché non ho installato il sistema X (non è un'opzione). Non riesco proprio a capire come.
Cedbeu,

Risposte:


10

Sui sistemi Debian e Ubuntu più recenti, le impostazioni della tastiera vengono inserite /etc/default/keyboarde condivise tra X e la console. Corri

sudo dpkg-reconfigure keyboard-configuration

e selezionare Compose key: Right Alt (AltGr)nella schermata appropriata.

Si potrebbe anche mettere XKBOPTIONS=compose:raltin /etc/default/keyboarded eseguire

sudo dpkg-reconfigure console-setup

I sistemi meno recenti hanno una chiave Compose sulla console per impostazione predefinita. Nel uslayout, premendo entrambi i Alt tasti insieme si comporta come Compose. 1

Ad esempio: Alt+ AltGr, ", A=> Ä

Se preferisci AltGressere solo Compose, devi cambiare

alt keycode 100 = Compose

nella mappa della tastiera attiva a

keycode 100 = Compose

Il modo più semplice per farlo è apportare le modifiche di cui sopra /lib/kbd/keymaps/i386/include/linux-with-alt-and-altgr.inc.

Un modo migliore è quello di creare un nuovo file chiamato /lib/kbd/keymaps/i386/include/altgr-is-compose.inccon la riga sopra, creare una nuova keymap che lo includa e impostarlo sulla keymap predefinita.

  1. PrtScnagisce anche come Composeimpostazione predefinita.

Non riesco a farlo funzionare. La dpkg-reconfigureprocedura guidata in effetti chiede una chiave di composizione, ma dice che non funziona in "modalità Unicode" (?). Inoltre, quando non è in quella modalità, dice che Control + period funziona come chiave di composizione. Ma non lo farò funzionare neanche.
Emanuel Berg,

Penso che il messaggio di avviso si riferisca a unicode_start. Per me funziona ancora, purché corro setupconcome dpkg-reconfiguredice.
Mikel

Quando corro setupconnel mio terminale X ( urxvt), dice "Non siamo sulla console, la console rimane non configurata". Inoltre, si showkeylamenta "Impossibile ottenere un descrittore di file sulla console". In ttyentrambi funzionano ma showkeydice (la prima cosa) che "la modalità kb era UNICODE", quindi forse è proprio per questo che non funziona. Ma il periodo Control + funziona tty. OK, ora ha senso.
Emanuel Berg,

La tua domanda ha detto che non hai X? È necessario eseguire setupconsulla console virtuale Linux, ad esempio Ctrl + Alt + F1.
Mikel

1
Sembra console-setupche non supporti molte sequenze di composizione per impostazione predefinita. Puoi correre dumpkeys --compose-onlyper vedere quali. Dovresti essere in grado di modificare lo console-setupscript init per aggiungere ulteriori regole di composizione dove viene eseguito loadkeys.
Mikel,

2

"componi" sulla console consente di digitare due caratteri ma ne genera un terzo.

il problema è che le definizioni di composizione usano byte , sia come due input (cioè non è possibile definire la composizione in termini di chiavi digitate ma solo in termini di simboli digitati) sia per l'output.

per farlo funzionare in UTF-8, che è multibyte (almeno da 1 a 4 byte) richiederebbe grandi cambiamenti nel modo in cui viene gestito l'input della console, e sostituisce il semplice array di caratteri attualmente utilizzato da qualcosa di più complesso. Sembra che non ci siano piani per farlo (il consenso tra i devlopers del kernel è che la console dovrebbe rimanere una console, qualcosa di semplice, utilizzata solo per l'ultimo ressort; se in realtà hai bisogno di unicode allora probabilmente hai anche bisogno di bidi, shaping, ecc; allora è meglio eseguire un terminale grafico (un xterm a schermo intero su X11; ma ci sono altre possibilità).

Quindi, in effetti non funziona e non funzionerà, con i personaggi multibyte sulla console. MA funziona ancora se si limitano le definizioni di composizione al semplice ASCII.

E ho anche scoperto che funziona anche se l'uscita è in iso-8859-1 (che corrisponde a valori unicode fino a 0x00ff); per questo puoi inserire in alcuni script di avvio una riga:

    loadkeys / somepath / somefile

e inserisci in quel file le definizioni di composizione che desideri (fai attenzione a salvare il file nella codifica ISO-8859-1; e usa i caratteri più grandi di 0x7f come solo output) la sintassi di un tale file è molto semplice, linee come questa:

    comporre "somechar" "somotherchar" in "output desiderato"

per esempio:

    componi "a" "a" in "å"
    componi "a" "e" in "æ"

l'apostrofo deve essere evaso.

l'effetto di chiavi diacritiche morte è anche definito in quel file; per dead_acute + a definisci una linea come:

    componi '\' '' a 'in' á '

dead_grave usa backtick (`), dead_diaeresis usa doublequote ("), dead_circumflex usa circumflex (^) e dead_tilde usa tilde (~).


Grazie, ha funzionato. Solo, ho dovuto cambiare compose 'a' 'a' to 'å'in compose 'o' 'a' to U+00E5, in caso contrario loadkeyssi lamentava un errore di sintassi.
Emanuel Berg,

quando hai usato 'å', hai scritto il file in iso-8859-1 (non utf-8)?
Pablo Saratxaga,

Non lo so. Come lo controllo?
Emanuel Berg,

per verificare se un file è in utf-8: iconv -f utf-8 -t utf-8 filename se non ci sono errori, è in utf-8
Pablo Saratxaga,

Sembrerebbe essere un file cat, ma no, non ci sono errori echo $?almeno e nessun output su stderr. Inoltre, filemi dice che è UTF-8, quindi ha senso.
Emanuel Berg,
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.