Jak przełączać układy klawiatury dla różnych języków?

11

P: Jak przełączać się między metodami wprowadzania dla różnych języków, gdy używasz niestandardowego układu klawiatury?

Muszę edytować tekst w dwóch różnych językach. Chciałbym móc używać moich skrótów klawiszowych w obu językach, z wyjątkiem oczywiście wstawiania tekstu do bufora. Wygląda na to, że powinienem być w stanie toggle-input-method( C-\) i wybrać inny język.

Jak dotąd prawie tak dobrze.

Oto rub: używam angielskiego układu Dvorak, który ustawiam na poziomie systemu operacyjnego (tj. Z setxkbmap). Kiedy ja toggle-input-method, tekst, który wstawiam, byłby poprawny, gdybym miał układ QWERTY (standard w USA), ale okazuje się bełkotliwy, ponieważ jestem na Dvorak. (FWIW, kiedy zmieniam układ na standardowy w USA, działa dobrze.)

Więc: jak mam poinformować Emacsa, że ​​używam Dvoraka, aby toggle-input-methodznajomi tłumaczyli moje naciśnięcia klawiszy na prawidłowe znaki w innym języku?

Dan
źródło
swedish-postfix i inne metody wprowadzania tekstu działają dla mnie, z którymi metodami masz problem?
shapr
@shapr: Przełączam się z angielskiego na arabski. Problem polega na tym, że używam układu Dvorak na poziomie systemu operacyjnego, ponieważ przełączanie działa dobrze, gdy używam standardowego układu US na poziomie systemu operacyjnego.
Dan

Odpowiedzi:

7

Istnieje metoda zmiany definicji układu fizycznego dla metody wprowadzania poprzez ustawienie quail-keyboard-layout-type. Ale wygląda na to, że Dvorak nie jest jednym z możliwych kandydatów quail-keyboard-layout-alistw moim Emacsie 24.4.

Możesz albo zdefiniować nowy fizyczny układ klawiatury, patrząc na definicję quail-keyboard-layout-alistw, quail.elalbo utworzyć nową metodę wprowadzania, definiując odpowiednie klawisze arabskie dla układu Dvoraka.

Nie mam doświadczenia w pierwszym, ale mogę potwierdzić, że drugie podejście jest łatwiejsze niż myślisz. (Musiałem stworzyć turecką metodę wprowadzania na wierzchu Farsi.) Skopiuj arabic.el(która znajduje się w moim systemie Debian na /usr/share/emacs/24.4/lisp/leim/quail/arabic.el.gz) do swojego domu site-lispi zmień klucze zgodnie z własnymi preferencjami. Nie zapomnij również zmienić nazw metod wprowadzania itp. Właśnie stworzyłeś nową metodę wprowadzania Dvorak-arabską.

Mogę zaktualizować odpowiedź o więcej szczegółów, jeśli coś wydaje się skomplikowane.

Emre Sahin
źródło
Dziękuję Ci! To ustawiło mnie na właściwej ścieżce. Prześlę dodatkową odpowiedź, która wyjaśnia, jak dostałem się w tej ...-alistwersji.
Dan
Nie ma za co. Możesz pomyśleć o przesłaniu aktualizacji quail-. *-alistdo działu rozwoju Emacsa. Jestem pewien, że są inni użytkownicy Dvoraka, którzy z tego skorzystają.
Emre Sahin
7

@EmreSahin postawił mnie na właściwej ścieżce, aby odpowiedzieć na to pytanie, dlatego przedstawiam trochę szczegółów na wypadek, gdyby ktokolwiek inny musiał sam rozwiązać taki problem.

Jak wskazuje Emre, musimy dodać układ Dvoraka quail-keyboard-layout-alist. Okazuje się, że quailbiblioteka nie jest dobrze udokumentowana w podręczniku , w którym wspomniano o dwóch powiązanych funkcjach podczas przekazywania na jednym węźle.

Jednak po zapoznaniu się z tym wątkiem pomocy, a zwłaszcza ze stroną EmacsWiki na temat rosyjskiego z Dvorakiem (z której ta odpowiedź pochodzi), wydaje mi się, że udało mi się to rozgryźć.

Dokumentacja zmiennej quail-keyboard-layoutopisuje, co musimy włożyć quail-keyboard-layout-alist. Jest to długi ciąg odpowiadający 6 rzędom po 15 kluczy każdy. Każdy wiersz odpowiada nieprzesuniętym i przesuniętym wartościom każdego klucza, w sumie 30 znaków na wiersz. Nie jestem pewien co do następującego punktu, ale wydaje się, że dla tego, co nazywam „pół-standardowymi” klawiaturami z 4 rzędami klawiszy, pierwszy i szósty rząd powinny mieć po 30 pustych miejsc.

Wielkie odkrycie:

(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")
Dan
źródło