С башмаком:
#!/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
Давным-давно я пытался создать пакет для нестандартной раскладки клавиатуры. Здесь вариант, который я мог найти в то время:
Изменить исходный макет (например: / usr / share / X11 / xkb / symbols / us
)
Проблемы:
Обновление xkb-data
. Название пакета может отличаться от дистрибутива к другому. Добавить новый макет с другим именем xy
, как в этом сообщении
Проблемы:
/ usr / share / X11 / xkb / rules / evdev.xml
, которые необходимо изменить. AFAIK, сервер Xorg не поддерживает динамическую загрузку для новых макетов. Вышеупомянутые методы используют XIM (стандартный метод ввода X), устаревшую систему. Я бы рекомендовал использовать современный метод ввода, поддерживающий плагины (модульный дизайн), такие как IBus или SCIM.
Я этого не пробовал, но полагаю, что ibus-table
- самый простой способ, как описано в этой публикации . Добавленный файл можно упаковать и установить отдельно, как и большинство движков и макетов IBus, IBus позаботится о их загрузке.
Обновление:
Что ж, этот ответ на AskUbuntu упоминает более чистый способ изменения исходного пакета.Вот минимальные инструкции по пересборке пакета
Загрузить зависимости сборки
sudo apt build-dep xkb-data
Загрузить исходный код
mkdir sandbox
cd sandbox
apt source xkb-data
Создайте новый патч quilt, следуя руководству по упаковке Ubuntu
cd xkeyboard-config * / {{1} } quilt new username_custom_layout.diff
quilt add symbols / us
Внесите необходимые изменения в symbols / us
, затем
обновите quilt
Создайте неподписанный исходный и двоичный пакет
debuild -us -uc
Пример пользовательской раскладки клавиатуры Дворака под названием Dvorak International Extended
, которая имеет запрошенные здесь функции и дополнена для Windows и Linux (код здесь) в сообщение Международная расширенная раскладка клавиатуры Дворжака -
Добавлена международная поддержка упрощенной клавиатуры Дворака.
Рис. 1 Дизайн расширенной раскладки клавиатуры Dvorak International,
Рис. 2 Поиск Dvorak
в настройках клавиатуры Debian после изменений раздела Попытка установки в Debian 8.7,
Рис. 3 Поиск extended
...
Мне удалось выполнить первые два шага по инструкции по установке, но я не увидел эффекта добавления раскладки клавиатуры там
[выполнено] Скопируйте этот файл в каталог /etc/X11/xkb/symbols/pc
. Для этого вам могут понадобиться привилегии root.
sudo mkdir -p /etc/X11/xkb/symbols/pc
sudo cp dvorak_int /etc/X11/xkb/symbols/pc/
Добавьте следующую строку в /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
Однако я не могу выполнить третий шаг
// Чтобы сделать раскладку клавиатуры доступной в 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
В этом ответе объясняется, как установить международную расширенную раскладку клавиатуры Дворака, найденную в этой статье Арьена ван Кола. Установка и настройка были довольно простыми с использованием 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
, чтобы убедиться, что новая раскладка клавиатуры применялась для каждого сеанса.
Если обновление системы перезаписывает файл конфигурации в /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 ИМЯ ПЛАНЕТА
для запуска приложения в соответствующей среде рабочего стола, чтобы загружать конфигурацию клавиатуры для каждого сеанса.
Если команда возвращает сообщение «Ошибка при загрузке нового описания клавиатуры» (как описано в этом старом сообщении на 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.Хотя я включил клавишу создания для демонстрации клавиш третьего и четвертого уровней, настройка клавиши создания , а не показана выше.