Как получить стабильный международный Дворжак с мертвыми ключами первого уровня в Debian?

Есть некоторые неустойчивые / рискованные способы, такие как поток Как получить A с точками в Dvorak Ubuntu 16.04? чтобы получить эту функцию, но я не могу запустить ее во многих средах. Немцы нуждаются в своих (a / e / u / o с точками), как показано здесь , в то время как нордические (Финляндия, Швеция, Норвегия, Дания, …) люди нуждаются в подобных ключах (a / o с точками). Я считаю, что одноуровневый подход к клавиатуре лучше, чем двухуровневый подход к клавиатуре. Опции

  1. Чтобы получить такую ​​раскладку клавиатуры по умолчанию в Debian, было бы здорово.
  2. Чтобы получить пакет, apt для такой клавиатуры, было бы хорошо.
  3. Может быть, другим способом …
  4. Выполнение этих изменений вручную, как в первом потоке, не является вариантом из-за рисков в разных средах.

OS X International Dvorak имеет такую ​​функцию по умолчанию, которая может использоваться в качестве эталона, а также ручной подход, как это сделано в первом ответе на поток. В развитии Chromium есть билет, который открывается в этой теме в потоке International Dvorak с Deadkeys, предназначенным для Chromebook.

Тестирование ответа clearkimura в Debian

  1. Вывод

     masi@masi:~/Downloads$ sudo cp dvorak_intl /usr/share/X11/xkb/symbols/dvorak_intl masi@masi:~/Downloads$ setxkbmap -verbose dvorak_intl masi@masi:~/Downloads$ setxkbmap -I ~/.xkb dvorak_intl -print | xkbcomp -I$HOME/.xkb - $DISPLAY Warning: Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols Ignoring extra symbols Warning: Key <OUTP> not found in evdev+aliases(qwerty) keycodes Symbols ignored Warning: Key <KITG> not found in evdev+aliases(qwerty) keycodes Symbols ignored Warning: Key <KIDN> not found in evdev+aliases(qwerty) keycodes Symbols ignored Warning: Key <KIUP> not found in evdev+aliases(qwerty) keycodes Symbols ignored Warning: Key <RO> not found in evdev+aliases(qwerty) keycodes Symbols ignored Warning: Key <I192> not found in evdev+aliases(qwerty) keycodes Symbols ignored Warning: Key <I193> not found in evdev+aliases(qwerty) keycodes Symbols ignored Warning: Key <I194> not found in evdev+aliases(qwerty) keycodes Symbols ignored Warning: Key <I195> not found in evdev+aliases(qwerty) keycodes Symbols ignored Warning: Key <I196> not found in evdev+aliases(qwerty) keycodes Symbols ignored Warning: Key <I255> not found in evdev+aliases(qwerty) keycodes Symbols ignored Warning: No symbols defined for <AB11> (keycode 97) Warning: No symbols defined for <JPCM> (keycode 103) Warning: No symbols defined for <I120> (keycode 120) Warning: No symbols defined for <AE13> (keycode 132) Warning: No symbols defined for <I149> (keycode 149) Warning: No symbols defined for <I154> (keycode 154) Warning: No symbols defined for <I168> (keycode 168) Warning: No symbols defined for <I178> (keycode 178) Warning: No symbols defined for <I183> (keycode 183) Warning: No symbols defined for <I184> (keycode 184) Warning: No symbols defined for <FK19> (keycode 197) Warning: No symbols defined for <FK24> (keycode 202) Warning: No symbols defined for <I217> (keycode 217) Warning: No symbols defined for <I219> (keycode 219) Warning: No symbols defined for <I221> (keycode 221) Warning: No symbols defined for <I222> (keycode 222) Warning: No symbols defined for <I230> (keycode 230) Warning: No symbols defined for <I247> (keycode 247) Warning: No symbols defined for <I248> (keycode 248) Warning: No symbols defined for <I249> (keycode 249) Warning: No symbols defined for <I250> (keycode 250) Warning: No symbols defined for <I251> (keycode 251) Warning: No symbols defined for <I252> (keycode 252) Warning: No symbols defined for <I253> (keycode 253) 
  2. Перезапуск

  3. Выход: раскладка клавиатуры больше не активна
  4. Перейдите в Region & Language > выберите> поиск Дворак> Выберите Дворжак с мертвыми клавишами на рисунке 1
  5. Выход: ожидаемая раскладка клавиатуры теперь активна и выбирается в верхней панели
  6. В Regien & Language введите основную раскладку клавиатуры вверху на рисунке 2, т. Е. Удалите предыдущие раскладки клавиатуры вверху. Таким образом, вы можете поместить Dvorak international с мертвыми ключами в качестве основной клавиатуры, которая останется там и после перезагрузки.

Рисунок 1 Настройки региона и языка после изменения, Рис.2 Настройки региона и языка, когда Dvorak international с мертвыми клавишами в качестве основной раскладки клавиатуры

введите описание изображения здесь введите описание изображения здесь

ОС: Debian 8.7
Оборудование: Asus Zenbook UX303UB, ноутбук HP 2002
Менеджер окон: Gnome 3.14

Я давно попытался сделать пакет для пользовательской раскладки клавиатуры. Здесь вариант, который я мог найти в то время:

  1. Изменить исходный макет (например: /usr/share/X11/xkb/symbols/us )

    Вопросы:

    • Он был перезаписан на обновление xkb-data . Название пакета может отличаться от другого.
    • Плохая идея создать пакет debian, который перезаписывает другой файл пакета.
  2. Добавить новый макет с другим именем xy как в этом сообщении

    Вопросы:

    • Те же проблемы предыдущего метода, но с файлом объявления макета: /usr/share/X11/xkb/rules/evdev.xml которые необходимо изменить. AFAIK, сервер Xorg не поддерживает динамическую загрузку новых макетов.

Вышеуказанные методы ретранслируют по XIM (стандартный метод ввода X), устаревшую систему. Я бы рекомендовал использовать современный метод ввода, поддерживающий плагины (модульный дизайн), такие как IBus или SCIM.

Я не пробовал это, но я ожидаю, что ibus-table – это самый простой способ, как объяснять в этом посте . Добавленный файл может быть упакован и установлен отдельно, как большинство двигателей и макетов IBus, IBus позаботится о их загрузке.

Обновить:

Ну, этот ответ на AskUbuntu упоминает более чистый способ изменить восходящий пакет. Ниже приведены минимальные инструкции по восстановлению пакета

  1. Включить исходный код для репозитория
  2. Загрузка зависимостей сборки

     sudo apt build-dep xkb-data 
  3. Загрузите источник

     mkdir sandbox cd sandbox apt source xkb-data 
  4. Создайте новый патч для одеяла после руководства по упаковке Ubuntu

     cd xkeyboard-config*/ quilt new username_custom_layout.diff quilt add symbols/us 

    Внесите необходимые изменения в symbols/us затем

     quilt refresh 
  5. Создайте неподписанный исходный и двоичный пакет

     debuild -us -uc 

Этот ответ объясняет, как установить расширенную раскладку клавиатуры Dvorak, найденную в этой статье, Arjen van Kol . Установка и настройка были довольно простыми, используя XKB.

Как установить новый макет

Загрузите файл макета dvorak_intl из связанной статьи. Затем скопируйте файл как суперпользователь в целевой каталог /usr/share/X11/xkb/symbols/ .

 $ sudo cp dvorak_intl /usr/share/X11/xkb/symbols/dvorak_intl 

Не нужно больше изменять разрешение. Для любопытных пользователей используйте команду stat для проверки разрешения; Разрешение по умолчанию – 644 .

 $ ls -l /usr/share/X11/xkb/symbols/dvorak_intl -rw-r--r-- 1 root root 2989 May 14 17:32 /usr/share/X11/xkb/symbols/dvorak_intl $ stat -c '%a %n' /usr/share/X11/xkb/symbols/dvorak_intl 644 /usr/share/X11/xkb/symbols/dvorak_intl 

Как установить новый макет

Прежде чем вносить изменения, запустите setxkbmap -query чтобы проверить текущий макет, если мы хотим вернуть изменения позже. По умолчанию большинство пользователей будут использовать английскую раскладку клавиатуры.

 $ setxkbmap -query rules: evdev model: pc105 layout: us <-- current layout 

Теперь запустите команду setxkbmap чтобы установить новую раскладку клавиатуры. Добавлена ​​опция -verbose чтобы увидеть результат, который иначе ничего не покажет.

 $ setxkbmap -verbose dvorak_intl Warning! Multiple definitions of keyboard layout Using command line, ignoring X server Trying to build keymap using the following components: keycodes: evdev+aliases(qwerty) types: complete compat: complete symbols: pc+dvorak_intl+inet(evdev) geometry: pc(pc105) 

Пользователь может снова запустить setxkbmap -query чтобы проверить изменения, которые были сделаны и теперь показаны в столбце макета.

 $ setxkbmap -query rules: evdev model: pc105 layout: dvorak_intl <-- new layout 

Проверить новый макет

Изменения вступают в силу немедленно; Нет необходимости выходить из системы или перезагружать сервер X вообще. Откройте текстовый редактор, затем нажмите на каждую клавишу из четырех строк на клавиатуре, чтобы увидеть выход.

Клавиши первого и второго уровня (без и с Shift ):

 `1234567890[] ~!@#$%^&*(){} ´,.pyfgcrl/=\ ¨<>PYFGCRL?+| aoeuidhtns- AOEUIDHTNS_ ;qjkxbmwvz :QJKXBMWVZ 

Клавиши третьего и четвертого уровней (с AltGr и Shift + AltGr ):

  ¡ ♯ []{} ´¸… č «»¶   ¿ å°əŭ ß— Å Ŭ ¯ ĸ× 

Не уверен, есть ли отсутствующие ключи для третьего и четвертого уровней для раскладки клавиатуры, т. dvorak_intl , так как я не привык печатать на этих уровнях.

Сделать это постоянным

Команда setxkbmap сама по себе эффективна только для текущего сеанса. Однако для запуска приложений в соответствующей среде рабочего стола можно добавить следующую команду.

 setxkbmap LAYOUTNAME 

Так что LAYOUTNAME будет настроен каждый раз, когда пользователь войдет в систему и начнется сеанс рабочего стола. Выйдите из системы и войдите в систему снова, затем откройте Terminal и запустите setxkbmap -query чтобы убедиться, что для каждой сессии применяется новая раскладка клавиатуры.

Загрузка локальной конфигурации в систему, отличную от Debian

Если обновление системы перезаписывает файл конфигурации в /usr/share/X11/xkb/symbols , пользователь может переместить файл конфигурации макета где-нибудь в другом месте, т.е. Home directory (и удалите из системного каталога, чтобы убедиться).

 $ mkdir -p ~/.xkb/symbols $ cp /usr/share/X11/xkb/symbols/dvorak_intl ~/.xkb/symbols $ sudo rm -i /usr/share/X11/xkb/symbols/dvorak_intl 

Затем загрузите конфигурацию макета, используя команду с опцией -I . Он работает аналогичным образом.

 $ setxkbmap -I ~/.xkb dvorak_intl $ setxkbmap -query rules: evdev model: pc105 layout: dvorak_intl 

Поэтому вместо setxkbmap LAYOUTNAME добавьте setxkbmap -I ~/.xkb LAYOUTNAME для запуска приложения в соответствующей среде рабочего стола, чтобы загрузить конфигурацию клавиатуры для каждой сессии.

Несоответствие в Debian

Если команда возвращает сообщение «Ошибка загрузки нового описания клавиатуры» (как описано в этом более раннем сообщении в Unix.SE ), используйте вместо этого следующую команду.

 $ setxkbmap -I ~/.xkb dvorak_intl -print | xkbcomp -I$HOME/.xkb - $DISPLAY Warning: Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols Ignoring extra symbols Warning: Key <OUTP> not found in evdev+aliases(qwerty) keycodes Symbols ignored ... Warning: No symbols defined for <I253> (keycode 253) 

Как ни странно, последняя команда возвращает много предупреждающих сообщений, которые могут быть связаны с моей иностранной моделью клавиатуры (японский вариант раскладки клавиатуры OADG 109A). Кроме того, изменения не будут отображаться в setxkbmap -query но работают, как ожидается, при setxkbmap -query .

Протестировано с помощью setxkbmap 1.3.0 в Xubuntu 14.04 (Xfce 4.10), Debian Xfce 8 (Xfce 4.10) и Debian 8.7 Gnome 3.14.

отказ

Этот ответ призван показать, как использовать XKB для установки и установки новой раскладки клавиатуры. Первоначальная инструкция была найдена из репозитория workman / xorg , в котором упоминались как прежний путь, так и текущий путь (для Ubuntu 10.04, GNOME 2.30). Тем не менее, инструкция была проверена для среды, отличной от GNOME, то есть Xfce.

Датированные инструкции, представленные в файле dvorak_intl скорее всего, предназначены для более старых версий GNOME и более не актуальны для современных дистрибутивов, которые мы используем сегодня. Хотя прежний путь найден в /etc/X11/xkb/symbols/ , текущий путь находится в /usr/share/X11/xkb/symbols/ .

Ключ AltGr относится к ключевому слову. Он не назначается по умолчанию (по крайней мере, в Xfce) или обычно правой клавише Alt , в зависимости от используемого дистрибутива Linux. В то время как я включил ключ для демонстрации клавиш третьего и четвертого уровней, настройка для ключа компоновки не показана выше.

Пример пользовательской раскладки клавиатуры Dvorak под названием Dvorak International Extended которой есть функции, запрошенные здесь и завершенные для Windows и Linux (код здесь ) в новой расширенной раскладке клавиатуры Dvorak – добавление международной поддержки Dvorak Simplified Keyboard .

Рисунок 1 Дизайн расширенной раскладки клавиатуры Dvorak International, рис. 2 Поиск Dvorak в настройках клавиатуры Debian после изменений в разделе « Установка установки» в Debian 8.7 , Рис. 3 Поиск extended

введите описание изображения здесь введите описание изображения здесь введите описание изображения здесь

Ошибка установки в Debian 8.7

Мне удалось выполнить первые два шага инструкциями по установке, но не смог увидеть эффект добавления раскладки клавиатуры там

  1. [done] Скопируйте этот файл в каталог /etc/X11/xkb/symbols/pc . Для этого вам могут потребоваться права root.

     sudo mkdir -p /etc/X11/xkb/symbols/pc sudo cp dvorak_int /etc/X11/xkb/symbols/pc/ 
  2. Добавьте следующую строку в /etc/X11/xkb/rules/xfree86.lst : dvorak_intl Dvorak international extended

      sudo touch /etc/X11/xkb/rules/xfree86.lst sudo echo `dvorak_intl Dvorak international extended` >> /etc/X11/xkb/rules/xfree86.lst 
  3. Однако я не могу выполнить третий шаг

     // In order to make the keyboard layout available in GNOME, // you should also modify /etc/X11/xkb/rules/xfree86.xml // accordingly (this is an XML file and the format is mostly // self-explanatory). 

    Команда apt search XF86Config ничего не возвращает, потому что моя система не имеет файла /etc/X11/xkb/rules/xfree86.xml . В инструкциях есть опечатка (Спасибо, clearkimura)! Найдите имя файла и отредактируйте его со следующим, но все же я не уверен, что именно там заполнить – имя файла или dvorak-intl-extended (мое пользовательское имя)

     masi@masi:~$ dpkg --search xfree86.xml xkb-data: /usr/share/X11/xkb/rules/xfree86.xml masi@masi:~$ sudo vim /usr/share/X11/xkb/rules/xfree86.xml 

    Добавление в /usr/share/X11/xkb/rules/xfree86.xml

      <variant> <configItem> <name>dvorak-intl-extended</name> <description>English (Dvorak, international extended with dead keys)</description> </configItem> </variant> <variant> 

    Я перезапускаю систему, но неудачные выходы в меню Language Keyboard на рисунке 2 и на рисунке 3.

    Может быть, что-то не так с моими разрешениями

      masi@masi:~$ sudo ls -la /etc/X11/xkb/symbols/pc/ total 12 drwxr-xr-x 2 root root 4096 May 13 20:35 . drwxr-xr-x 3 root root 4096 May 12 16:25 .. -rw-r--r-- 1 root root 2989 May 12 16:26 dvorak_intl 

    Разрешения для каталога должны быть точными

     masi@masi:~$ ls -la /etc/ | grep X11 drwxr-xr-x 10 root root 4096 Sep 8 2016 X11 masi@masi:~$ ls -la /etc/X11/ | grep xkb drwxr-xr-x 4 root root 4096 May 12 16:25 xkb masi@masi:~$ ls -la /etc/X11/xkb/ | grep symbols drwxr-xr-x 3 root root 4096 May 12 16:25 symbols masi@masi:~$ ls -la /etc/X11/xkb/symbols/ | grep pc drwxr-xr-x 2 root root 4096 May 13 20:35 pc 

Каким должно быть разрешение новой раскладки клавиатуры?

ОС: Debian 8.7