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

С башмаком:

#!/bin/bash

for c in 0 1; do
  while read -r -a columns; do
    for((i=$c; i<${#columns[@]}; i+=2)); do
      echo -n "${columns[$i]} "
    done
    echo
  done < file
done

Выход:

1 3 
1 3 
1 3 
2 4 
2 4 
2 4 
6
17.05.2017, 22:25
3 ответа

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

  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. Создайте новый патч quilt, следуя руководству по упаковке Ubuntu

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

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

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

     debuild -us -uc 
     
2
27.01.2020, 20:28

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

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

enter image description here enter image description here enter image description here

Попытка установки в Debian 8.7

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

  1. [выполнено] Скопируйте этот файл в каталог /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 Международный расширенный Дворак

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

     // Чтобы сделать раскладку клавиатуры доступной в GNOME,
    // вы также должны изменить /etc/X11/xkb/rules/xfree86.xml
    // соответственно (это файл XML и формат в основном
    // понятно).
     

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

     masi@masi: ~$ dpkg --search xfree86.xml
    xkb-данные: /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

      <вариант>
     <элемент_конфигурации>
     dvorak-intl-extended
     Английский (Dvorak, международный расширенный с мертвыми клавишами)
     
     
     <вариант>
     

    Я перезапускаю систему, но не получаю результатов в меню «Язык клавиатуры» на рис. 2 и рис. 3.

    Возможно, что-то не так с моими разрешениями

      masi@masi:~$ sudo ls -la /etc/X11 /xkb/символы/компьютер/
    всего 12
    drwxr-xr-x 2 root root 4096 13 мая 20:35 .
    drwxr-xr-x 3 root root 4096 12 мая 16:25 ..-rw-r--r-- 1 root root 2989 12 мая 16:26 dvorak_intl
     

    Права доступа к каталогам должны быть в порядке

     masi@masi:~$ ls -la /etc/ | грэп X11
    drwxr-xr-x 10 root root 4096 8 сентября 2016 г. X11
    masi@masi:~$ ls -la /etc/X11/ | grep xkb
    drwxr-xr-x 4 root root 4096 12 мая 16:25 xkb
    masi@masi:~$ ls -la /etc/X11/xkb/ | grep-символы
    drwxr-xr-x 3 root root 4096 12 мая 16:25 символов
    masi@masi:~$ ls -la /etc/X11/xkb/symbols/ | грэп пк
    drwxr-xr-x 2 root root 4096 13 мая 20:35 шт
     

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

ОС: Debian 8.7

1
27.01.2020, 20:28

В этом ответе объясняется, как установить международную расширенную раскладку клавиатуры Дворака, найденную в этой статье Арьена ван Кола. Установка и настройка были довольно простыми с использованием 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, чтобы проверить текущий макет на случай, если мы захотим отменить изменения позже. По умолчанию макет us.

$ 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 устанавливалось каждый раз, когда пользователь входит в систему и запускается сеанс рабочего стола. Выйдите из системы и войдите снова, затем откройте Терминал и запустите setxkbmap -query, чтобы убедиться, что новая раскладка клавиатуры применялась для каждого сеанса.

Настройка для системы, отличной от Debian

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

$ 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 ИМЯ ПЛАНЕТА добавьте setxkbmap -I ~/.xkb ИМЯ ПЛАНЕТА для запуска приложения в соответствующей среде рабочего стола, чтобы загружать конфигурацию клавиатуры для каждого сеанса.

Несоответствие в 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 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) или обычно клавише Right Alt, в зависимости от используемого дистрибутива Linux.Хотя я включил клавишу создания для демонстрации клавиш третьего и четвертого уровней, настройка клавиши создания , а не показана выше.

3
27.01.2020, 20:28

Теги

Похожие вопросы