View previous topic :: View next topic |
Author |
Message |
Wantoast n00b
Joined: 14 Aug 2013 Posts: 16
|
Posted: Sat Aug 24, 2013 11:57 am Post subject: [Solved] Keyboard layout: persistent setxkbmap? |
|
|
Hi, I need to change my keyboard layout (the Xorg one), but solutions found on the internet didn't work:
I read that I should put a conf file like "10-keyboard.conf" in the "xorg.conf.d" directory. The problem is that there wasn't such a directory, so I decided to create it manually, I put in it the .conf file but it didn't work.
Anyway that's what I wrote in it (according to Xorg config's Gentoo page):
Code: |
Section "InputClass"
Identifier "keyboard-all"
Driver "evdev"
Option "XkbLayout" "us,it"
Option "XkbModel" "logitech_g15" <---- I don't think this is my keyboard. Is this relevant?
Option "XkbRules" "xorg"
Option "XkbOptions" "grp:alt_shift_toggle,grp:switch,grp_led:scroll,compose:rwin,terminate:ctrl_alt_bksp"
Option "XkbVariant" ",qwerty"
MatchIsKeyboard "on"
EndSection
|
Then: I found a partial solution:
Code: | setxkbmap layout ("it" in this case) |
But with that command I've to change the layout every time I start X, so my question is:
Is it possible to automatically load setxkbmap at X boot (I've already tried to add the command in the .xinitrc file but it didn't work neither)?
If not, is there something that I can to to solve my problem (or did I made any mistake with that .conf file?)?
Thanks in advance!
Last edited by Wantoast on Sun Aug 25, 2013 11:42 am; edited 1 time in total |
|
Back to top |
|
|
Logicien Veteran
Joined: 16 Sep 2005 Posts: 1555 Location: Montréal
|
Posted: Sat Aug 24, 2013 1:06 pm Post subject: |
|
|
Hi,
by experience, the best thing you can do is to set the keyboard layout as late as possible in the X boot process. I do not set it in /etc/X11/xorg.conf or in a file in the directory etc/X11/xorg.conf.d/. I set it with setxkbmap in my ~/.xinitrc, but it will stay untouched only if the X client do not set the keyboard layout itself.
Gnome, Kde, Xfce and other desktop environnements have the possibility to set the keyboard layout and they do unless you tell them explicitly to not touch it. It do not always work. So I use the utility of the desktop environnement to set the keyboard layout and keep the keyboard layout with setxkbmap in .xinitrc that load the .Xmodmap file too with xmodmap to modify the layout. Some desktop environnements can do that themselves.
An other possibility is to tell your desktop environnement to execute setxkbmap and xmodmap via a script. The problem can be that it will be execute before the desktop keyboard layout utility. The sames problems can appear for the mouse setup and other things.
If you use a display manager, you can use the file ~/.xsessionrc to configure things like you do in .xinitrc when you start X with the startx command, with the same overwrite possible problem. _________________ Paul
Last edited by Logicien on Sat Aug 24, 2013 1:10 pm; edited 3 times in total |
|
Back to top |
|
|
VoidMage Watchman
Joined: 14 Oct 2006 Posts: 6196
|
Posted: Sat Aug 24, 2013 1:07 pm Post subject: |
|
|
setxkbmap usually isn't a solution, just a proof you're doing something wrong.
For evdev driver, XkbRules are meaningless and XkbModel shouldn't matter, but you need to filter paths.
As for the initial value, just swap the order in both Layout and Variant.
But do you really need two layouts or are you just copy/pasting results of your googling ?
As for where where the conf snippet should go, 'man xorg.conf'. |
|
Back to top |
|
|
Wantoast n00b
Joined: 14 Aug 2013 Posts: 16
|
Posted: Sat Aug 24, 2013 2:10 pm Post subject: |
|
|
Logicien wrote: | Hi,
by experience, the best thing you can do is to set the keyboard layout as late as possible in the X boot process. I do not set it in /etc/X11/xorg.conf or in a file in the directory etc/X11/xorg.conf.d/. I set it with setxkbmap in my ~/.xinitrc, but it will stay untouched only if the X client do not set the keyboard layout itself.
Gnome, Kde, Xfce and other desktop environnements have the possibility to set the keyboard layout and they do unless you tell them explicitly to not touch it. It do not always work. So I use the utility of the desktop environnement to set the keyboard layout and keep the keyboard layout with setxkbmap in .xinitrc that load the .Xmodmap file too with xmodmap to modify the layout. Some desktop environnements can do that themselves.
An other possibility is to tell your desktop environnement to execute setxkbmap and xmodmap via a script. The problem can be that it will be execute before the desktop keyboard layout utility. The sames problems can appear for the mouse setup and other things.
If you use a display manager, you can use the file ~/.xsessionrc to configure things like you do in .xinitrc when you start X with the startx command, with the same overwrite possible problem. |
Well, I don't use a desktop environment, but a windows manager: awesome. And I don't think it has options for the keyboard layout.
VoidMage wrote: | setxkbmap usually isn't a solution, just a proof you're doing something wrong.
For evdev driver, XkbRules are meaningless and XkbModel shouldn't matter, but you need to filter paths.
As for the initial value, just swap the order in both Layout and Variant.
But do you really need two layouts or are you just copy/pasting results of your googling ?
As for where where the conf snippet should go, 'man xorg.conf'. |
I'm just copy/pasting results of my googling.
So: /usr/share/X11/xkb?
I edited the .conf file as you said and put it there, but layout isn't changed.
Anyway: so the italian version of "Gentoo desktop documentation" contains deprecated info, just to report (although I don't know who should know this) <--- EDIT: It doesn't
Last edited by Wantoast on Sun Aug 25, 2013 11:45 am; edited 1 time in total |
|
Back to top |
|
|
VoidMage Watchman
Joined: 14 Oct 2006 Posts: 6196
|
Posted: Sat Aug 24, 2013 4:38 pm Post subject: |
|
|
Just in case you didn't get what I mean by "filter paths", see /usr/share/X11/xorg.conf.d/10-evdev.conf.
Put your snippet in /etc/X11/xorg.conf.d/.
You probably need just a single layout, so the value should just be "it" and (most likely) you don't need any variant value. |
|
Back to top |
|
|
Wantoast n00b
Joined: 14 Aug 2013 Posts: 16
|
Posted: Sat Aug 24, 2013 8:34 pm Post subject: |
|
|
VoidMage wrote: | Just in case you didn't get what I mean by "filter paths", see /usr/share/X11/xorg.conf.d/10-evdev.conf.
Put your snippet in /etc/X11/xorg.conf.d/.
You probably need just a single layout, so the value should just be "it" and (most likely) you don't need any variant value. |
Exactly what I didn't understand. I added "Options" "it" to evdev.conf and it worked. Thanks!
Just one other thing:
With my layout the "Alt Gr" key (or "Alt_R") should be used in order to type, for example, square bracket.
But now it doesn't work, if I press in doesn't be recognized.
Infact, using Xev:
Code: |
KeyPress event, serial 33, synthetic NO, window 0x1200001,
root 0x92, subw 0x0, time 8277374, (-358,80), root:(301,100),
state 0x0, keycode 108 (keysym 0xff7e, Mode_switch), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 33, synthetic NO, window 0x1200001,
root 0x92, subw 0x0, time 8277446, (-358,80), root:(301,100),
state 0x0, keycode 108 (keysym 0xff7e, Mode_switch), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
|
It becomes "Mode_switch", which I don't think is its exact name.
Is this because of that keyboard.conf file?
Last edited by Wantoast on Sun Aug 25, 2013 9:58 am; edited 1 time in total |
|
Back to top |
|
|
VoidMage Watchman
Joined: 14 Oct 2006 Posts: 6196
|
Posted: Sun Aug 25, 2013 4:06 am Post subject: |
|
|
I'm almost scared to ask: what exactly did you change and where ?
Anyway, you might need 'nodeadkeys' variant after all. See /usr/share/X11/xkb/rules/evdev.lst. |
|
Back to top |
|
|
Wantoast n00b
Joined: 14 Aug 2013 Posts: 16
|
Posted: Sun Aug 25, 2013 11:36 am Post subject: |
|
|
VoidMage wrote: | I'm almost scared to ask: what exactly did you change and where ?
Anyway, you might need 'nodeadkeys' variant after all. See /usr/share/X11/xkb/rules/evdev.lst. |
Ok, I did a lot of things that I didn't have to do (e.g. editing that evdev.conf file or copying the keyboard layout wherever I could, haha).
Anyway, I realized that the unique file I've to edit is 10-keyboard.conf, so I removed all those copies I've created.
Then, this is my actual 10-keyboard.conf file:
Code: |
Section "InputClass"
Identifier "keyboard-all"
Driver "evdev"
Option "XkbLayout" "it"
Option "XkbVariant" "nodeadkeys"
MatchIsKeyboard "on"
EndSection
|
It works. Layout loads correctly and Alt Gr is recognized. Thanks! |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|