Як переключити розкладки клавіатури на різні мови?


11

Питання: як я перемикаюся між методами введення для різних мов при використанні нестандартної розкладки клавіатури?

Я маю редагувати текст двома різними мовами. Я хотів би мати можливість використовувати свої клавіші на двох мовах, за винятком, звичайно, під час вставки тексту в буфер. Схоже, я маю змогу toggle-input-method( C-\) та вибрати іншу мову.

Поки що майже так добре.

Ось руб: я використовую англійський макет Dvorak, який я встановив на рівні ОС (тобто, з setxkbmap). Коли я toggle-input-method, текст, який я вставляю, був би правильним, якби у мене був QWERTY макет (стандарт в США), але він виходить як химерний, бо я на Двораку. (FWIW, коли я перемикаю свою компоновку на стандартну американську, вона працює чудово.)

Отже: як мені повідомити Emacs, що я використовую Dvorak, щоб toggle-input-methodдрузі перевели мої натискання клавіш на правильні символи іншою мовою?


шведсько-постфікс та інші композиційні методи введення для мене працюють, з якими методами у вас виникають проблеми?
квітня

@shapr: Я перемикаюся між англійською та арабською мовами. Проблема, здається, полягає в тому, що я використовую макет Dvorak на рівні ОС, оскільки перемикання працює чудово, коли я використовую стандартний макет в США на рівні ОС.
Дан

Відповіді:


7

Існує спосіб змінити визначення фізичного макета методу введення шляхом встановлення quail-keyboard-layout-type. Але, схоже, Дворак не є серед можливих кандидатів quail-keyboard-layout-alistу моєму Emacs 24.4.

Можна або визначити новий розклад фізичної клавіатури, переглянувши визначення quail-keyboard-layout-alistв, quail.elабо створити новий метод введення, визначивши відповідні арабські клавіші для макета Дворжака.

Я не досвідчений у першому, але можу засвідчити, що другий підхід простіше, ніж ти думаєш. (Мені довелося створити османський турецький метод введення на вершині фарсі.) Скопіюйте arabic.el(який знаходиться в моїй системі Debian в /usr/share/emacs/24.4/lisp/leim/quail/arabic.el.gz) на свій дім site-lispта змініть ключі відповідно до ваших уподобань. Крім того, не забудьте змінити назви методу введення тощо. Ви тільки що створили новий метод введення Dvorak-Arabic.

Я можу оновити відповідь більш детально, якщо щось здається складним.


Дякую! Це ставило мене на правильний шлях. Я опублікую додаткову відповідь, яка визначає, як я потрапив у ...-alistверсію.
Дан

Ласкаво просимо. Ви можете подумати надсилати своє оновлення до quail-. *-alistрозробки Emacs. Я впевнений, що інші користувачі Dvorak отримають користь від цього.
Емре Сахін

7

@EmreSahin поставив мене на правильний шлях, щоб відповісти на це питання, тому я викладаю трохи деталей на випадок, якщо кому-небудь ще доведеться вирішити подібну проблему.

Як зазначає Емре, нам потрібно додати макет Dvorak quail-keyboard-layout-alist. Виявляється, quailбібліотека недостатньо задокументована в посібнику , в якому дві згадувані функції згадуються при переході на один вузол.

Однак, порадившись з цією довідковою темою і, особливо, сторінкою EmacsWiki на російській мові з Двораком (звідки ця відповідь проробляє), я думаю, я це зрозумів.

Докстринг для змінної quail-keyboard-layoutописує, що нам потрібно вкласти quail-keyboard-layout-alist. Це довгий рядок, що відповідає 6 рядів по 15 клавіш кожен. Кожному рядку відповідають зміщені та зміщені значення кожної клавіші, загалом 30 символів на рядок. Я менш впевнений у наступному моменті, але здається, що для того, що я називатиму "напівстандартними" клавіатурами з 4 рядками клавіш, перший і шостий рядки мають становити 30 пробілів.

Велике виявлення:

(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")
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.