Date: 16 Nov 96
From: Dima Barsky
В традиционном методе русификации клавиатуры (через xmodmap)
переключается состояние всего X-сервера, а не отдельных
клиентов. Это мне кажется неудобным. Если у тебя включен
русский регистр, сразу же начинаются проблемы с window managґ
erом, перестают работать Control кнопки, и т.д... Хорошо бы
уметь переключать регистр для каждой программы независимо (что
поначалу кажется невозможным).
Подумавши немного я понял, что писать по-русски мне (да,
видимо, и большинству других людей) нужно всего в двух
программах - xterm и emacs. Обоих можно русифицировать
независимо. Для emacs'a я взял cyr.el от Димы Манина,
http://camelot.mssm.edu/~manin/cyr.el
немного его подшаманил и отдал ему назад. Теперь он вроде бы
работает как для Emacs'a так и для XEmacs'а.
А для xterm пришлось написать свой resource-file и в нем
переопределить все translations. После чего надо xmodmap'ом
переопределить только одну кнопку, которая будет в xtermе
регистр переключать, например вот так:
xmodmap -e "remove lock = Caps_Lock"
xmodmap -e "keysym Caps_Lock = Execute"
Эту же кнопку можно и в emacs'e для переключения регистров использовать.
Дима.
----------------------- CUT HERE: XTerm.ad -----------------------------
*VT100.eightBitInput: True
*VT100.eightBitOutput: True
*VT100.translations: #replace \
Execute: keymap(cyrillic) set-reverse-video(on)\n\
Shift Prior: scroll-back(1,halfpage) \n\
Shift Next: scroll-forw(1,halfpage) \n\
Shift Select: select-cursor-start() \
select-cursor-end(PRIMARY, CUT_BUFFER0) \n\
Shift Insert: insert-selection(PRIMARY, CUT_BUFFER0) \n\
~Meta: insert-seven-bit() \n\
Meta: insert-eight-bit() \n\
!Ctrl: popup-menu(mainMenu) \n\
!Lock Ctrl: popup-menu(mainMenu) \n\
~Meta: select-start() \n\
~Meta: select-extend() \n\
!Ctrl: popup-menu(vtMenu) \n\
!Lock Ctrl: popup-menu(vtMenu) \n\
~Ctrl ~Meta: ignore() \n\
~Ctrl ~Meta: insert-selection(PRIMARY, CUT_BUFFER0) \n\
!Ctrl: popup-menu(fontMenu) \n\
!Lock Ctrl: popup-menu(fontMenu) \n\
~Ctrl ~Meta: start-extend() \n\
~Meta: select-extend() \n\
:select-end(PRIMARY, CUT_BUFFER0) \n\
: bell(0)
*VT100.cyrillicKeymap.translations: #override \
Execute: keymap(None) set-reverse-video(off) \n\
Return: insert() \n\
Shift`: string("0xe0")\n\
!`: string("0xc0")\n\
Shifta: string("0xe1")\n\
!a: string("0xc1")\n\
Shiftb: string("0xe2")\n\
!b: string("0xc2")\n\
Shiftc: string("0xe3")\n\
!c: string("0xc3")\n\
Shiftd: string("0xe4")\n\
!d: string("0xc4")\n\
Shifte: string("0xe5")\n\
!e: string("0xc5")\n\
Shiftf: string("0xe6")\n\
!f: string("0xc6")\n\
Shiftg: string("0xe7")\n\
!g: string("0xc7")\n\
Shifth: string("0xe8")\n\
!h: string("0xc8")\n\
Shifti: string("0xe9")\n\
!i: string("0xc9")\n\
Shiftj: string("0xea")\n\
!j: string("0xca")\n\
Shiftk: string("0xeb")\n\
!k: string("0xcb")\n\
Shiftl: string("0xec")\n\
!l: string("0xcc")\n\
Shiftm: string("0xed")\n\
!m: string("0xcd")\n\
Shiftn: string("0xee")\n\
!n: string("0xce")\n\
Shifto: string("0xef")\n\
!o: string("0xcf")\n\
Shiftp: string("0xf0")\n\
!p: string("0xd0")\n\
Shiftq: string("0xf1")\n\
!q: string("0xd1")\n\
Shiftr: string("0xf2")\n\
!r: string("0xd2")\n\
Shifts: string("0xf3")\n\
!s: string("0xd3")\n\
Shiftt: string("0xf4")\n\
!t: string("0xd4")\n\
Shiftu: string("0xf5")\n\
!u: string("0xd5")\n\
Shiftv: string("0xf6")\n\
!v: string("0xd6")\n\
Shiftw: string("0xf7")\n\
!w: string("0xd7")\n\
Shiftx: string("0xf8")\n\
!x: string("0xd8")\n\
Shifty: string("0xf9")\n\
!y: string("0xd9")\n\
Shiftz: string("0xfa")\n\
!z: string("0xda")\n\
Shift[: string("0xfb")\n\
![: string("0xdb")\n\
Shift\\\\: string("0xfc")\n\
!\\\\: string("0xdc")\n\
Shift]: string("0xfd")\n\
!]: string("0xdd")\n\
Shift=: string("0xfe")\n\
!=: string("0xde")\n\
Shift3: string("0xdf")\n\
Shift4: string("0xff")
From: Dima Barsky
В традиционном методе русификации клавиатуры (через xmodmap)
переключается состояние всего X-сервера, а не отдельных
клиентов. Это мне кажется неудобным. Если у тебя включен
русский регистр, сразу же начинаются проблемы с window managґ
erом, перестают работать Control кнопки, и т.д... Хорошо бы
уметь переключать регистр для каждой программы независимо (что
поначалу кажется невозможным).
Подумавши немного я понял, что писать по-русски мне (да,
видимо, и большинству других людей) нужно всего в двух
программах - xterm и emacs. Обоих можно русифицировать
независимо. Для emacs'a я взял cyr.el от Димы Манина,
http://camelot.mssm.edu/~manin/cyr.el
немного его подшаманил и отдал ему назад. Теперь он вроде бы
работает как для Emacs'a так и для XEmacs'а.
А для xterm пришлось написать свой resource-file и в нем
переопределить все translations. После чего надо xmodmap'ом
переопределить только одну кнопку, которая будет в xtermе
регистр переключать, например вот так:
xmodmap -e "remove lock = Caps_Lock"
xmodmap -e "keysym Caps_Lock = Execute"
Эту же кнопку можно и в emacs'e для переключения регистров использовать.
Дима.
----------------------- CUT HERE: XTerm.ad -----------------------------
*VT100.eightBitInput: True
*VT100.eightBitOutput: True
*VT100.translations: #replace \
Shift
Shift
Shift
select-cursor-end(PRIMARY, CUT_BUFFER0) \n\
Shift
~Meta
Meta
!Ctrl
!Lock Ctrl
~Meta
~Meta
!Ctrl
!Lock Ctrl
~Ctrl ~Meta
~Ctrl ~Meta
!Ctrl
!Lock Ctrl
~Ctrl ~Meta
~Meta
*VT100.cyrillicKeymap.translations: #override \
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
!
Shift
Shift
- ftp://ftp.x.org/contrib/editors/aXe-6.1.2.tar.Z
----------------------- CUT HERE: Axe.ad -----------------------------
*ed.translations: #override \n\
*ed.cyrillicKeymap.translations: #override \
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift
Shift