Linux: приборкання миші і монітора

  1. Конфігурація пристроїв введення
  2. Налаштування монітора

Кілька практичних прийомів настройки монітора і іншої периферії для роботи з графічним сервером XFree86 4-ої версії: монітора, миші, клавіатури. Пропоновані знання мають універсальний характер і з невеликими змінами можуть бути застосовані і для третього покоління цього сервера

При старті графічний сервер X зчитує параметри своєї конфігурації, що зберігаються в файлі XF86Config-4 (для версій 3.xx - XF86Config). Зазвичай цей файл розташовується в директорії / etc / X11 і має секційну структуру, сформовану тегами Section <ім'я секції> і EndSection - причому самі теги є регістронезавісімого і символ підкреслення (_) ігнорується. Існує 12 типів секцій, з яких працювати, як правило, доводиться з наступними:

Screen.

Об'єднує монітор і відеокарту в єдину графічну систему.

Конфігурація пристроїв введення

Почнемо з настройки клавіатури. Знайдемо розділ InputDevice або Keyboard і подивимося, що тут можна зробити (для наочності будемо розглядати як приклад реально існуючу конфігурацію).

Section "InputDevice" Identifier "Keyboard0" Driver "keyboard" Option "XkbLayout" "ru (winkeys)" Option "XkbOptions" "grp: ctrl_shift_toggle, grp_led: scroll" EndSection

Найцікавіші для нас опції, що передаються демона xkb, що відповідає за вибір розкладки клавіатури. Так, рядок

Option "XkbLayout" "ru (winkeys)"

вказує на необхідність завантаження англо-російської розкладки, описуваної в системному файлі ru, який знаходиться в папці / usr / X11R6 / lib / X11 / xkb / symbols (для RH-сумісних ОС). Причому в цьому файлі вибирається розділ (winkeys), що описує Windows-подібну конфігурацію розкладки. Слід зауважити, що сучасна програма xkb "розуміє" тільки опції, передані їй через правила (rules), так що необхідно використовувати тег Option. Для англо-українсько-російської або англо-української розкладки потрібно змінити цей тег відповідним чином:

Option "XkbLayout" "ru_UA (winkeys)" # англо \ українсько \ російська

або

Option "XkbLayout" "ua (winkeys)" # англо \ українська

Однією з перших лінукс-збірок з української розкладкою був BlackCat. Але, на жаль, в ньому файл ru_UA містив помилку, а саме: блок winkeys починався так:

include "uk (basic)"

в той час як повинен був так:

include "ru_UA (basic)"

Тому, щоб користуватися українськими літерами, доводилося вручну редагувати цей файл. Даний недолік успішно кочував в інші лінукс-пакети, поки, нарешті, ASP Linux 7.3 не розлучаючись всі крапки над "i". Крім того, в цій версії знак українського апострофа нарешті був прикріплений там, де йому і місце - зліва від "1". Дуже рекомендую використовувати xkb саме з цього продукту.

Отже, українська розкладка встановлена. Як будемо перемикатися? Для цього існує правило XkbOptions. У нашому випадку для зміни розкладки воно визначає комбінацію клавіш <Ctrl> + <Shift>. Якщо ж хочеться використовувати <Alt> + <Shift>, потрібно записати:

grp: alt_shift_toggle, grp_led: scroll

Крім того, grp_led: scroll означає, що про стан поточної розкладки буде інформувати індикатор клавіатури Scroll Lock. Додаткову інформацію про налаштування розкладки клавіатури під xkb можна отримати, наприклад, з статті Івана Паскаля.

Тепер перейдемо до налаштування миші. Іноді це доводиться робити після зміни конфігурації системи - наприклад, якщо "послідовну" миша замінили на PS / 2 або придбали маніпулятор з коліщатком. Розділ з відповідними параметрами виглядає так:

Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Device" "/ dev / mouse" Option "Protocol" "PS / 2" Option "Emulate3Buttons" "on" Option "ZAxisMapping" "4 5" EndSection

рядок

Option "Device" "/ dev / mouse"

прямо або побічно вказує на порт, до якого підключена миша. У нашому випадку цим портом є символічна посилання / dev / mouse. При необхідності можна створити її самому, вказавши правильний пристрій. Наприклад, команда

ln -s / dev / ttyS0 / dev / mouse

створює посилання на порт com 1, а команда

ln -s / dev / psaux / dev / mouse

- на порт PS / 2. тег

Option "Protocol" "PS / 2"

визначає протокол роботи з маніпулятором. Якщо використовується послідовна миша, то в якості протоколу використовується Microsoft, а якщо миша з коліщатком - то IntelliMouse для COM-порту і IMPS / 2 для порту PS / 2.

Emulate3Buttons визначає, чи буде одночасне натискання правої і лівої кнопки миші інтерпретуватися як клік середньої (третьої) кнопки, навіть якщо її фізично немає. ZaxisMapping "4 5" означає, що прокручування коліщатка вперед буде інтерпретуватися X-сервером як натискання кнопки <4>, а тому - як кнопки <5>. Решта покладається на додатки. Зазвичай програми використовують ці кнопки для прокрутки вмісту вікон.

Налаштування монітора

Перш ніж описувати параметри конфігураційного файлу, необхідно ознайомитися з технічними особливостями роботи дисплея ПК. Допитливим рекомендую прочитати по цій темі хорошу статтю Ігоря Ніколаєва і відповідне How-To .

Картинка формується на екрані таким чином. Відеокарта ініціює рух променя ЕПТ-монітора, змушуючи його підсвічувати пікселі. Луч рухається зліва направо зі швидкістю, яка визначається частотою генерації точок відеокарти (dot clock). Ця величина (DC) має верхню межу, але навіть у старих відеокарт цю межу ревишает 100 МГц, так що він рідко є стримуючим фактором для реалізації необхідної частоти розгортки.

Таким чином, промінь проходить HV видимих ​​точок. Далі слід сигнал, що гасить, але не зупиняє промінь. Це необхідно, щоб уникнути спотворень по краях зображення. Такий стан "захоплює" ще HR точок. Коли промінь досягає правого краю рядка, відеокарта генерує так званий горизонтальний синхроимпульс. Луч повертається в своє "ліве" положення і зсувається на один рядок вниз. Тривалість такого імпульсу повинна бути достатньою, щоб стабілізувати ЕПТ для генерації наступної горизонтальної рядка. Будемо вважати, що часу синхроимпульса досить, щоб промінь встиг "пробігти" HS точок. Перебуваючи в лівому крайньому положенні і в вимкненому стані, промінь проходить HL точок, блокуючи крайові ефекти. Повний цикл руху променя по горизонталі завершено.

Повний цикл руху променя по горизонталі завершено

Аналогічним чином організовано рух променя по вертикалі. Його основними параметрами будуть:

VV - кількість видимих ​​рядків;

VD - кількість рядків від нижнього краю до початку вертикального синхроимпульса;

VS - тривалість вертикального синхроимпульса;

VU - верхній відступ до першого рядка.


VU - верхній відступ до першого рядка

Для користувача ці технічні подробиці виливаються в таку важливу величину, як частота зміни кадрів F. При частоті в 60 Гц працювати можна, але більшість буде помічати мерехтіння люмінофора, що дуже шкідливо для здоров'я. Потрібно прагнути встановити частоту роботи монітора вище 75 Гц - і чим більше, тим краще.

Так ось, повне число точок, які формують кадр, буде HxV, де

H = HV + HR + HS + HR,

V = VV + VD + VS + VU

Щоб ця матриця точок прорисовувалася з частотою F, потрібно встановити частоту відеокарти рівній

DC = HxVxF

Як вже говорилося, з відеокартою проблем зазвичай не виникає. Частота зміни кадрів може обмежуватися недостатньою максимальною частотою рядкової розгортки монітора (FH).

Дійсно, якщо така частота дорівнює FH, то умовна матриця з одного рядка буде розгортатися з частотою FH, а матриця з V рядків - з пропорційно меншою частотою HF / V. Наприклад, якщо частота рядкової розгортки монітора складає 55 KГц, то при дозволі 1024 x 768 частота зміни кадрів обмежена величиною 55000/768 = 72 Гц. Насправді вона менше, адже V <VV. Ось приклади з реального життя: у таблиці вказані максимальні частоти розгортки моніторів і частоти зміни кадрів для різних режимів. Як видно з неї, монітор з частотою горизонтальної розгортки менше 55 KГц краще не купувати.

Тепер подивимося, яке відношення все це має до XFree86. Для цього заглянемо в журнал запуску X-сервера - файл /var/log/XFree86.0.log:

.............. (II) NV (0): Monitor: Using hsync range of 37.00-93.00 kГц (II) NV (0): Monitor: Using vrefresh range of 70.00-100.00 Гц (II) NV (0): Clock range: 12.00 to 256.00 MГц ................................... ..................................... ............. .................................................. ........ (II) NV (0): Not using default mode "800x512" (vrefresh out of range) (II) NV (0): Not using default mode "1920x1200" (insufficient memory for mode) (**) NV (0): Virtual size is 1024x768 (pitch 1024) (**) NV (0): Default mode "1024x768": 94.5 MГц, 68.7 kГц, 85.0 Гц (II) NV (0): Modeline " 1024x768 "94.50 1024 1072 1168 1376 768 769 772 808 + hsync + vsync (**) NV (0): Default mode" 800x600 ": 56.3 MГц, 53.7 kГц, 85.1 Гц (II) NV (0): Modeline" 800x600 " 56.30 800 832 896 1048 600 601 604 631 + hsync + vsync (**) NV (0): Default mode "640x480": 74.2 MГц, 85.9 kГц, 85.1 Гц (D) NV (0): Modeline "640x480" 74.25 640 672 752 864 480 480 482 505 doublescan + Hsync + vsync

Під час завантаження ОС визначає базові параметри роботи графічної підсистеми: частота рядкової розгортки (hsync) - 37,00-93,00 KГц, вертикальної розгортки (vrefresh) - 70,00-100,00 Гц, відеокарти - 12,00-256, 00 MГц.

Після цього X намагається в автоматичному режимі відтворити можливі режими роботи монітора при різних дозволах і частотах кадрів. Наприклад, ми бачимо, що наша система може працювати при вирішенні 1024 x 768 з частотою кадрової розгортки 85 Гц. А такий дозвіл, як 800 x 512, взагалі не вдалося реалізувати. Якщо користувач не вказує цього спеціально, Linux самостійно вибирає прийнятний режим. Звернемо увагу на такі рядки:

(**) NV (0): Default mode "1024x768": 94.5 MГц, 68.7 kГц, 85.0 Гц NV (0): Modeline "1024x768" 94.50 1024 1072 1168 1376 768 769 772 808 + hsync + vsync

Остання вимагає пояснень. У спеціальній термінології вона називається "модлайн" і має такий вигляд:

Modeline "імя_моди" DC HV HR HS H VV VR VS V

Значення умовних позначень ви вже знаєте. X роздає імена модам згідно з дозволами: "800 x 600", "тисячі двадцять чотири x 768" і т.д. Прапори + hsync і + vsync визначають прямий або інвертування рівень імпульсів відеокарти. Вони можуть мати знак "мінус" або взагалі бути відсутнім. Іноді їх доводиться підбирати експериментальним шляхом.

Тепер скажемо кілька слів про те, як параметри, необхідні для належного функціонування дисплея, описуються в XF86Config-4. У цьому процесі беруть участь три секції: Device, Monitor, Screen.

Device визначає модуль відеокарти, і для ручної настройки можна скористатися програмою Xconfigurator.

У розділі Monitor описуються параметри дисплея ПК: рядок Identifier визначає умовний ідентифікатор монітора в межах файлу. VendorName - необов'язковий параметр, який вказує виробника і модель. Більш важливу інформацію несуть значення вертикальної і горизонтальної синхронізації, HorizSync 37-93 і VertRefresh 70-75. При скануванні режимів роботи XFree не перевищуватиме ці величини, щоб не вивести з ладу монітор. У розділі Monitor також визначаються необхідні моди:

# 1024x768 @ 60 Гц, 48.4 kГц hsync Modeline "1024x768" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync

Якщо в конфігураційному файлі є мода HHHxVVV, то вона перекриє свою "тезку", створювану в автоматичному режимі при завантаженні X.

Щоб узгодити параметри монітора і відеокарти, використовується розділ Screen. У ньому підрозділ Device містить параметри відеокарти, а Monitor - параметри дисплея. Зверніть увагу на параметр DefaultColorDepth, що визначає кількість кольорів на екрані. Не забувайте, що для реалізації необхідної глибини кольору відеокарта повинна володіти достатнім обсягом пам'яті. Втім, для сучасних карт це не проблема. А підрахувати необхідну кількість пам'яті можна за формулою:

M = HxVxB

де H - дозвіл по горизонталі, V - дозвіл по вертикалі, B - кількість байт, що відводяться на оцифровку кольору. Для 256-ти кольорів B = 1, для 65536-ти кольорів - B = 2, для 16-ти мільйонів - B = 3. Таким чином, з кількох підсекцій буде обрана та, яка володіє відповідним значенням Depth.

Далі вказується необхідна мода. Рядок Virtual визначає віртуальне дозвіл екрана дисплея. Зазвичай воно збігається з чинним, але може бути і більшим. Тоді на екрані відображається тільки частина зображення, а для переміщення видимої частини використовується мишка. Для наочності наведемо приклад:

Section "Monitor" Identifier "Monitor" VendorName "PHL" HorizSync 37-93 VertRefresh 70-75 # 640x480 @ 75.0 Гц, 37.5 kГц hsync Modeline "640x480" 31.5 640 656 720 840 480 481 484 500 -Hsync -Vsync # 1024x768 @ 60 Гц, 48.4 kГц hsync Modeline "1024x768" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync EndSection Section "Screen" Driver "Accel" Device "NVidia / SGS Thomson | Riva128" Monitor "Monitor" DefaultColorDepth16 SubSection "Display" Depth16 Modes "1024x768" Virtual1024x768 EndSubSection EndSection

Виходячи зі своєї скромної практики, я зробив висновок, що існує два основних способи підстроювання дисплея за допомогою X86Config-4.

Виходячи зі своєї скромної практики, я зробив висновок, що існує два основних способи підстроювання дисплея за допомогою X86Config-4

Припустимо, у нас все працює, але працює погано. Монітор блимає, хоча повинен функціонувати на нормальній частоті. Визначити режим роботи дисплея в Gnome або KDE можна за допомогою команди xvidtune.

Однією з можливих причин такого стану може бути неправильне налаштування модлайна в файлі настройки X. Визначивши за допомогою xvidtune дозвіл монітора, наприклад 800 x 600, можна знайти все модлайни з таким ім'ям і "закомментировать" їх в розрахунку на те, що при старті X автоматично підбере оптимальні параметри.

У прикладі, наведеному вище, обрана невдала мода 1024 x 768 @ 60 Гц. "Закомментіруем" її: адже ми знаємо, що "автоматична" мода "1024 x 768" працює на частоті 85 Гц.

Закомментіруем її: адже ми знаємо, що автоматична мода 1024 x 768 працює на частоті 85 Гц

Гірше, якщо X не в змозі самостійно правильно налаштувати роботу монітора. Доведеться генерувати моду іншими способами. Взагалі писати її "з нуля" - тяжка праця. Полегшують його різні утиліти. Наприклад, непогано справляється з цим завданням веб-скрипт Modeline tool .



Ось, наприклад, що пропонує ця утиліта для реалізації моди 1024 x 768 @ 85 Гц:

Modeline "1024x768" 97.40 1024 1072 1192 1416 768 768 771 809 94.50

Дуже близько до даних, які містяться в наведеному вище фрагменті. Якщо цей спосіб не працює, спробуйте інші утиліти, яких достатньо в інтернеті (наприклад xtiming.sourceforge.net ). В особливо складних випадках слід попередньо вивчити згадану документацію і пробувати відтворити необхідні параметри самостійно. Тоді недолік даного методу може перетворитися в його гідність: таким чином можна "вичавити" з монітора додаткові герци або встановити нестандартну роздільну здатність. Так, мені вдалося на 15-дюймовому моніторі отримати дозвіл 926 x 698 - при роботі в Web це зручніше, ніж стандартні 800 x 600.

На закінчення - кілька додаткових зауважень і порад. Для опису мод існує альтернативний спосіб - підсекція Mode:

Mode "ім'я моди" DotClock частота_відеокарти HTimings HV HR HS H VTimingVV VR VS V Flags + (-) hsync + (-) vsync

Якщо X запускається скриптом startx після реєстрації користувача, то існує можливість створення для кожного користувача власної конфігурації XF86Config-4. Справа в тому, що при старті X шукає свій конфігураційний файл в наступній послідовності:

/ Etc / X11 / <cmdline> / usr / X11R6 / etc / X11 / <cmdline> / etc / X11 / $ XF86CONFIG

де cmdline - параметр, що вказується сервера X за допомогою ключа -xf86config. Якщо його не вказувати, то, маніпулюючи змінної $ XF86CONFIG, можна завантажувати свої параметри для кожної сесії.

Якщо Linux автоматично стартує в графічному режимі, що призводить до краху системи, - не залишається нічого іншого, як спробувати виправити неприємність, завантаживши ОС в текстовому режимі. Іноді користувач може змінити режим запуску системи. А адже це просто. Треба лише при старті lilo передати процесу init необхідний параметр: 3 для текстового і 5 - для графічного режиму.

От і все. Налаштуйте систему так, як зручно вам!

Як будемо перемикатися?

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

rss
Карта