おきしみみ (oxij) wrote,
おきしみみ
oxij

Xorg 7.4 in Debian with dvorak and russian i18n keyboard layouts

Я напишу этот птос по англицки, потому что это была проблема, которую я долго не мог решить (если честно, то было лень ковыряться), но её решение оказалось до ужаса простым. А кроме того дважды обидно, что я не смог найти её готового решения в интернетах.

Well, I'll write this entry in english because there was a big problem with my debian box and Xorg kbd (xkb) layouts which I couldn't (really, I was too lazy) solve for a very long time.
Lets start from about a month and half ago then I updated my Eee PC to Debian Unstable with new Xorg (1:7.4-something version). That was sad. My wonderful dvorak and russian (ru) layouts were broken. My lovely CapsLock key wasn't switching between them and in Xorg log file were something about xkbcomp which failed and «xkbcomp errors not fatal». That time I just reverted back to old Xorg version and was happy for a some time.

But in a week (or something like that) I got to experimental branch and old lenny package was already deleted from server, so there was no way back. That time I have solved problem with two bash-scripts which were like
$ setxkbmap -layout dvorak
and
$ setxkbmap -layout ru

and were binded to CapsLock.

But today I have updated my desktop system and got same error on a second computer, so I decided to do it in a right way. First of all I have read all bug-trackers, forums, mail-lists and README files and found that from 7.4 Xorg just ignores mouse and keyboard settings from xorg.conf, but
Section "ServerFlags"
    Option "AllowEmptyInput" "false"
EndSection

in xorg.conf somehow fixes that back to the old behavior. With that line in config file layouts were partially back, but every keypress generated three events. (Internets says that it could be fixed by disableing «AutoAddDevice» option in the same section, but I haven't tryed that and I'll go another way.)

After all I found nice probrem solving (after reading NEWS file from /usr/share/doc/xserver-xorg and some experiments). From now on Xorg uses console settings for X keyboard layouts (that is nice idea, really, but at least they could spreaded this news more widely). Console settings in Debian are set from console-setup package, which reads them from /etc/default/console-setup.
So, after I edited that one to

# ... some text before

XKBMODEL="pc105"
XKBLAYOUT="us,ru"
XKBVARIANT="dvorak,winkeys"
XKBOPTIONS="grp:caps_toggle,compose:ralt,grp_led:scroll"


it started working. Notice, that there no «dvorak» layout, there «us» with «dvorak» variant (yes, that's stupid and dull! for example, what about right-handed dvorak? but at least it works).
After that I have commented out all about mouse and keyboard in my xorg.conf. So «ServerLayout» section looks like:

Section "ServerLayout"
    Identifier "Default Layout"
    Screen "Default Screen"
EndSection


and now there is no «InputDevice» sections in it (xorg.conf) at all (but if you hold one there it would be better if it have same settings, and layout «us» variant «dvorak» =/, or it will not work).

After reboot (yes, you really need to reboot or for a some reason it will not work properly) console and X enviroment share the same settings including layout-switching keys. That's awesome (but it was pain to discover)!

(Also it feels like console-cyrilic is no longer needed, but I'm not sure.)
Tags: linux
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment