Проблемы с Keyboard Layout и Xorg

«Когда находишь решение под винду, понимаешь, что она тупая. Когда находишь решение под Линукс, понимаешь, что ты тупой» (автор)

Как-то после перекомпиляции и обновлений очередных кучи-малой программ на уже давно установленной системе, которая благодаря такому чудаку как я повидала всякого, потому как была первой заинсталированной мною Gentoo Linux, возникла у меня такая проблема. Если работать на обычном терминале, то она не возникала, там было все в порядке. Как только стартовал xdm и загружался в какую-нибудь графическую сессию как-то KDE, Gnome, Openbox, XFCE (без разницы) то работа клавишь up, down, right_ctrl и других, становилась достаточно странной. К примеру по нажатию стрелки вниз (down) срабатывал Enter (Return), аналогичный результат давала и клавиша правый control. Однако на дополнительной клавиатуре аналогичные кнопки работали без проблем. Порой до поры до времени переставали также выполнять свои операции клавиши Delete, Insert. Из-за этого в Gnome, после нажатия клавиши Up выскакивала программулька по деланию снимков экрана (причем, по остальным комбинациям клавишь (стандартным) она так же вызывалась). Поиски в поисковиках мне ничего не дали, потому как на все мои запросы выдавались описания совершенно других проблем.
В общем, именно эта проблема послужила толчком к переустановке системы. Однако когда после инсталляции совершенно новой ОС у меня выскочила именно эта же проблема, то желание разбить мою клавиатуру об системник достигло аппогея. Если у user-a перед запуском xdm удалить все папки с конфигами, то KDE стартовало и работало без проблем до того момента, пока не заходил в System Settings — Country/Region & Language — Keyboard Layout и не ставил галочку Enable Keyboard Layout, что сразу приводило к вышеописанным проблемам.
Первое что начал делать, это копать в сторону xkb и evdev, думая, что произошло странное переопределение кодов каждой клавиши. Оказалось, что там было все в порядке.
Мне как-то в голову по началу не пришло, что проблема может быть в обычной конфигурации Xorg, т.к. настроенная в его конфиге переключалка раскладки клавиатуры действовала без проблем. Помог советом более опытный пользователь linux чем я, у которого что-то подобное в практике возникало и после долгих часов разбора полетов и чтения просторов интернета он попросту сносил к чертям собачьим файл xorg.conf и пробовал загрузиться на настройках по умолчанию.
Одним словом, вот что спасло мою клавиатуру. Привожу листинг старого xorg.conf

cat /etc/X11/xorg.conf.old 
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 1.0  (buildmeister@builder58)  Fri Apr 17 00:40:10 PDT 2009


Section "ServerLayout"
    Identifier     "X.org Configured"
    Screen      0  "Screen0" 0 0
    InputDevice    "Mouse0" "CorePointer"
    InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "ServerFlags"
 Option "AllowEmptyInput" "off"
 Option "DontZap" "false"
EndSection

Section "Files"
EndSection

Section "Module"
    Load           "glx"
    Disable     "dri"
    Disable     "dri2"
EndSection

Section "InputDevice"
    Identifier     "Keyboard0"
    Driver         "kbd"
    Option         "XkbRules" "xorg"
    Option         "XkbModel" "pc105"
    Option         "XkbLayout" "us"
    Option         "XkbVariant" ""
    Option         "XkbOptions" "compose:rwin"
EndSection

Section "InputDevice"
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/input/mice"
    Option         "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Electron"
    ModelName      "768D"
    HorizSync       31.0 - 83.0
    VertRefresh     56.0 - 75.0
    ModeLine       "1280x1024" 108.0 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync
EndSection

Section "Device"
    Identifier     "Card0"
    Driver         "nvidia"
    VendorName     "nVidia Corporation"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Card0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "AddARGBGLXVisuals" "True"
    Option         "DPMS"
    Option         "RenderAccel" "True"
    Option         "DamageEvents" "True"
    SubSection     "Display"
        Viewport    0 0
        Depth       24
        Modes      "1280x1024" "1152x864" "1024x768" "800x600"
    EndSubSection
EndSection

Section "Extensions"
    Option         "Composite" "Enable"
EndSection

а теперь рабочий вариант:

cat /etc/X11/xorg.conf                                           
Section "Module"
    Load           "glx"                                                                                
    Disable     "dri"                                                                                   
    Disable     "dri2"                                                                                  
EndSection                                                                                              
                                                                                                        
Section "Device"                                                                                        
    Identifier     "Card0"                                                                              
    Driver         "nvidia"                                                                             
    VendorName     "nVidia Corporation"                                                                 
EndSection
                                                                                                                    
Section "Screen"
    Identifier     "Screen0"                                                                                                       
    Device         "Card0"                                                                                                         
    Monitor        "Monitor0"                                                                                                      
    DefaultDepth    24                                                                                                             
    Option         "AddARGBGLXVisuals" "True"                                                                                      
    Option         "DPMS"                                                                                                          
    Option         "RenderAccel" "True"                                                                                            
    Option         "DamageEvents" "True"                                                                                           
    SubSection     "Display"                                                                                                       
        Viewport    0 0                                                                                                            
        Depth       24
        Modes      "1280x1024" "1152x864" "1024x768" "800x600"
    EndSubSection
EndSection

Section "Extensions"
    Option         "Composite" "Enable"
EndSection


Я пока не искал по ресурсам в чем же там конкретно была загвоздка, как только найду, отпишусь.
  • +1
  • 6 августа 2010, 21:05
  • yuginboy

Комментарии (1)

RSS свернуть / развернуть
+
0
Не зря Линус Торвальдс отметил, что Nvidia остаётся единственной ужасной компанией, с которой приходится иметь дело разработчикам Linux, закончив речь про Nvidia фразой «So Nvidia fuck you!»
avatar

Artemiy

  • 19 января 2014, 23:22

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Не забываем смотреть статистику:

Яндекс цитирования