The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

X-cyr? (linux rus howto)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: linux, rus, howto,  (найти похожие документы)
_ RU.UNIX.LINUX (2:5077/15.22) _________________________________ RU.UNIX.LINUX _ From : Kosta Kudrin 2:5054/69.6969 06 May 97 04:04:42 Subj : Re: X-cyr? ________________________________________________________________________________ From: cola@tcsb.perm.su (Kosta Kudrin) HI,Pavel ! >> С русификацией иксов как справиться? >> Где написано? >> >Cyrillic-HOWTO Лови! --------------------------------cut--------------------------------- Newsgroups: fido7.perm.unix Distribution: fido7 X-Comment-To: All From: Victor Vislobokov <Victor.Vislobokov@p34.f8.n5054.z2.fidonet.org> Date: Wed, 30 Apr 97 20:05:13 +0500 Subject: К вопросу о русификации Linux Message-ID: <862431224@p34.f8.n5054.z2.ftn> Organization: Я там и тут - противный root X-FTN-AREA: PERM.UNIX Hello All. Тут было много мессаг о русификации. По этому я напрягся ;) и поскольку мне эта тема тоже интересна перевел часть Cyrillic-HOWTO, которая касается русификации консоли и иксов. Ловите. У кого нет могу выслать английскую версию. Замечания и предло- жения по переводу только мылом. === Cut === The Linux Cyrillic HOWTO Alexander L. Belikoff, (abel@wisdom.weizmann.ac.il) v2.1, 17 September 1995 Этот документ описывает как сделать в вашем Linux ввод, простмотр и печатать документов на русском языке. 1. Введение Этот документ объясняет те фичи, которые нужны вам для успешного ввода, просмотра и печати документов по-русски. Это описание предназначается прежде всего для конечных пользователей. В процессе его написания я пытался сделать все доступным как только это возможно. По моему несправедливо заставлять перегруженных поль- зователей, разбираться в деталях реализации X Windows или TeX, только потому, что они только хотят вводить или смотреть нужные тексты по- русски. Однако я не описываю что такое X Windows и как cоздавать доку- менты в TeX и LaTeX. По этому берите в руки этот документ преимущест- венно в случае возникновения потенциальных проблем. Есть некоторая разница между кодировками кириллицы в MS-DOS и Unix. В MS-DOS, очень популярной кодировкой кириллицы является альтернатив- ная кодировка (Alt). В Unix же традиционная кодировка с русскими символами - это KOI-8. Она описывается в RFC 1489 ("Registration of a Cyrillic Character Set"). Различие этих двух кодировок довольно незначительно (исключая пакет TeX). По этому мы опишем только установку кодировки KOI-8. Я учту любые комментарии, поправки и советы относящиеся к данному документу. Без колебаний пишите мне на abel@wisdom.weizmann.ac.il. 2. Благодарности и авторские права. Многие люди помогали мне (и не только мне) важной информацией и со- ветами. Еще больше людей пожертвовали своими программами для публич- ного пользования. Я сожалею если забыл кого-нибудь упомянуть. Вот они: Bas V._de Bakker, David Daves, Serge Vakulenko, Sergei O. Naoumov, Winfried Truemper. Авторские права на этот документ принадлежат Alexander L. Belikoff. Этот документ может использоваться и распостранятся под обычным ус- ловиям Linux HOWTO, описанным ниже. Объявление об авторском праве Linux HOWTO: Если не указано иначе, авторские права на документы Linux HOWTO принадлежат соответствующему автору. Документы Linux HOWTO могут воспроизводится и распостранятся целиком или по частям любым способом (электронным или физическим) при сох- ранении авторских прав на все копии. Комерческое распостра- нение допускается и приветствуется,однако автор должен быть уведомлен о каждом таком случае. Все переводы, производные или составные работы включающие любые документы Linux HOWTO должны быть защищены этим объ- явлением об авторском праве. Это - вы не можете делать производную работу на основании какого-либо HOWTO налогать дополнительные ограничения на ее распостранение. Исключе- ния из этих правил могут быть даны при определенных усло- виях; пожалуйста обратитесь к координатору Linux HOWTO на адрес данный ниже. Короче, мы хотим содействовать в распостранении этой инфор- мации через столько каналов сколько возможно. Однако мы хотим соблюдения авторских прав на документы HOWTO и хотим чтобы вы сообщали об любых планах по распостранению этих HOWTO. Если у вас возникли вопросы, пожалуйста обращайтесь к Greg Hinkins, координатору Linux HOWTO на gregh@sunsite.unc.edu. Вы можете по этому адресу найти номер телефона и другую дополнительную инфор- мацию. 3. Дальнейшие планы Следующая версия этого документа будет доступна на sunsite.unc.edu и tsx-11.mit.edu в директории HOWTO Linux Document Project. Я намереваюсь включить больше информации по TeX и LaTeX, а также разработать больше информации по печати. 4. Установка окружения 4.1. Консоль Все фичи, которые необходимы для русификации консоли Linux содержатся в пакете kbd. Этот пакет доступен на sunsite.unc.edu или tsx-11.mit.edu Обычно этот пакет уже установлен (это стандартная часть дистрибутива Slackware). Для установки кириллицы нужно выполнить три вещи: 1. Установить подходящий экранный шрифт. Это делает программа setfont. Файлы шрифтов находятся в /usr/lib/kbd/consolefonts. ЗАМЕЧАИЕ: икогда не запускайте setfont из под X или она подвесит вашу систему. Это происходит потому, что setfont исполь- зует вызовы низкого уровня для видеокарты, которые не нравятся X. 2. Если вы используете шрифт в альтернативной кодировке (как я) то вы должны вызвать программу mapscrn, которая выполняет автоматическое преобразование из альтернативной кодировки в KOI-8, с файлом /usr/lib/kbd/consoletrans/koi2alt. Пример: mapscrn koi2alt 3. Загрузить подходящую раскладку клавиатуры с помощью программы loadkeys. апример: loadkeys ru.map Обычно разные раскладки содержат разные клавиши переключения из русского на английский (Клавиши правый Ctrl, правый Atl и т.д.) 4. Вывести последовательность ESC(K на экран (ESC - это символ Escape, который имеет код 033). Одному богу инвестно чего делает эта комби- нация. Я украл ее из Danish-HOWTO <file://sunsite.unc.edu/pub/Linux/docs/HOWTO/Danish-HOWTO> (спасибо, Thomas Petersen) и она работает и у меня! иже приведен пример сценария для установки кириллицы на консоли: #!/bin/bash # # load cyrillic defs for console # # *** NEVER TRY IT UNDER X!!! *** loadkeys /usr/lib/kbd/keytables/ru.map setfont /usr/lib/kbd/consolefonts/Cyr_a8x16 mapscrn /usr/lib/kbd/consoletrans/koi2alt echo -ne 'ESC(K' # используйте АТУРАЛЬЫЙ ESCAPE символ здесь! echo "Use the right Ctrl key to switch the mode..." 4.2. Система X Window Как и в режиме консоли, X окружение также требует некоторой настройки. Это установка режима ввода и шрифтов X. Обе эти установки обсуджаются ниже. 4.2.1. Шрифты в X. Сперва вы должны найти коллекцию шрифтов с киррилицей. екоторое количество таких шрифтов есть в сети. Самая любимая коллек- ция у автора это VakuFonts созданная Segre Vakulenko (vak@cronyx.ru). Она находится в коллекции фич кириллицы для системы X Window на <ftp://ftp.funet.fi/pub/culture/russian/comp/xwin>; Там же вы сможете найти много полезных пакетов для X. Замечание: Очевидно, этот пакет включается в XFree86 версии 3.1.2 также как и для более поздних публичных заплат для X11 Release 6. Обидно, что автор не имеет возможности проверить его. Обычно шрифты для X распостраняются в формате BDF который представля- ет собой текстовое описание шрифта. Вы можете скомпилировать шрифты в формат PCF, используя команду bdfopcf: bdftopcf -o name.pcf name.bdf Также можно сжать скомпилированные шрифты используя команду compress (Я не уверен в поддержке gzip). Теперь вы должны сделать три вещи для установки всего: 1. Поместить скомпилированные (и возможно скомпрессированные) шрифты в специальную директорию. 2. Пересоздать список шрифтов для этой директории. Просто зайдите в нее командой cd и запустите: mkfontdir . Вы должны запустить его один раз. Это обновит файл каталога шрифтов fonts.dir. 3. Если пакет шрифтов предоставляет файл псевдонимов шрифтов (обычно font.alias) то добавте его в конец того файла псевдонимов шрифтов, который находится в директории, содержащей шрифты. 4. Если эта директория еще не известна X серверу, то вы должны сде- лать ее известной. Для этого добавте следующие команды в файл xinitrc (локальный или глобальный): xset +fp directory_with_fonts xset fp rehash После вы того как вы сделаете установки описанные выше, вы можете проверить доступны ли новые шрифты запустив следующую команду. xfd -fn fontname При этом должна быть показана таблица символов заданного шрифта. 4.2.2. Трансляция ввода Переключение между различными трансляциями ввода устанавливается программой xmodmap. Эта программа позволяет задать коды включающие различные символы и их комбинации. Она устанавливает все это осно- вываясь на файле содержащем таблицу трансляций, обычно это ~/.Xmodmap. иже следует простое описание задания ввода. Если вы хотите сделать больше прибамбасов, обратитесь к руководству xmodmap(1) или лучше подождите X11 Release 7,который устранит текущие проблемы со вводом. В нашем случае, таблица трансляции определяет две вещи: In our case, the translation table should define two things: - коды символов соответствующие буквенно-цифровым символам и - множество правил переключения 4.2.2.1. Таблица символов Это базовая последовательность директив, которые назначают определен- ные символы заданным кодам клавиатуры. Основной синтаксис такой: keycode code = sym1 sym2 sym3 sym4 где code - это числовой код данной клавиши на клавиатуре (обратитесь к стандартной таблице для вашей системы. В моем случае она записана в файле /usr/lib/X11/etc/xmodmap.std). Syms определяют символы гене- рируемые клавишей при разных условиях. Sym1 - это символ генерируемый в обычном состоянии, sym2 - соответствует клавише в состоянии, когда нажата клавиша shift. Sym3 и sym4 определяют символы генерируемые, когда активен переключатель режимов Mode_switch соответственно для нормального состояния и для состояния с нажатой клавишей shift (груп- па 2, использующая спецификацию протокола X). В нашем случае активный Mode_switch соответствует режиму ввода кириллицы. Это могут быть или шестнадцатиричные коды или символьные константы из /usr/include/X11/keysymdef.h (без приставки "XK_"). Таким образом если мы хотим чтобы клавиша соответствующая латинской 'a' генерировала русскую 'а' в альтернативной кодировке мы должны написать так: keycode 38 = a A 0xC1 0xE1 Читатель может быть удивлен почему я не использую соответственно кон- станты Cyrillic_a и Cyrillic_A. Ответ состоит в том, что они не ра- ботают у меня. Я не очень хорошо разбираюсь в системе X Window, но я даю следующее объяснение. Символьные константы указанные выше, имеют величины 0x6C1 и 0x6E1 соответственно. Это подразумевает что в факти- чески многоязычном окружении они могут быть успешно использованы без перекрывания с любыми другими символьными наборами. Однако стандарт KOI-8 не подходит хорошо для такого окружения. Таким образом, если мы хотим сохранить совместимость в дальнейшем, мы нарушаем эти правила многоязычной поддержки в системе X Window. Следующая таблица отражает популярнейшую русскую JCUKEN раскладку клавиатуры (эти таблицы получены из пакета VakuFonts): keysym 4 = 4 dollar 4 quotedbl keysym 5 = 5 percent 5 colon keysym 6 = 6 asciicircum 6 comma keysym 7 = 7 ampersand 7 period keysym q = q Q 0xCA 0xEA keysym w = w W 0xC3 0xE3 * Message split, to be continued * --- ifmail v.2.8c-1.5g * Origin: Technical Center of the Perm Saving Bank. (2:5054/69.6969@fidonet) _ RU.UNIX.LINUX (2:5077/15.22) _________________________________ RU.UNIX.LINUX _ From : Kosta Kudrin 2:5054/69.6969 06 May 97 04:04:42 Subj : [part 2] Re: X-cyr? ________________________________________________________________________________ From: cola@tcsb.perm.su (Kosta Kudrin) * Continuation 1 of a split message * keysym e = e E 0xD5 0xF5 keysym r = r R 0xCB 0xEB keysym t = t T 0xC5 0xE5 keysym y = y Y 0xCE 0xEE keysym u = u U 0xC7 0xE7 keysym i = i I 0xDB 0xFB keysym o = o O 0xDD 0xFD keysym p = p P 0xDA 0xFA keysym bracketleft = bracketleft braceleft 0xC8 0xE8 keysym bracketright = bracketright braceright 0xDF 0xFF keysym a = a A 0xC6 0xE6 keysym s = s S 0xD9 0xF9 keysym d = d D 0xD7 0xF7 keysym f = f F 0xC1 0xE1 keysym g = g G 0xD0 0xF0 keysym h = h H 0xD2 0xF2 keysym j = j J 0xCF 0xEF keysym k = k K 0xCC 0xEC keysym l = l L 0xC4 0xE4 keysym semicolon = semicolon colon 0xD6 0xF6 keysym apostrophe = apostrophe quotedbl 0xDC 0xFC keysym grave = grave asciitilde 0xA3 0xB3 keysym z = z Z 0xD1 0xF1 keysym x = x X 0xDE 0xFE keysym c = c C 0xD3 0xF3 keysym v = v V 0xCD 0xED keysym b = b B 0xC9 0xE9 keysym n = n N 0xD4 0xF4 keysym m = m M 0xD8 0xF8 keysym comma = comma less 0xC2 0xE2 keysym period = period greater 0xC0 0xE0 Для использования русской раскладки YAWERTY, я включил следующую таблицу: keysym q = q Q 0xD1 0xF1 keysym w = w W 0xD7 0xF7 keysym e = e E 0xC5 0xE5 keysym r = r R 0xD2 0xF2 keysym t = t T 0xD4 0xF4 keysym y = y Y 0xD9 0xF9 keysym u = u U 0xD5 0xF5 keysym i = i I 0xC9 0xE9 keysym o = o O 0xCF 0xEF keysym p = p P 0xD0 0xF0 keysym bracketleft = bracketleft braceleft 0xDB 0xFB keysym bracketright = bracketright braceright 0xDD 0xFD keysym a = a A 0xC1 0xE1 keysym s = s S 0xD3 0xF3 keysym d = d D 0xC4 0xE4 keysym f = f F 0xC6 0xE6 keysym g = g G 0xC7 0xE7 keysym h = h H 0xC8 0xE8 keysym j = j J 0xCA 0xEA keysym k = k K 0xCB 0xEB keysym l = l L 0xCC 0xEC keysym z = z Z 0xDA 0xFA keysym x = x X 0xD8 0xF8 keysym c = c C 0xC3 0xE3 keysym v = v V 0xD6 0xF6 keysym b = b B 0xC2 0xE2 keysym n = n N 0xCE 0xEE keysym m = m M 0xCD 0xED keysym backslash = backslash bar 0xDC 0xFC keysym grave = grave asciitilde 0xC0 0xE0 keysym equal = equal plus 0xDE 0xFE keysym 3 = 3 numbersign 3 0xDF keysym 4 = 4 dollar 4 0xFF 4.2.2.2. Правила переключения режимов Это - основа хитрейшей части установки кириллизации X. Вы должны определить условия при которых текущий режим будет переключатся между нормальным и кириллистическим. В Linux для этого есть два способа. Один - это специфический для XFree86,когда другой более общий (хорошо, что не слишком большой, как я показываю ниже). Специфический для XFree86 способ следующий. Есть два виртуальных дей- ствия, которые могут быть назначены для клавиш в файле XF86Config: ModeShift который изменяет режим с альтернативного на нормальный без удержания этого режима и ModeLoack который делает тоже, но с удержа- нием. В первом случае клавиши будут генерировать альтернативные сим- волы только, когда клавиша ModeShift нажата, в то время как в послед- нем случае пользователю нужно только нажать клавишу ModeLock и клави- атура будет генерировать альтернативные символы пока эта клавиша не нажата второй раз. Вы должны назначить ModeLock и ModeShift для клавиш выбранных вами в качестве переключателей. Таким образом, если вы хотите назначить ModeShift на правую клавишу Alt, то вы должны поместить следующую директиву в ван XF86Config: RightAlt ModeShift Если вы хотите иметь ModeLock на этой клавише, то: RightAlt ModeLock Смотрите XF86Config(4/5) для больших подробностей. Другой способ - это снова использование утилиты xmodmap. Это более хитрая штука. Вы должны: - азначить Mode_switch кокой-либо калвише и - Добавить Mode_switch в таблицу модификаторов Теперь клавиша для которой назначили ModeShift будет выполнять пере- ключение режимов. Пока она нажата, клавиатура в альтернативном режиме. Кроме того, если вы добавите клавишу ModeLock, то она будет удерживать альтернативный режим. Замечание: Однако это может вызвать проблемы. Serge Vakulenko (vak@cronyx.com) указывает, что различные реализации X серверов могут иметь различные правила для назначения переключателей режимов (так например, некоторые серверы ограничивают установку клавиш, которые могут работать в переключающемся режиме: CapsLock,NumLock,ScrollLock). адеюсь, что эти проблемы будут устранены в следующих версиях системы X Window. Для более подробной информации смотрите спецификацию прото- кола X. иже приведен пример. Предполагается, что мы хотим использовать пра- вый Alt как переключатель режимов без фиксации и SrollLock как перек- лючатель с фиксацией. Сперва нужно проверить таблицу модификаторов по умолчанию. Это возможно сделать запустив xmodmap без аргументов: $ xmodmap xmodmap: up to 2 keys per modifier, (keycodes in parentheses): shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Lock (0x42) control Control_L (0x25) mod1 Alt_L (0x40), Alt_R (0x71) mod2 Num_Lock (0x4d) mod3 mod4 mod5 В соответствии с полученными выше данными нужно: 1. удалить клавишу Alt_R из mod1 2. назначить Mode_switch клавише Alt_R 3. назначить Sroll_Lock на код 78 (этот код активирует Scroll_Lock) 4. добавить Mode_switch в mod3 и 5. добавить Scroll_Lock в mod3 Таким образом: remove mod1 = Alt_R keysym Alt_R = Mode_switch keycode 78 = Scroll_Lock add mod3 = Mode_switch add mod3 = Scroll_Lock Если вы используете более позднюю версию, то вы можете комбинировать и таблицу и директивы режимов в вашем файле ~/.Xmodmap. Такие файлы в основном поставляются с разными пакетами по установке кириллицы для X. Хороший пример таких таблиц прилагается в пакете Serge Vakulenko, про который говорилось выше. Чтобы активизировать таблицу, которую содержит файл нужно выполнить: xmodmap filename после запуска X. Модифицируйте ваш файл .xinitrc для выполнения этого. Замечание: ваш файл .xinitrc может уже содержать код для запуска xmodmap с вашей локальную таблицу, если она существует. Таблица распостраняемая с пакетом Serge Vakulenko не работает у ав- тора. иже приводится заплата устраняющая эту проблему: diff -u --new-file jcuken.xmm jcuken.xmm.mod --- xMail/beta +++ jcuken.xmm.mod Sun Aug 13 15:44:06 1995 @@ -2,6 +2,8 @@ ! Cyrillic keyboard mapping table. ! Produced by Serge Vakulenko, <vak@kiae.su>, Moscow. ! +! Modified by Alexander L. Belikoff (abel@wisdom.weizmann.ac.il), 1995 +! ! Russian JCUKENG keyboard layout implemented. ! Cyrillic characters are entered in koi8 encoding. ! @@ -10,7 +12,9 @@ ! Use CapsLock as rus/lat switch key. remove lock = Caps_Lock -add mod2 = Caps_Lock +keysym Caps_Lock = Mode_switch +add mod2 = Mode_switch +add lock = Mode_switch ! Key Base Shift Caps ShiftCaps !------------------------------------------------------------------------ Это позволило мне использовать клавишу CapsLock для переключения между нормальным режимом и режимом ввода кириллицы. === Cut === Victor -----------------------------end------------------------------------- И мои замечания ! ----------------------cut-------------------------------------------- From cola@tcsb.perm.su Sat May 3 04:48:09 1997 Path: tcsb.perm.su!news From: cola@tcsb.perm.su (Kosta Kudrin) Newsgroups: fido7.perm.unix Subject: Re: К вопросу о русификации Linux HI, Victor ! > Hиже приведен пример сценария для установки кириллицы на консоли: > > #!/bin/bash > # load cyrillic defs for console > # *** NEVER TRY IT UNDER X!!! *** > > loadkeys /usr/lib/kbd/keytables/ru.map > setfont /usr/lib/kbd/consolefonts/Cyr_a8x16 > mapscrn /usr/lib/kbd/consoletrans/koi2alt Тут надо добавить цикл , что бы все работало на всех консолях for i in 1 2 3 4 5 6 7 8 do > echo -ne 'ESC(K' # используйте АТУРАЛЬЫЙ ESCAPE символ здесь! > echo "Use the right Ctrl key to switch the mode..." и чуть чуть изменить строку выше на: echo -ne 'ESC(K' >/dev/tty$i done Все выше приведенное действительно для koi8. Для альтернативки (Если есть такие извращенцы, а они есть) необходимо следующее. loadkeys /_путь_/ru2.map setfont /_путь_/Cyr_a8x? #Где ?=8,14,16 кому как нравиться mapscrn /_путь_/trivial for i in 1 2 3 4 5 6 7 8 do echo -ne 'ESC(K' >/dev/tty$i done Теперь вам можно читать и писать как в ДОСе :)) Hо предупреждаю заранее , почти все надо будет патчить :)) > 4.2. Система X Window > ............. > 4.2.2. Трансляция ввода > 4.2.2.2. Правила переключения режимов Для X-Windows версии 3.2 и выше подходит и этот вариант , если в файле конфигурации XF86Config в секции Keyboard выставить XKBDisable В противном случае настроить модуль XKB - сам не настраивал живу под 3.1.2 Хотя в доках все написано! :) ---------------------------end----------------------------- -- С уважением , Костя. 2:5054/69@fidonet AKA 2:5054/69.6969@fidonet /home/ AKA cola@tcsb.perm.su --- ifmail v.2.8c-1.5g * Origin: Technical Center of the Perm Saving Bank. (2:5054/69.6969@fidonet)

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру