Chapter 11 X Window System и виртуальные консоли

11.1. Я хочу запустить X, как это сделать?
11.2. Я попытался запустить X, но получил сообщение ``KDENABIO failed (Operation not permitted)'' после ввода команды startx. Что мне теперь делать?
11.3. Почему моя мышь не работает с X?
11.4. У моей мыши есть колёсико. Могу ли я его использовать при работе в X?
11.5. Как использовать удалённые X-дисплеи?
11.6. Меню и диалоговые окна в X Window работают неправильно!
11.7. Что такое виртуальные консоли и как изменить их количество?
11.8. Как осуществляется доступ к виртуальным консолям из X?
11.9. Как запустить XDM во время загрузки?
11.10. При запуске xconsole выдаётся сообщение ``Couldn't open console''.
11.11. Раньше я запускал XFree86, работая как обычный пользователь, а теперь при запуске выдается сообщение о том, что я должен быть пользователем root!
11.12. Моя мышь PS/2 в X работает неправильно.
11.13. Почему моя мышь PS/2 от MouseSystems не работает?
11.14. При компиляции приложений для X программа imake не может найти файл Imake.tmpl. Где он находится?
11.15. Приложение для X, которое я компилирую, зависит от XFree86 3.3.X, однако у меня установлена XFree86 4.X. Что я должен сделать?
11.16. Как поменять местами кнопки мыши?
11.17. Как установить экранную заставку и где такие заставки можно найти?
11.18. Можно ли в X использовать клавиши Windows®, которые есть на клавиатуре?
11.19. Как заставить работать аппаратное ускорение 3D-графики для OpenGL?

11.1. Я хочу запустить X, как это сделать?

Самый простой способ - это указать во время инсталляции, что вы хотите использовать X.

Затем следуйте указаниям в документации по утилите xf86config, которая предназначена для конфигурирования работы XFree86 с вашим графическим адаптером/мышью/итд.

Вы можете также попробовать сервер Xaccel. За подробной информацией обратитесь к разделу, посвящённому продуктам фирм Xi Graphics и Metro Link.

11.2. Я попытался запустить X, но получил сообщение ``KDENABIO failed (Operation not permitted)'' после ввода команды startx. Что мне теперь делать?

Вероятнее всего, в вашей системе установлен повышенный уровень безопасности. При повышенном уровне защиты систему X запустить невозможно. Чтобы выяснить, почему это так, обратитесь к страницам справки по init(8).

Так что вопрос сводится к тому, как вам это обойти, и у вас здесь есть в основном два варианта: понизить ваш уровень защиты обратно к нулю (обычно это делается в /etc/rc.conf) или во время загрузки запускать xdm(1) (до того, как повышается уровень защиты).

Обратитесь к Q: 11.9. для получения более полной информации о запуске xdm(1) во время загрузки.

11.3. Почему моя мышь не работает с X?

Если вы используете syscons (стандартный драйвер консоли), то можете настроить поддержку указателя мыши во всех виртуальных экранах. Во избежание конфликтов с X, драйвер syscons поддерживает виртуальное устройство /dev/sysmouse. Все события, получаемые от реальной мыши, пишутся в устройство sysmouse через moused. Если вы хотите использовать вашу мышь на одной или нескольких виртуальных консолях, продолжая использовать X, посмотрите Q: 4.13. и настройте moused.

Затем отредактируйте /etc/XF86Config так, чтобы в нём были следующие строки.

Section        Pointer
Protocol       "SysMouse"
Device         "/dev/sysmouse"
.....
 

Пример выше предназначен для XFree86 3.3.2 и выше. Для более ранних версий параметр Protocol должен быть MouseSystems.

Некоторые предпочитают использовать в X устройство /dev/mouse. Чтобы оно работало, файл устройства /dev/mouse должен являться ссылкой на /dev/sysmouse (посмотрите справку по sysmouse(4)):

# cd /dev
# rm -f mouse
# ln -s sysmouse mouse
 

11.4. У моей мыши есть колёсико. Могу ли я его использовать при работе в X?

Да. Но вам нужно будет настроить программы-клиенты для X. Посмотрите страничку Коласа Наабу (Colas Nahaboo) (http://www.inria.fr/koala/colas/mouse-wheel-scroll/).

Если вы собираетесь использовать программу imwheel, следуйте этим простым указаниям:

  1. Трансляция событий от колёсика

    Работа программы imwheel основана на трансляции событий от кнопок мыши 4 и 5 в события от клавиатуры. То есть вам нужно заставить драйвер мыши транслировать события от колёсика в события от кнопок 4 и 5. Есть два способа сделать это, в первом из которых трансляцию выполняет moused(8). Во втором методе трансляцию событий выполняет сам X-сервер.

    1. Использование moused(8) для трансляции событий от колёсика

      Для того, чтобы moused(8) выполнял преобразование событий, просто добавьте опцию -z 4 к команде, запускающей moused(8). Например, если обычно вы запускаете moused(8) командой moused -p /dev/psm0, то теперь вы должны будете использовать moused -p /dev/psm0 -z 4. Если moused(8) запускается у вас автоматически во время загрузки через /etc/rc.conf, то вы можете просто добавить опцию -z 4 к переменной moused_flags в файле /etc/rc.conf.

      Теперь вам нужно указать X, что вы используете 5-кнопочную мышь. Для этого просто добавьте строчку Buttons 5 в секцию ``Pointer'' файла /etc/XF86Config. Например, в вашем файле /etc/XF86Config секция ``Pointer'' может принять такой вид:

      Example 11-1. Секция ``Pointer'' для мыши с колёсиком из файла XF86Config для XFree86 3.X с трансляцией через moused

      Section "Pointer"
                    Protocol        "SysMouse"
                    Device          "/dev/sysmouse"
                    Buttons         5
                    EndSection
      

      Example 11-2. Секция ``InputDevice'' для мыши с колёсиком из файла XF86Config для XFree86 4.x с преобразованием через X-сервер

      Section "InputDevice"
         Identifier      "Mouse1"
         Driver          "mouse"
         Option          "Protocol" "auto"
         Option          "Device" "/dev/sysmouse"
         Option          "Buttons" "5"
      EndSection
      

      Example 11-3. Пример ``.emacs'' для простой прокрутки страницы мышью с колёсиком

      ;; wheel mouse
      (global-set-key [mouse-4] 'scroll-down)
      (global-set-key [mouse-5] 'scroll-up)
      
    2. Использование X-сервера для трансляции событий от колёсика

      Если moused(8) у вас не запущен или если вы не хотите, чтобы moused(8) занимался трансляцией событий от колёсика, то это может сделать X-сервер. Это требует некоторых модификаций в вашем файле /etc/XF86Config. Во-первых, вам нужно правильно выбрать протокол для вашей мыши. Большинство манипуляторов с колёсиками используют протокол ``IntelliMouse''. Однако XFree86 поддерживает другие протоколы, такие, как ``MouseManPlusPS/2'' для мышей Logitech MouseMan+. После того, как вы выберите используемый протокол, в секцию ``Pointer'' нужно будет добавить строчку Protocol.

      Во-вторых, вам нужно указать, что X-сервер будет переопределять события от колёсика в события от кнопок 4 и 5. Это делается заданием опции ZAxisMapping.

      Например, если вы не используете moused(8) и ваша мышь IntelliMouse подключена к порту для мыши PS/2, в вашем файле /etc/XF86Config должно быть указано следующее:

      Example 11-4. Секция ``Pointer'' для мыши с колёсиком из файла XF86Config с трансляцией с помощью X-сервера

      Section "Pointer"
                    Protocol        "IntelliMouse"
                    Device          "/dev/psm0"
                    ZAxisMapping    4 5
                    EndSection
      

      Example 11-5. Раздел ``InputDevice'' для мыши с колесиком в XF86Config из XFree86 4.x с трансляцией через X-сервер

      Section "InputDevice"
         Identifier      "Mouse1"
         Driver          "mouse"
         Option          "Protocol" "auto"
         Option          "Device" "/dev/psm0"
         Option          "ZAxisMapping" "4 5"
      EndSection
      

      Example 11-6. Пример ``.emacs'' для простой прокрутки страницы при помощи мыши с колесиком

      ;; wheel mouse
      (global-set-key [mouse-4] 'scroll-down)
      (global-set-key [mouse-5] 'scroll-up)
      
  2. Установка программы imwheel

    Теперь установите программу Imwheel из Коллекции Портов. Она находится в категории x11. Эта утилита будет преобразовывать события от колёсика вашей мыши в события от клавиатуры. Например, она может послать в программу последовательность Page Up, когда вы крутите колёсико вперёд. Для преобразования событий от колёсика в нажатия клавиш imwheel использует конфигурационный файл, причём для разных приложений возможна посылка разных последовательностей. Конфигурационным файлом, используемым по умолчанию, является /usr/X11R6/etc/imwheelrc. Вы можете скопировать его в ~/.imwheelrc и отредактировать, если хотите изменить параметры работы imwheel. Формат конфигурационного файла описан на странице Справочника о imwheel(1).

  3. Настройка редактора Emacs для работы с Imwheel (по желанию)

    Если вы используете emacs или XEmacs, то в ваш файл ~/.emacs нужно добавить маленький раздел. Для редактора emacs, добавьте следующее:

    Example 11-7. Конфигурация Emacs для работы с Imwheel

    ;;; For imwheel
              (setq imwheel-scroll-interval 3)
              (defun imwheel-scroll-down-some-lines ()
                (interactive)
                (scroll-down imwheel-scroll-interval))
              (defun imwheel-scroll-up-some-lines ()
                (interactive)
                (scroll-up imwheel-scroll-interval))
              (global-set-key [?\M-\C-\)] 'imwheel-scroll-up-some-lines)
              (global-set-key [?\M-\C-\(] 'imwheel-scroll-down-some-lines)
              ;;; end imwheel section
    

    Для редактора XEmacs, в ваш файл ~/.emacs добавьте следующее:

    Example 11-8. Конфигурация XEmacs для работы с Imwheel

    ;;; Для imwheel
    (mwheel-install)
    (setq mwheel-follow-mouse t)
    ;;; end imwheel section
    
  4. Запуск Imwheel

    Вы можете просто набрать команду imwheel в вашем в окне xterm после установки. Она сама перейдёт в фоновый режим и немедленно начнёт работу. Если вы хотите использовать imwheel всегда, просто добавьте её запуск в ваш .xinitrc или .xsession. Все предупреждения о PID-файлах, которые выводит imwheel, можно проигнорировать. Эти предупреждения имеют смысл только в Linux-версии imwheel.

11.5. Как использовать удалённые X-дисплеи?

Из соображений обеспечения информационной безопасности открывать удалённые окна на машине по умолчанию запрещено.

Для включения этой возможности просто запустите X с аргументом -listen_tcp:

% startx -listen_tcp

11.6. Меню и диалоговые окна в X Window работают неправильно!

Попробуйте выключить Num Lock.

Если клавиша Num Lock во время загрузки по умолчанию включена, добавьте в секцию Keyboard файла XF86Config следующую строку.

# Let the server do the NumLock processing.  This should only be
# required when using pre-R6 clients
    ServerNumLock

11.7. Что такое виртуальные консоли и как изменить их количество?

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

При запуске системы после вывода сообщений этапа загрузки на консоль выдаётся приглашение на вход в систему. Вы можете ввести своё имя и пароль и начать работать (или играть!) на первой виртуальной консоли.

В какой-то момент вы можете захотеть запустить ещё одну сеанс, скажем, чтобы заглянуть в документацию по программе, которую вы запустили или для для чтения электронной почты во время ожидания завершения передачи данных по FTP. Просто нажмите Alt+F2 (удерживая клавишу Alt, нажмите F2) и вы обнаружите приглашение, ждущее вас на второй ``виртуальной консоли''! Когда захотите вернуться к первоначальному сеансу, нажмите Alt+F1.

После инсталляции по умолчанию во FreeBSD задействованы три виртуальных консоли (8 начиная с 3.3-RELEASE), а комбинации клавиш Alt+F1, Alt+F2 и Alt+F3 служат для переключения между ними.

Чтобы увеличить количество консолей, отредактируйте файл /etc/ttys (посмотрите справку по ttys(5)), добавив туда записи для терминалов с именами от ttyv4 до ttyvc после слов ``Virtual terminals'':

# Edit the existing entry for ttyv3 in /etc/ttys and change
# "off" to "on".
ttyv3   "/usr/libexec/getty Pc"         cons25  on secure
ttyv4   "/usr/libexec/getty Pc"         cons25  on secure
ttyv5   "/usr/libexec/getty Pc"         cons25  on secure
ttyv6   "/usr/libexec/getty Pc"         cons25  on secure
ttyv7   "/usr/libexec/getty Pc"         cons25  on secure
ttyv8   "/usr/libexec/getty Pc"         cons25  on secure
ttyv9   "/usr/libexec/getty Pc"         cons25  on secure
ttyva   "/usr/libexec/getty Pc"         cons25  on secure
ttyvb   "/usr/libexec/getty Pc"         cons25  on secure

Используйте из них столько, сколько посчитаете нужным. Чем больше виртуальных терминалов у вас имеется, тем больше ресурсов они используют; это может иметь значение, если у вас меньше чем 8МБ ОЗУ. Вы можете сменить статус консолей с secure на insecure.

Important: Если вы хотите запустить X, вы должны оставить для него по крайней мере один неиспользуемый (или выключенный) виртуальный терминал. Таким образов, если вы хотите иметь приглашения login на всех двенадцати функциональных клавиши, то вам не повезло - вы можете это сделать только для одиннадцати из них, если хотите на этой же машине ещё запустить X-сервер.

Самым простым способом убрать консоль является просто её выключение. Например, если вы запустили на всех 12 консолях виртуальные терминалы, как указано выше, и ещё хотите запустить X, то должны будете изменить параметры двенадцатого виртуального терминала с:

ttyvb   "/usr/libexec/getty Pc"         cons25  on  secure

на:

ttyvb   "/usr/libexec/getty Pc"         cons25  off secure

Если на вашей клавиатуре только десять функциональных клавиш, то последние строки будут выглядеть так:

ttyv9   "/usr/libexec/getty Pc"         cons25  off secure
ttyva   "/usr/libexec/getty Pc"         cons25  off secure
ttyvb   "/usr/libexec/getty Pc"         cons25  off secure

(Вы также можете просто их удалить.)

После того, как вы отредактировали файл /etc/ttys, проверьте, что у вас имеется достаточное количество устройств для виртуальных терминалов. Самый простой способ сделать это:

# cd /dev
# sh MAKEDEV vty12

Note: Во FreeBSD 5.x, если вы используете DEVFS, вам не нужно создавать устройства вручную, потому что необходимые файлы устройств будут создаваться в каталоге /dev автоматически.

Самым простым (и надёжным) способом активировать виртуальные консоли является перезагрузка. Однако если вы вовсе не хотите этого делать, просто остановите X Window System и выполните (как пользователь root):

# kill -HUP 1

При этом требуется, чтобы вы полностью закрыли X Window, если она была запущена, до запуска этой команды. Если вы это не сделаете, ваша система может повиснуть/заблокироваться после выполнения команды kill.

11.8. Как осуществляется доступ к виртуальным консолям из X?

Используйте комбинацию клавиш Ctrl+Alt+Fn для переключения обратно в виртуальную консоль. Нажатие Ctrl+Alt+F1 вернёт вас на первую виртуальную консоль.

После того, как вы оказались в текстовой консоли, можете использовать, как обычно, комбинации Alt+Fn для переключения между ними.

Чтобы вернуться в сеанс работы X, вы должны переключиться в виртуальную консоль, на которой запущена X Window. Если вы запустили X из командной строки (например, при помощи команды startx), то сеанс работы X будет привязан к следующей неиспользуемой виртуальной консоли, а не к той текстовой консоли, с которой он был запущен. Если у вас имеется восемь активных виртуальных терминалов, то X будет работать на девятом, и вам нужно будет воспользоваться комбинацией Alt+F9 для возврата в X.

11.9. Как запустить XDM во время загрузки?

Есть две философские школы, проповедующие различные методы запуска xdm. Последователи одного течения запускают xdm из /etc/ttys (посмотрите ttys(5)), используя приводимый пример, тогда как другие вставляют запуск xdm в скрипт rc.local (посмотрите справку по rc(8)) или X.sh, помещая последний в каталог /usr/local/etc/rc.d. Оба метода равноправны, и один из них может работать в ситуациях, с которыми не справляется другой и наоборот. В обоих случая результат один и тот же: X выводит графическое приглашение login:.

Плюсом метода с использованием ttys является документирование того, на каком vty будет запущен X и то, что ответственность за перезапуск X-сервера при завершении сеанса работы лежит на процессе init. Метод с использованием rc.local позволяет просто прекратить работу xdm, если при запуске X возникли какие-нибудь проблемы.

Из rc.local xdm должен быть запущен без аргументов, (то есть как даемон). xdm должен быть запущен ПОСЛЕ запуска getty(8), иначе они будут конфликтовать, блокируя консоль. Лучше всего выдержать паузу секунд на 10 и потом запустить xdm.

Если xdm запускается из /etc/ttys, то есть вероятность конфликта между xdm и getty(8). Одним из способов избежать этого является добавление номера vt в файл /usr/X11R6/lib/X11/xdm/Xservers.

:0 local /usr/X11R6/bin/X vt4
 

В вышеприведённом случае X-серверу указывается работать на /dev/ttyv3. Заметьте, что номера отличаются на единицу. Дело в том, что X-сервер считает vty от единицы, когда как отсчёт vty в ядре FreeBSD ведётся с нуля.

11.10. При запуске xconsole выдаётся сообщение ``Couldn't open console''.

Если вы запускаете X с использованием сценария startx права на устройство /dev/console не изменяются, поэтому такие программы, как xterm -C и xconsole, не будут работать.

Это зависит от прав доступа, установленных для консоли по умолчанию. В многопользовательской системе вовсе не нужно, чтобы любой пользователь мог выводить информацию на системную консоль. Для пользователей, вошедших в систему через VTY, для решения этой проблемы существует файл fbtab(5).

В общем, раскомментируйте строчку вида

/dev/ttyv0 0600 /dev/console
 

в файле /etc/fbtab (посмотрите справку по fbtab(5)), и этого будет достаточно для того, чтобы всякий, кто вошёл в систему с терминала /dev/ttyv0, имел доступ к консоли.

11.11. Раньше я запускал XFree86, работая как обычный пользователь, а теперь при запуске выдается сообщение о том, что я должен быть пользователем root!

Все X-серверы должны запускаться пользователем root, чтобы иметь прямой доступ к вашему видеооборудованию. Более старые версии XFree86 (<= 3.3.6) устанавливали все поставляемые серверы так, что они автоматически запускались пользователем root (с установленным битом смены владельца запускаемого процесса). Несомненно, это рискованно, потому что X-серверы являются большими, сложными программами. Более новые версии XFree86 не устанавливают на серверах бит смены владельца на пользователя root именно по этой причине.

Очевидно, что запускать X-сервер, работая как пользователь root, неправильно и небезопасно. Есть два способа использовать X, работая как обычный пользователь. Первый способ заключается в использовании xdm или другого менеджера дисплеев (к примеру, kdm); второй способ - в использовании программы Xwrapper.

xdm представляет собой даемон, который обрабатывает входы в систему в графическом режиме. Обычно он запускается во время загрузки и отвечает за аутентификацию пользователей и запуск их сеансов; практически это графический аналог программ getty(8) и login(1). Более подробная информация о xdm находится в документации по XFree86 и в соответствующем разделе FAQ.

Xwrapper является оболочкой для X-сервера; это маленькая утилита. позволяющая кому-либо запускать X-сервер и достаточно безопасная в использовании. Она выполняет некоторую проверку передаваемых ей в командной строке аргументов, и если всё в порядке, запускает соответствующий X-сервер. Если по каким-либо причинам вы не хотите запускать менеджер дисплеев, то эта утилита вам подойдет. Если у вас установлена полная коллекция портов, вы можете найти этот порт в каталоге /usr/ports/x11/wrapper.

11.12. Моя мышь PS/2 в X работает неправильно.

Вполне может быть, что ваша мышь и её драйвер рассинхронизировались.

В редких случаях драйвер может ошибочно обнаруживать проблемы с синхронизацией, и вы будете видеть такие сообщения ядра:

psmintr: out of sync (xxxx != yyyy)

и заметите, что мышь теперь работает неправильно.

Если это случится, отмените проверку согласования, установив значение флага для драйвера мыши PS/2 в 0x100. Войдите в конфигуратор UserConfig, задав опцию -c в приглашении загрузчика:

boot: -c

Затем в командной строке UserConfig наберите:

UserConfig> flags psm0 0x100
UserConfig> quit

11.13. Почему моя мышь PS/2 от MouseSystems не работает?

Было несколько сообщений, что некоторые модели мышей PS/2 от MouseSystems работают только в режиме ``высокого разрешения''. В других режимах курсор мыши постоянно прыгает в верхний левый угол экрана.

Укажите флаг 0x04 драйверу мыши PS/2 для перевода её в режим высокого разрешения. Войдите в UserConfig, задав опцию -c в приглашении загрузчика:

boot: -c

Затем в командной строке UserConfig наберите:

UserConfig> flags psm0 0x04
UserConfig> quit

В предыдущем разделе описана возможная причина проблем с мышью.

11.14. При компиляции приложений для X программа imake не может найти файл Imake.tmpl. Где он находится?

Файл Imake.tmpl является частью пакета Imake, стандартного инструмента для построения X-приложений. Он, также как ещё несколько заголовочных файлов, требуемых для построения X-приложений, содержится в дистрибутиве программ X. Вы можете их проинсталлировать из sysinstall(8) или взять из дистрибутива X.

11.15. Приложение для X, которое я компилирую, зависит от XFree86 3.3.X, однако у меня установлена XFree86 4.X. Что я должен сделать?

Чтобы указать на компоновку с библиотеками XFree86 4.X при построении порта, добавьте следующее в /etc/make.conf (если этого файла у вас нет, создайте его):

XFREE86_VERSION=        4

11.16. Как поменять местами кнопки мыши?

Поместите команду xmodmap -e "pointer = 3 2 1" в один из ваших скриптов .xinitrc или .xsession.

11.17. Как установить экранную заставку и где такие заставки можно найти?

Перед самым выпуском релиза FreeBSD 3.1 в систему была добавлена возможность вывода ``заставки'' во время загрузки. На данный момент экраны заставок должны быть 256-цветными файлами формата BMP *.BMP или ZSoft PCX (*.PCX). Кроме того, они должны иметь размер 320x200 или меньше для работы со стандартными адаптерами VGA. Если вы включили поддержку VESA при компиляции ядра, сможете использовать заставки размером до 1024x768. Реальная поддержка VESA может быть вкомпилирована в ядро при указании опции VESA либо загружена в виде kld-модуля ядра во время начальной загрузки.

Чтобы использовать заставку, вам нужно изменить файлы, управляющие процессом загрузки FreeBSD. Формат этих файлов был изменён перед выпуском релиза FreeBSD 3.2, так что есть два способа загрузки экранных заставок:

  • FreeBSD 3.1

    Первым делом нужно найти экранную заставку в формате BMP. Релиз 3.1 поддерживает заставки только в формате Windows. После того, как вы нашли понравившуюся вам заставку, скопируйте её в файл /boot/splash.bmp. Затем вам нужно поместить в файл /boot/loader.rc следующие строки:

    load kernel
    load -t splash_image_data /boot/splash.bmp
    load splash_bmp
    autoboot
    
  • FreeBSD 3.2+

    Кроме поддержки заставок в формате PCX, FreeBSD 3.2 включает более гибкую систему конфигурации процесса загрузки. Если вы хотите, то можете использовать метод, указанный выше для FreeBSD 3.1. Если же вы хотите использовать формат PCX, замените splash_bmp на splash_pcx. С другой стороны, если вы хотите использовать новую систему конфигурации процесса загрузки, вам нужно создать файл /boot/loader.rc, содержащий следующие строки:

    include /boot/loader.4th
    start
    

    и файл /boot/loader.conf со строками:

    splash_bmp_load="YES"
    bitmap_load="YES"
    

    Здесь предполагается, что в качестве заставки вы используете файл /boot/splash.bmp. Если вы используете PCX-файл, скопируйте его под именем /boot/splash.pcx, создайте файл /boot/loader.rc, как указано выше, и создайте файл /boot/loader.conf, который содержит следующее:

    splash_pcx_load="YES"
    bitmap_load="YES"
    bitmap_name="/boot/splash.pcx"
    

Теперь всё, что вам нужно - это сама заставка. Поищите заставки в галерее по адресу http://www.baldwin.cx/splash/.

11.18. Можно ли в X использовать клавиши Windows®, которые есть на клавиатуре?

Да. Всё, что вам нужно сделать, это с помощью xmodmap(1) задать функции, которые вы хотите к этим клавишам привязать.

Положим, что все клавиатуры ``Windows'' стандартны и 3 клавиши имеют следующие клавиатурные коды

  • 115 - клавиша Windows между клавишами Ctrl и Alt с левой стороны

  • 116 - клавиша Windows справа от клавиши AltGr

  • 117 - клавиша Menu, слева от клавиши Ctrl, находящейся справа

Чтобы заставить левую клавишу Windows набирать запятую, попробуйте выполнить такую команду:

# xmodmap -e "keycode 115 = comma"

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

Для того, чтобы переопределения клавиш Windows выполнялось автоматически каждый раз при запуске X, можно поместить вызов команд xmodmap в ваш ~/.xinitrc либо, что предпочтительней, создать файл ~/.xmodmaprc и включить в него параметры для xmodmap, по одному на строку, и добавить строку

xmodmap $HOME/.xmodmaprc

в ваш ~/.xinitrc.

Например, вы можете переопределить эти 3 клавиши так, чтобы они выполняли функции клавиш F13, F14 и F15 соответственно. Это позволит легко привязать их к полезным функциям в приложениях или вашем менеджере окон, как будет показано далее.

Чтобы сделать это, поместите в файл ~/.xmodmaprc вот такие строки:

keycode 115 = F13
keycode 116 = F14
keycode 117 = F15

Если, к примеру, вы используете fvwm2, то можете переопределить клавиши таким образом, что F13 сворачивает в иконку (или восстанавливает предыдущие размеры) окна, на которое указывает курсор, F14 перемещает окно с курсором на передний план или, если оно уже впереди, возвращает обратно, а F15 вызывает главное меню приложения Workplace, даже если курсор находится не на рабочем столе, что бывает полезно, если нет ни одного видимого кусочка рабочего стола (к тому же логотип на клавише соответствует этой функции).

Вот строки из ~/.fvwmrc, с помощью которых достигаются описанные выше функции:

Key F13        FTIWS    A        Iconify
Key F14        FTIWS    A        RaiseLower
Key F15        A        A        Menu Workplace Nop

11.19. Как заставить работать аппаратное ускорение 3D-графики для OpenGL?

Наличие 3D-ускорения зависит от версии используемого вами XFree86 и типа графического адаптера. Если у вас адаптер NVIDIA, то вы можете использовать бинарные файлы драйверов для FreeBSD 4.7, размещённые в разделе Drivers их сайта. Относительно использования аппаратного ускорения в XFree86-4 с другими адаптерами, включая Matrox G200/G400, ATI Rage 128/Radeon, а также 3dfx Voodoo 3, 4, 5 и Banshee, дополнительную информацию можно почерпнуть на страничке XFree86-4 Direct Rendering on FreeBSD. Пользователи XFree86 версии 3.3 могут воспользоваться портом Utah-GLX, находящимся в graphics/utah-glx, для получения частичного ускорения OpenGL для наборов микросхем Matrox Gx00, ATI Rage Pro, SiS 6326, i810, Savage и старых адаптеров NVIDIA.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.