Ключевые слова:rus, keyboard, xfree86, xterm, (найти похожие документы)
Date: Thu, 13 Mar 2003 22:18:29 +0500
From: Igor Nikolaev <Igor_Nikolaev@f266.n5030.z2.fidonet.org>
Newsgroups: ftn.ru.unix
Subject: Изменение поведения Xkb в XFree86 4.3.0, Заметки по xterm
Hу почему у кого-то где-то постоянно что-то чешется??
Раньше вполне даже работавшее в /etc/X11/XF86Config-4
Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
Option "XkbLayout" "ru"
Option "XkbOptions" "grp:caps_toggle,grp_led:caps"
EndSection
Теперь приводит к забавнейшему фефекту: вводятся только русские
буквы и цифры вводятся, а латинских нет. В качестве решения
нужно добавить "us" в XkbLayout:
Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
Option "XkbLayout" "us,ru"
Option "XkbOptions" "grp:caps_toggle,grp_led:caps"
EndSection
Hа http://knot.pu.ru/faq/xterm сию радость отметил...
Игорь Hиколаев "Разборки с xterm" http://knot.pu.ru/faq/xterm
Сюда сведены все разборки и настройки xterm (http://dickey.his.com/xterm).
Принято, что каталог /X11 показывает на /usr/X11R6/lib/X11 то есть
сделано: ln -s /usr/X11R6/lib/X11 /X11
Настройки можно вносить как в app-defaults для приложения (что и
указано в примерах), так и в единый пользовательский файл
~/.Xresources, в этом случае нужно не забыть подать команду xrdb
-merge ~/.Xresources (её выполняет оконный менеджер среди
многочисленных загрузочных скриптов). /X11/app-defaults приложение
читает самостоятельно при запуске, но эти файлы могут быть переписаны
при upgrade дистрибутива. Ресурсы приложения можно посмотреть при
помощи утилит appres и editres.
Русификаторами клавиатуры занимается Иван Паскаль (http://www.tsu.ru/~pascal)
Получаем русские и латинские буквы из xkb
Вот кусок /etc/X11/XF86Config для XFree86 4.3.0:
Section "InputDevice"
Identifier "Keyboard1"
Driver "Keyboard"
# Option "AutoRepeat" "500 30"
# Option "Xleds" "1 2 3"
# Option "XkbRules" "xfree86"
# Option "XkbModel" "microsoft"
Option "XkbLayout" "us,ru" # "ru" if ver('XFree') < 4.3.0
Option "XkbOptions" "grp:caps_toggle,grp_led:caps"
EndSection
Поправьте номер в Identifier и раскомментируйте по вкусу...
Разборками с локалью занимается Алек Воропай (http://www.sensi.org/~alec)
Я у него нашёл полезнейшие команды:
localedef -c -i ru_RU -f KOI8-R ru_RU.KOI8-R
locale mon
После первой из них debian 3.0 пришёл в себя...
Shift - Caps Lock
Чтобы Shift CapsLock не включал CapsLock нужно убрать эту фичу в
/X11/xkb/symbols/group, замените строчку
key <CAPS> { [ ISO_Next_Group, Caps_Lock ] };
на
key <CAPS> { [ ISO_Next_Group, ISO_Next_Group ] };
Выделение двойным мышом русских слов и адресов:
cat >> /X11/app-defaults/XTerm
XTerm*CharClass: 33:48,37:48,45-47:48,58:48,64:48,126:48,160-255:48
Чтобы xterm не нёс управляющие символы:
в каталоге /usr/src/usr.bin/mklocale/data/ или
/usr/src/share/mklocale/ есть файл ru_SU.KOI8-R.src из которого
получается LC_CTYPE (http://knot.pu.ru/faq/xterm/ru_SU.KOI8-R.src).
Меняем:
#PRINT 0x20 - 0x7e 0x80 - 0xff
PRINT 0x20 - 0x7e 0xa0 - 0xff
#GRAPH 0x21 - 0x7e 0x80 - 0x99 0x9b - 0xff
GRAPH 0x21 - 0x7e 0xa0 - 0xff
после чего сделать
cd /usr/src/usr.bin/mklocale/data || cd /usr/src/share/mklocale/data
mklocale <ru_SU.KOI8-R.src
>/usr/share/locale/ru_SU.KOI8-R/LC_CTYPE
Устанавливаем буфер отмотки в 2048 строк
cat >>/X11/app-defaults/XTerm <<EOF
XTerm*saveLines: 2048
EOF
Устанавливаем русские фонты
Посмотрите какие каталоги в задействованом XF86Config отвечают за
русские фонты. Затем распечайтайте содержимое соответствующего
fonts.alias, например cat /X11/fonts/cyrillic/misc/fonts.alias и
внесите эти фонты в /X11/app-defaults/XTerm вместо тех, которые там
содержатся. Например:
*fontMenu*font2*Label: Tiny
*VT100*font2: koi6x10
*fontMenu*font3*Label: Small
*VT100*font3: koi8x13
! default font
*VT100*font: koi7x14
! special case for mandrake :-)
*.vt100.font: koi7x14
*fontMenu*font4*Label: Medium
*VT100*font4: koi9x15
*fontMenu*font5*Label: Large
*VT100*font5: koi10x20
*fontMenu*font6*Label: Huge
*VT100*font6: koi12x24
Устанавливаем цвета для vim
cat >>/X11/app-defaults/XTerm <<EOF
XTerm*color0: #000000
XTerm*color1: #c00000
XTerm*color2: #008000
XTerm*color3: #808000
XTerm*color4: #0000c0
XTerm*color5: #c000c0
XTerm*color6: #008080
XTerm*color7: #c0c0c0
XTerm*color8: #808080
XTerm*color9: #ff6060
XTerm*color10: #00ff00
XTerm*color11: #ffff00
XTerm*color12: #8080ff
XTerm*color13: #ff40ff
XTerm*color14: #00ffff
XTerm*color15: #ffffff
Xterm*cursorColor: Black
EOF
Переназначаем 'Home' и 'End' для vim
В текущей версии FreeBSD это итак работает...
Редактором после строки
*VT100.Translations: #override \n\
вставить:
<Key>Home: string("0x1b") string("[7~") \n\
<Key>End: string("0x1b") string("[8~") \n\
l10n под linux debian
Локализация - это свойство пользователя, а не системы. В linux (пока)
нет общесистемного подхода (во FreeBSD к примеру это класс
пользователся в /etc/master.passwd). Как мне кажется, в результате
локализация должна быть прописана в ~/.profile в виде:
LANG="ru_RU.KOI8-R"
export LANG
и вызываться в /etc/X11/Xsession.d/88xfree86-profile :
./~profile
Впрочем каждый может сделать как ему нравится...
Некорректная l10n, в результате нет русских букв
У меня под xdm со старыми версиями FreeBSD почему-то не было
русских буковок в xterm. Причём если из xterm вызвать другой xterm, то
русские буковки появлялись. Это очевидно навело на мысль, что при
запуске xterm ещё не установлены переменные окружения, отвечающие за
локализацию (затем xterm вызывает shell, а тот устанавливает
переменные).
В итоге я поменял в /X11/xdm/Xsession хвост следующим образом:
startup=$HOME/.xsession
resources=$HOME/.Xresources
if [ -f "$startup" ]; then
exec "$startup"
else
# by Igor
LANG=ru_RU.KOI8-R; export LANG;
MM_CHARSET=KOI8-R; export MM_CHARSET
fvwm95 &
exec xterm -j -fn koi9x15 -fb koi9x15 -geometry 80x10+0+0 -name login -iconic
Как результат всё, что мне было нужно, заработало.