Я хотел бы определить compose
ключ в моей системе (Debian Sid "Wheezy"). У меня нет Xorg (и я не хочу никакой рабочей среды). Только в терминале.
Я хотел бы установить его на свой Alt-Gr
ключ (справа Alt
). Я пытался некоторое время, но я не могу понять, как его настроить.
Я расследовал и нашел несколько направлений:
$ showkey
дает мне код моегоAlt-Gr
ключа (# 100)$ dumpkeys
и$ dumpkeys --compose-only
вывести «текущее содержимое драйвера клавиатуры» в формате, указанном вkeymaps
соответствии соman
страницей$ loadkeys
загрузить таблицу перевода клавиатуры
Я уверен, что это не так сложно, но я скучаю, как с этим справиться ...
console
keyboard-layout
cedbeu
источник
источник
Ответы:
В более новых системах Debian и Ubuntu ваши настройки клавиатуры вводятся
/etc/default/keyboard
и совместно используются X и консолью. Просто бегии выберите
Compose key:
Right Alt (AltGr)
на соответствующем экране.Вы могли бы также поставить
XKBOPTIONS=compose:ralt
в/etc/default/keyboard
и запуститьВ старых системах по умолчанию на консоли есть ключ Compose. В
us
макете нажатие обеих Alt клавиш действует как Compose.1Например: Alt+ AltGr, ",A => а
Если вы предпочитаете AltGrтолько быть Compose, вам нужно изменить
в вашей активной карте клавиатуры
Самый простой способ сделать это - внести вышеуказанные изменения в
/lib/kbd/keymaps/i386/include/linux-with-alt-and-altgr.inc
.Лучшим способом является создание нового файла, названного
/lib/kbd/keymaps/i386/include/altgr-is-compose.inc
с помощью приведенной выше строки, создание новой раскладки клавиш, которая включает ее, и установка в нее раскладки клавиш по умолчанию.источник
dpkg-reconfigure
Мастер действительно спрашивает о ключе создания письма, но он говорит , что не работает в режиме «Unicode» (?). Кроме того, когда он не находится в этом режиме, он говорит, что Control + period работает как ключ композиции. Но я не заставлю это работать.unicode_start
. Для меня это все еще работает, если я бегу,setupcon
какdpkg-reconfigure
говорит.setupcon
свой терминал X (urxvt
), он говорит: «Мы не на консоли, консоль остается ненастроенной». Такжеshowkey
жалуется «Не удалось получить дескриптор файла на консоль». Вtty
обоих случаях это работает, ноshowkey
говорит (первое), что «режим kb был UNICODE», так что, возможно, именно поэтому он не работает. Но, период Control + работает вtty
. ОК, теперь это имеет смысл.X
? Вам необходимо запуститьsetupcon
виртуальную консоль Linux, например, Ctrl + Alt + F1.console-setup
, не поддерживает очень много составных последовательностей по умолчанию. Вы можете бежать,dumpkeys --compose-only
чтобы увидеть, какие из них. Вы должны быть в состоянии изменитьconsole-setup
сценарий инициализации, чтобы добавить дополнительные правила создания, где он выполняетсяloadkeys
.«compose» на консоли позволяет набирать два символа, но выводить третий.
проблема в том, что в составных определениях используются байты как в качестве двух входных данных (то есть вы не можете определить compose в терминах типизированных ключей, но только в терминах типизированных символов), так и для выходных данных.
чтобы заставить его работать в UTF-8, который является многобайтовым (по крайней мере, от 1 до 4 байтов), потребуются значительные изменения в способе обработки ввода с консоли и замена простого массива char, используемого в настоящее время чем-то более сложным. Кажется, что нет планов сделать это (консенсус среди разработчиков ядра состоит в том, что консоль должна оставаться консолью, что-то простое, используемое только для последнего пересмотра; если вам действительно нужен юникод, то вам, вероятно, также нужны bidi, shaping и т. Д .; лучше запустить графический терминал (полноэкранный xterm на X11; но есть и другие возможности).
Так что, действительно, это не работает и не будет работать с многобайтовыми символами на консоли. НО, это все еще работает, если вы ограничиваете составные определения простым ASCII.
И я также обнаружил, что это также работает, если вывод находится в ISO-8859-1 (что соответствует значениям Unicode до 0x00ff); для этого вы можете вставить в некоторый стартовый скрипт строку:
и поместите в этот файл нужные вам составные определения (будьте осторожны, сохраняйте файл в кодировке ISO-8859-1 и используйте в качестве выходных данных символы больше 0x7f), синтаксис такого файла очень прост, такие строки:
например:
Апостроф должен быть спасен.
в этом файле также определяется действие мертвых диакритических ключей; для dead_acute + a вы определяете строку вроде:
dead_grave использует backtick (`), dead_diaeresis использует двойную кавычку ("), dead_circumflex использует roundflex (^), а dead_tilde использует тильду (~).
источник
compose 'a' 'a' to 'å'
вcompose 'o' 'a' to U+00E5
противном случаеloadkeys
жаловались синтаксической ошибки.iconv -f utf-8 -t utf-8 filename
если нет ошибок, он находится в utf-8echo $?
крайней мере, нет ошибок и нет вывода вstderr
. Кроме того,file
говорит мне, что это UTF-8, так что это имеет смысл.