Когда-то в X.org добавили поддержку HAL, чтобы сервер мог на ходу подключать и отключать устройства ввода. Через XML-файлики настройки HAL можно было прописать присваивание нужных значений условным параметрам девайса, после чего X-сервер мог этот девайс задействовать в работе:
<match key="info.capabilities" contains="input.keyboard">
<merge key="input.x11_driver" type="string">evdev</merge>
…
С версии 1.8 в файлах настройки X.org можно и нужно использовать udev вместо HAL и более читабельный синтаксис для гибкой настройки устройств ввода:
Section "InputClass"
Identifier "kb"
MatchIsKeyboard "yes"
Driver "evdev"
Option "XkbModel" "evdev"
Option "XkbLayout" "us,ru"
Option "XkbVariant" ",winkeys"
Option "XkbOptions" "grp_led:caps,compose:ralt"
EndSection
Вся магия — в опциях Match…: при их указании настройки данной секции
InputClass применяются ко всем устройствам, удовлетворяющим
соответствующему условию. MatchIsKeyboard "yes" означает «для любых
клавиатур». Далее я просто указываю нужные опции для клавиатуры.
Также теперь можно разносить конфиг иксов по нескольким файлам: при
загрузке сервера читается не только /etc/X11/xorg.conf, но и файлы с
расширением .conf из директории /etc/X11/xorg.conf.d/.
Начиная с версии
148
в udev содержится код (перенесённый из HAL, кстати), который
присваивает устройствам ввода на уровне udev специальные метки типа
ID_INPUT_KEY, ID_INPUT_MOUSE или ID_INPUT_TABLET. X.org может
читать эти метки, за счёт чего указание в конфигурации иксов секций
InputClass с определёнными опциями вроде MatchIsKey или
MatchIsPointer позволяет назначать железкам с этими метками нужные
настройки.
Таким образом, за последние годы X.org прошёл примерно следующий путь:
Написание секций InputDevice для каждого устройства ввода вручную.
При использовании старого драйвера клавиатуры kbd(4x) минусом было
то, что каждая секция привязывалась к одному физическому устройству с
помощью опции Device. Не было поддержки подключения на лету, а самое
главное — для клавиатур, которым соответствует несколько устройств
(например, MS NEK 4000), нельзя было
написать одну секцию. В результате приходилось дублировать информацию.
Чтобы избавиться от необходимости жёстко прописывать путь к
устройству ввода (/dev/input/что-у-вас-там/), в универсальном
драйвере evdev(4x) некоторое время была возможность искать
устройство по производителю или названию модели прямо с помощью опций
самого драйвера: Option "vendor" и Option "name". Смысла в в
реальном названии устройства куда больше, чем в пути к файлу из
/dev, но реализация этого механизма на уровне конкретного драйвера
была сомнительным решением. На данный момент этих фич там уже нет.
Появилась возможность работать с HAL. Настройка ввода, по сути,
выполнялась полностью средствами HAL через XML-файлы .fdi. Можно
было назначать специальные опции, которые потом читались иксами,
всем устройствам с нужными свойствами, вроде производителя
(<match key="info.vendor" contains="Microsoft">) или «возможностей»
(<match key="info.capabilities" contains="input.mouse">). HAL
пытался решать сходные с udev задачи и сдох под тяжестью собственного
веса.
Наконец, появились секции InputClass, стало можно описывать нужное
подмножество устройств прямо на уровне X.org.
(Залежавшая в драфтах запись наконец публикуется! Это «продолжение» заметки про MSNEK4K; ранее пробегала ещё одна «клавиатурная» заметка про ввод Unicode-символов)
Использование мультимедийной клавиатуры для облегчения жизни в Emacs,
wmii. Рассмотрены xmodmap(1), xbindkeys(1).
Долгие годы я пользовался эргономичной клавиатурой SVEN 3000. Несмотря на то, что от неё отлетели почти все кнопки, клавиатурка была хороша и достаточно удобна. Прошло пять лет, я польстился на творенье Мелкософта — новую Microsoft Natural 4000. Представлялось удобным иметь рычажок зума и скромное количество дополнительных клавиш для работы в Emacs.
Подробное ощупывание девайса, а также вдумчивое описание процедуры
подключения и настройки в GNU/Linux, включая раскрытие современных
возможностей взаимодействия X-сервера с HAL.
Big talk о некоторых аспектах автоматизированной генерации документов. В ролях: LaTeX, Metapost, GNU Emacs, Make, m4, bash :-) Здесь не написано о том, как пользоваться Латехом, Метапостом, Емаксом, как писать мейкфалы, сценарии командной оболочки и не рассказано о хитростях макропроцессора m4. Текст длинный и справочно-унылый, читать долго.
Конкретно, описано следующее:
как вставлять (удобно) куски исходников в LaTeX-документ
как (автоматически) внедрять (с удобством) результаты численных расчётов в документ
как организовать простую визуализацию данных с включением графиков в документ
Таки установил TeX Live 2007 на Gentoo. До этого не получалось.
Рецепт прост:
Ебилд из №168177 в Багзилле Gentoo со всеми наложенными на него патчами оттуда положить в локальный оверлей Portage (например, в /usr/local/portage). Разумеется, в соответствующую категорию, получится типа /usr/local/portage/app-text/texlive/texlive-2007.ebuild.
Патчи для сборки TeX Live из Багзиллы же закинуть в директорию files/2007 ебилда, переименовав их в соответствии с именнем ебилда (добавить texlive-2007 к имени файлов). Это: texlive-2007-gentoo-texmf.patch, texlive-2007-mpware-libtool.patch, texlive-2007-mv-texmf.patch, texlive-2007-use-system-libtool.patch, xpdf-3.02pl1.patch; texlive-2007-gentoo-texmf-site.patch взять из ебилда для TeX Live 2005.
В директорию files (без номера версии) ебилда положить скрипт texmf-update из оверлея Aballier (в том оверлее тоже лежат ебилды для модульной сборки TeX Live; не пробовал). texmf-update из ебилда для TeX Live 2005 не пойдёт. Без этого скрипта после инсталляции не получится, к примеру, использовать LaTeX и т. п.
# emerge =texlive-2007
TeX Live — огромный дистрибутив TeX, который включает WEB, TeX, METAFONT, MetaPost, BibTeX, LaTeX2ε (и кучу пакетов к нему). Меня радует, что там есть хороший комплект кошернейших шрифтов — cm-super (там, например, есть русский шрифт из «Конкретной математики» и математический шрифт «AMS Euler» оттуда же).
TeX Live доступен в том числе и на Live DVD.
Грепал Грека грепом репо,
Видит Грека — в репо баг,
Сунул Грека в репо руку —
Баг за руку Греку цап!
Mercurial — распределённая система контроля версий, написанная на Python. Работает очень шустро (быстрее, похоже, только git), имеет всё что нужно и проста в работе. В Emacs для работы с Mercurial можно использовать VC, там есть нужный backend.
Решил тут поставить Mercurial на сервер, прицепить веб-интерфейс к нему и сделать так, чтобы можно было отправлять коммиты прямо на сервак через SSH и HTTPS (удобно и надёжно).
Опишу весь процесс.
При установке использовалось следующее ПО (с другими версиями что-то может измениться):
FreeBSD 6.2-STABLE в качестве OS на сервере
Веб-сервер lighttpd 1.4.15 (на версиях ниже 1.4.12 скорее всего будут проблемы с SSL; 1.4.x вообще не сахар по сравнению с грядущей 1.5.x, далее по тексту будет хак, связанный с недостатками ветки 1.4.x)
Mercurial 0.9.4 (вышла на днях)