Come cambiare layout di tastiera per lingue diverse?


11

D: come posso passare da un metodo di input a un altro in una lingua diversa quando utilizzo un layout di tastiera non standard?

Devo modificare il testo in due lingue diverse. Vorrei essere in grado di utilizzare le mie combinazioni di tasti nelle due lingue, tranne, ovviamente, quando si inserisce il testo nel buffer. Sembra che dovrei essere in grado di toggle-input-method( C-\) e selezionare la lingua alternativa.

Finora, quasi così bene.

Ecco il problema: utilizzo il layout inglese Dvorak, che ho impostato a livello di sistema operativo (ovvero, con setxkbmap). Quando io toggle-input-method, il testo che inserisco sarebbe corretto se avessi un layout QWERTY (lo standard negli Stati Uniti), ma risulta esilarante perché sono su Dvorak. (FWIW, quando cambio il mio layout negli Stati Uniti standard, funziona benissimo.)

Quindi: come faccio ad informare Emacs che sto usando Dvorak in modo che gli toggle-input-methodamici traducano i miei tasti premuti nei caratteri corretti nell'altra lingua?


swedish-postfix e altri metodi di input compositivi funzionano per me, con quali metodi hai problemi?
shapr

@shapr: sto passando dall'inglese all'arabo. Il problema sembra essere che sto usando un layout Dvorak a livello di sistema operativo, poiché la commutazione funziona bene quando utilizzo il layout standard americano a livello di sistema operativo.
Dan

Risposte:


7

Esiste un metodo per modificare la definizione del layout fisico per il metodo di input impostando quail-keyboard-layout-type. Ma sembra che Dvorak non sia tra i possibili candidati quail-keyboard-layout-alistnel mio Emacs 24.4.

Puoi definire un nuovo layout di tastiera fisica osservando la definizione di quail-keyboard-layout-alistin quail.elo creare un nuovo metodo di input definendo i corrispondenti tasti arabi per il layout Dvorak.

Non ho esperienza nel primo, ma posso testimoniare che il secondo approccio è più facile di quanto pensi. (Ho dovuto creare un metodo di input turco ottomano in cima a Farsi.) Copia arabic.el(che risiede nel mio sistema Debian su /usr/share/emacs/24.4/lisp/leim/quail/arabic.el.gz) a casa tua site-lispe cambia le chiavi in ​​base alle tue preferenze. Inoltre, non dimenticare di cambiare i nomi dei metodi di input, ecc. Hai appena creato un nuovo metodo di input Dvorak-Arabo.

Posso aggiornare la risposta con maggiori dettagli se qualcosa sembra complesso.


Grazie! Questo mi ha messo sulla strada giusta. Pubblicherò una risposta aggiuntiva che illustra come ci sono arrivato sulla ...-alistversione.
Dan

Prego. Potresti pensare di inviare il tuo aggiornamento allo quail-. *-alistsviluppo di Emacs. Sono sicuro che ci saranno altri utenti Dvorak che ne trarranno beneficio.
Emre Sahin,

7

@EmreSahin mi ha messo sulla strada giusta per rispondere a questa domanda, quindi sto esponendo un po 'di dettaglio nel caso in cui qualcun altro debba mai affrontare un problema come questo da solo.

Come sottolinea Emre, dobbiamo aggiungere un layout Dvorak a quail-keyboard-layout-alist. Si scopre che la quaillibreria non è ben documentata nel manuale , in cui due funzioni correlate sono menzionate passando su un nodo.

Tuttavia, dopo aver consultato questo thread di aiuto e, in particolare, la pagina EmacsWiki sul russo con Dvorak (da cui deriva questa risposta), penso di averlo capito.

La documentazione per la variabile quail-keyboard-layoutdescrive ciò che dobbiamo inserire quail-keyboard-layout-alist. È una lunga stringa corrispondente a 6 righe di 15 chiavi ciascuna. Ogni riga corrisponde ai valori non spostati e spostati di ciascuna chiave, per un totale di 30 caratteri per riga. Sono meno sicuro del punto seguente, ma sembra che, per quelle che chiamerò tastiere "semi-standard" con 4 file di tasti, la prima e la sesta riga dovrebbero avere ciascuna 30 spazi vuoti.

La grande rivelazione:

(require 'quail)

(add-to-list 'quail-keyboard-layout-alist
             `("dvorak" . ,(concat "                              "
                                   "  1!2@3#4$5%6^7&8*9(0)[{]}`~  "
                                   "  '\",<.>pPyYfFgGcCrRlL/?=+    "
                                   "  aAoOeEuUiIdDhHtTnNsS-_\\|    "
                                   "  ;:qQjJkKxXbBmMwWvVzZ        "
                                   "                              ")))

(quail-set-keyboard-layout "dvorak")
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.