CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
17.09.2019

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Дистрибутивы :: OpenSolaris

OpenSolaris: Как подружиться с тётей Клавой

CITKIT.ru

Страницы: предыдущая :: 1 :: 2 :: 3

Самое же главное, даже полное потрошение интерактивного Редактора настроек способа ввода ни на шаг не приблизило нас к главной цели: нахождению возможности смены варианта раскладки кириллической клавиатуры. Однако оно дало нам направление дальнейших поисков: как можно видеть на примере США, Турции и других цивилизованных стран, различные варианты раскладок в IIIM реализуются как отдельные "языки" универсального языкового инджина (unitle). И если для русского таких "языков", кроме умолчального, не предусмотрено — так что же, спасение утопающих — дело рук самих утопающих. То есть их надо создать собственноручно — говоря по-простому, изготовить подходящую раскладку клавиатуры. Остаётся только определить, как это сделать и куда её потом прикрутить.

Элементарное логическое рассуждение, доступное не только мистеру Холмсу, но и доктору Ватсону, показывает, что IIIM должен иметь некие конфигурационные файлы. И действительно, таковые находятся — как ни странно, в каталоге /etc/iiim/. Содержание его следующее:

$ ls -l /etc/iiim/
-rw-r--r-- 1 root sys    4303 2008-11-20 03:31 client.xml
-rw-r--r-- 1 root sys    1931 2008-11-20 03:31 iiimd.xml.conf
-rw-r--r-- 1 root sys  187781 2008-12-19 21:13 layoutdata.xml
-rwxr-xr-x 1 root sys     602 2008-11-20 03:31 xsession

Как нетрудно догадаться, первые три из приведенных файлов — конфиги в формате XML, последний же, имеющий бит исполнения — сценарий, обеспечивающий запуск IIIM при старте сеанса Иксов. Рассмотрение содержимого конфигов приводит к выводу, что iiimd.xml.conf нас не интересует: он отвечает за работу серверной части IIIM. Знакомство с файлом client.xml, в котором имеют место быть общие настройки клиентской части IIIM по умолчанию, также отложим до лучших времён. А вот layoutdata.xml — это как раз то что нам сейчас нужно: именно в нём находятся раскладки клавиатуры для разных "языков".

Правда, просмотреть его содержимое через обычный пейджер, например, через

$ less /etc/iiim/layoutdata.xml

будет несколько затруднительно: перед нашими глазами предстанет нечто, подобное изображённому на рис. 12.


Рис. 12. Содержимое файла /etc/iiim/layoutdata.xml при просмотре в программе less

Однако вспоминаем что перед нами — обычный xml-файл, который, несмотря на отсутствие привязанной к нему таблицы стилей, можно как-то просмотреть в обычном же браузере (рис. 13).


Рис. 13. Содержимое файла /etc/iiim/layoutdata.xml при просмотре в браузере

Последовательно сворачивая блоки кода, относящиеся к языкам, в данный момент не представляющим интереса, добираемся, наконец, до секции, описывающей раскладку клавиатуры для Великого и Могучего (рис. 14).


Рис. 14. Файл /etc/iiim/layoutdata.xml: секция Russian

Формат записи для каждой секции файла интуитивно понятен. Сначала идёт определение "языка" в том виде, в каком оно появится во вкладке Клавиатура Редактора настроек способов ввода (см. рис. 8):

<lo alg="true" type="Russian">

Далее следует описание каждой физической клавиши, начиная с её raw скан-кода (как это именуется в терминологии xkb):

<key sym="AB01">

и генерируемых ею скан-кодов "обработанных", просто при нажатии и в сочетании с клавишами-модификаторами Shift и переключателем групп:

<c1>7a</c1> код клавиши AB01
<c2>5a</c2> код клавиши AB01+Shift
<c3>44f</c3> Mod+код клавиши AB01
<c4>42f</c4> Mod+код клавиши AB01+Shift

Дальше всё легко и просто: надо банально открыть файл layoutdata.xml в любом (или любимом) текстовом редакторе, отыскать в секции Russian key sym клавиши, коды, генерируемые которой, мы хотим изменить, и, руководствуясь Final Unicode 5.1 names list, проделать это.

Правда, на этой "просторной, дороге торной", нас будут поджидать кое-какие колдо...бины и вы...бины. Первая из них: файл /etc/iiim/layoutdata.xml записан в виде одной (и очень длинной) строки, и по нормальному отредактировать его в каком-либо штатном редакторе OpenSolaris очень затруднительно. Я, если честно, эту колдо...бину преодолел, поступившись принципами, как прихлёбный плюралист. А именно, перезагрузился во FreeBSD и спокойно отредатировал этот файл в редакторе Geany. Но, как будет видно чуть позже, то же самое можно проделать, не покидая OpenSolaris.

Вторая вы...бина — определение того, а какой же клавише на физической клавиатуре соответствует raw-код, которому мы хотим приписать новые значения скан-кодов?

Некоторое время я размышлял над этим машинально перебирая страницы вывода на поисковые запросы в Google. И в результате наткнулся на статью Хавьера Акосты (Javier Acosta) Customizing Input Methods in Solaris and OpenSolaris, который ещё до меня решал подобную проблему: преобразование одного варианта раскладки словацкой клавиатуры в другой. Правда, его задача была существенно проще — всего и требовалось, что поменять местами клавиши Y и Z. Но зато он привёл следующую картинку (рис. 15):


Рис. 15. Соответствие кейкодов клавишам на клавиатуре

Заодно он предложил и способ конвертации файла layoutdata.xml в вид, пригодный для "человеческого" редактирования, с последующим возвращением его взад.

И вот теперь действительно — всё остальное дело техники и толики терпения. Можно отредактировать умолчальную (то есть базовую) раскладку, как душе угодно — изготовив из неё один из стандартных вариантов (winkeys, typewriter, phonetic). А можно, пользуясь полной свободой и легкостью процедуры, сделать раскладку своей мечты. Чем я, собственно и занялся — раньше как-то всё руки не доходили: взяв за основу базовую раскладку, перенес все знаки препинания на нижний регистр.

Я, конечно, понимаю, что голубая мечта о розовой раскладке — у каждого своя. Почему и не предлагаю результаты своих упражнений ко всеобщему использованию. Тем более, что всё равно это своего рода... ну если не костыль, а нечто вроде подпорки. И общим решением проблемы служить не может. Хотя мои личные проблемы этот способ решил полностью.

А общее решение проблемы вариантов кириллических раскладок видится мне примерно в таком ракурсе: в файле /etc/iiim/client.xml следует определит дополнительные "языки" для Великого и Могучего, и на каждый такой язык сочинить подходящую раскладку по описанному выше способу: Russian/Win, Russian/TW, Russian/Ph (названия, разумеется, чисто условные). Не очень понятно, почему этого не сделала команда русификации Solaris/OpenSolaris — видимо, русский язык они рассматривают менее значимым, нежели, скажем, турецкий. Думаю заняться этим в дни катастрофически приближающегося всенародного рождественского запоя.

А подводя итог, резюмирю базар: несмотря на непривычность и некоторую нелогичность, метод способов ввода (IIIM) с практической стороны вполне удобен. В частности, "заказные" раскладки в нём делать гораздо проще, нежели редактировать языковые файлы из каталога symbols при использовании xkd. Хотя, конечно, при этом и приходится поступаться всё тем же основополагающим принципом:

Икс - он и в Африке Ху

Надеюсь, присноблаженная Нина Андреева простит меня за столь прихлёбный плюрализм...




Страницы: предыдущая :: 1 :: 2 :: 3

Комментарии

Страницы комментариев: 1 :: 2 :: следующая

ANK, Fri Oct 16 21:05:18 2009:
Собрал пакеты xneur0.9.7 gxneur aspell-ru репозиторий тут http://karakuts.aaanet.ru:10000
shevan, Sat Aug 22 10:51:12 2009:
Спасибо большое.
Все понятно изложено, но мне было лень ковыряться, поэтому я нашел следующее.
http://svn.openi18n.org:8081/repos/im-sdk/trunk/lib/kbltrans/data/README - утилита для создания layoutdata.xml
А здесь я скачал уже готовый, для ленивых ;-)
http://osum.sun.com/forum/topic/show?id=2181626%3ATopic%3A490343
Большое спасибо выложившему его Eugene Turkulevich
norge_goth, Mon Apr 20 16:10:25 2009:
Привет, Алексей, прочитал разобрался и настроил себе клавиатуру как надо, за что вам спасибо, только вот тревожит один вопрос -
на правую клавишу Win - не удаеться поставить запятую, или это невозможно?
вот код:

<key sym="RWIN">
<c1>2c</c1>
<c2>2a</c2>
<c3>2c</c3>
<c4>2a</c4>
<code>2c</code>
</key>

Спасибо
аноним, Sat Apr 18 19:04:30 2009:
По поводу графического настройщика: и правда можно выбрать все, но раскладка не winkeys выбирается и это печально.
аноним, Sat Apr 18 19:00:22 2009:
А напрасно отложили на крайний случай. Рецепт следующий: выключаем эту хрень, сняв галочку "Включить способ ввода", а потом даем командочку

setxkbmap -rules /usr/X11/lib/X11/xkb/rules/xorg -layout "us,ru(winkeys)" grp:ctrl_shift_toggle

и все готово. Только буквы Йо нет.
аноним, Fri Mar 6 12:29:24 2009:
Комментарий от санщика.

Через графический интерфейс всё делается элементарно.

1. Удаляем ВСЕ языки/алфавиты ввода.

2. Выбираем два (или больше, сколько нам надо) языка/алфавита на левой панели и добавляем их на правую. ОКОЛО ДОБАВЛЕННЫХ ЯЗЫКОВ СЛЕВА ПОЯВЯТСЯ ЗНАЧКИ КЛАВИАТУРЫ (!!!), означающие, что языки ввода подхвасены механизмом ввода с клавиатуры.

3. Выбираем клавишу или сочетание клавиш для переключения.

Всё готово. До удаления всех языков и установки по новой только нужных мне пришлось доходить опытным путём. То, что переключалка не работает искаропки для тех языков, которые установлены по умолчанию, -- баг, заключающийся скорее всего в том, что механизм переключения изначально не активирован, а активируется он при установке поддерживаемого им языка, в число которых установленные по умолчанию на самом деле НЕ ВХОДЯТ (что можног заметить, ели посмотреть ОЧЕНЬ ВНИМАТЕЛЬО).
аноним, Fri Mar 6 12:21:09 2009:
> Не очень понятно, почему этого не сделала команда русификации Solaris/OpenSolaris — видимо, русский язык они рассматривают менее значимым, нежели, скажем, турецкий.

Команда русификации Соляриса этого не сделала попросту потому, что ЕЁ НЕ СУЩЕСТВУЕТ. Знаю это не понаслышке, а по той простой причине, что знаю человека, который руководит всей локализацией на русский язык в Сане и который не подтвердил, что через его руки проходил этот перевод.

Так вот, во-первых, не надо плохо о ПРОМТе. ПРОМТ переведёт Scripts как "Сценарии", а надо -- "Алфавиты" (!). Переводил это, скорее всего, ЖИВОЙ ПЕРЕВОДЧИК, возможно. нанятый на стороне любимой некоторыми меееенеджерами из Сана за дешевизну "услуг" компанией Й-АНУС (J-Anus), но совершенно вне контекста, очего и напахал по-страшному. Хотя, впрочем, транслитерация "Енжайн" (переводчик-сотона жжот аццки!!!) за пределами возможностей и ПРОМТа, и Й-Ануса.
Долганов, Thu Mar 5 21:09:59 2009:
Всё очень очень хорошо и толково.
engintoo, Wed Jan 28 18:44:03 2009:
менять необходимо тэги <c3> и <c4> это и есть нижний и верхний регистр в русской раскладке ... удобно таблицу символов смотреть тут http://unicode.su/?script=Cyrillic&add_c=0401&page= ... Автору респектище за обзор!
аноним2, Tue Jan 6 11:16:18 2009:
А вам удалось применить изменения в layoutdata.xml?

Т.е. файл layoutdata.xml изменен, но никаких изменений в работе не происходит

Страницы комментариев: 1 :: 2 :: следующая

Комментарии заморожены.

Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds