Мини-HOWTO: Большой курсор в X11

Как увеличить курсор мыши в X windows

Jorg Schneider

joerg.schneider@ira.uka.de

Перевод: Павел Гашев, SWSoft Pte Ltd.

версия 2, 11 августа 1997

В этом документе описывается процесс, позволяющий увеличить курсор мыши в X-windows.


Содержание
1. Введение
2. Об этом документе
3. Как это сделать
4. Замечания и ограничения
5. Технические рассуждения
6. Другие идеи, позволяющие сделать курсор более заметным
7. Дополнительная информация
7.1. Сервер шрифтов
7.1.1. Установка сервера шрифтов
7.2. Как достать bdf-файлы для некоторых шрифтов
8. Авторские права

1. Введение

Существует несколько причин, по которым стандартный курсор X11 может быть маловат:

В любом случае, увеличение курсора может решить проблему. Идеально, если эту задачу выполняет одна X-программа, автоматически увеличивающая каждый раз все виды курсоров.

Насколько я знаю, не существует простого пути для создания такой утилиты, так как X-протокол не имеет представления о том, как узнать вид курсора. Для более подробной информации см. раздел "Технические рассуждения".

Впрочем, кое-что можно сделать:

Существует набор стандартных курсоров мыши, которые находятся в шрифте "cursor" (вы можете посмотреть их командой "xfd -fn cursor"). Большинство программ используют именно эти курсоры, и ключевой идеей является замена стандартного шрифта "cursor" на увеличенную версию.


2. Об этом документе

Причиной написания этого мини-HOWTO послужила просьба моего однокурсника с плохим зрением, который спросил меня о том, как увеличить курсор мыши под X. После того, как я нашел способ это сделать, я написал первую версию данного документа. Информация об этом методе не является общей, но тем не менее я решился поместить его в Linux мини-HOWTO, даже несмотря на тот факт, что он совсем не специфичен для Linux. Как и другие мини-HOWTO, он находится в http://sunsite.unc.edu/LDP/HOWTO/.

Основная версия этого документа поддерживается в формате SGML/linuxdoc. Это позволяет автоматически получать версии в других форматах (которые можно найти там же): html, text, LaTeX, DVI, PostScript, GNU info.

Shinobu Miyata перевел этот текст на Японский http://i11www.ira.uka.de/~schneid/jp/X11-big-cursor/.


3. Как это сделать

Следуйте шагам, описанным ниже. Если вы не хотите загружать и компилировать пакет bdfresize, вы можете пропустить первые три шага и найти увеличенный шрифт, вместо того, чтобы создавать его.

  1. берем файл cursor.bdf (исходный текст шрифта "cursor") из какого-нибудь дистрибутива X, например ftp://ftp.x.org/pub/R6.3/xc/fonts/bdf/misc/cursor.bdf (если вы его там не найдете, попробуйте поискать его в сети или возьмите мою копию).

  2. берем, компилируем и инсталлируем пакет bdfresize ftp://ftp.cs.titech.ac.jp/X11/contrib/Local/bdfresize-1.4.tar.Z (или моя копия): zcat bdfresize-1.4.tar.Z | tar xf - cd bdfresize-1.4 xmkmf make На Linux вы, наверно, должны сделать: make CCOPTIONS='-include /usr/include/bsd/bsd.h' clean all

  3. создаем каталог и записываем в него увеличенный шрифт (например в два раза): mkdir $HOME/fonts bdfresize -f 2 cursor.bdf | bdftopcf >$HOME/fonts/cursor2.pcf mkfontdir $HOME/fonts Я подготовил несколько шрифтов с увеличением в 1.5, 2, 2.5, 3, 4, 5, 6, 7, 8 и 16 раз. Если вы не хотите пользоваться bdfresize, можете найти их и поместить в каталог $HOME/fonts.

  4. изменяем файлы .xinitrc или .xsession: перед тем как запустится X-клиент (который использует курсор), должны запускаться следующие команды: xset +fp $HOME/fonts xsetroot -cursor_name X_cursor

  5. перезапустите X-сервер.

Это все. Теперь все курсоры мыши должны быть в два раза больше.


4. Замечания и ограничения


5. Технические рассуждения

Возможно ли написать программу, автоматически увеличивающую указатели?

Решение 1 (частичное)

Использовать XTestCompareCursor из XTEST. Для всех окон, над которыми движется указатель мыши курсор окна сравнивается с набором "известных" курсоров (например, из шрифта cursor). Если найден похожий курсор, то он заменяется на увеличенную версию. В противном случае, он остается без изменения или подставляется стандартный курсор. Это работает в том случае, если у вас есть XTest.

Решение 2

Написать X-прокси-сервер, передающий все запросы на X-сервер, за исключением запросов соответствующих функции XCreate*Cursor из библиотеки Xlib. Курсоры, определенные в запросах XCreate*Cursor должны изменяться на соответствующие увеличенные.

Прокси-сервер имитирует новый дисплей, например :1. Все клиенты, использующие этот дисплей (например xterm -display :1) показываются на обычном X-сервере :0), но их курсоры автоматически увеличиваются. Курсоры клиентов, использующих :0 не изменяются.


6. Другие идеи, позволяющие сделать курсор более заметным

Вот некоторые идеи, позволяющие сделать курсор более заметным, при помощи простых программ.

Более ожидаемое решение - это мышиный хвост а-ля windows, т.е. при движении мыши, курсор рисуется на новом месте, а на старом месте стирается только через некоторую задержку. Мышиный хвост лучше всего реализовать в X-сервере, но проще все его сделать как X-клиент, а еще лучше как прокси-сервер (см. "Технические рассуждения").


7. Дополнительная информация

7.1. Сервер шрифтов

Сервер шрифтов - это сетевой сервис с простым протоколом, предоставляющий X11 набор шрифтов. Он предоставляет как список шрифтов, так и изображение.

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

Этот способ особенно удобен, если несколько машин не используют общую файловую системы или если вы пользуетесь X-терминалами.

Сам сервер шрифтов и утилиты, связанные с ним, идут с дистрибутивом X11R5+ (AFAIK).


7.1.1. Установка сервера шрифтов

Прочитайте руководства fs(1), fslsfonts(1) (или xfs(1), xfslsfonts(1) и попробуйте - это не сложно. Скажем, если вы запустили сервер шрифтов на машине some.host.edu на порту 7100. Вы можете проверить, как он работает командой

fslsfonts -server some.host.edu:7100

И настроить X-сервер командой

xset +fp tcp/some.host.edu:7100,

которая должна выполниться без ошибок.


7.2. Как достать bdf-файлы для некоторых шрифтов

Если у вас установлен сервер шрифтов, то используйте команду fstobdf, идущую вместе с сервером.

Кроме того, вы можете попробовать команду getbdf, которая записывает любой установленный в X11 шрифт в bdf файл.


8. Авторские права

Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.

Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.

Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: или к координатору русского перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу