Xorg смена раскладки

Когда сидел на кубунту заметил такую вещь, что в иксах не подхватывается смена раскладки. В кде я встроенными средствами поменял capslock и левый ctrl местами, и назначил переключение языка на capslock(таким образом, язык переключался по левому контролу). Потом, когда я пересел на флуксобкс, я заметил, что иксы не подхватывают смену раскладки по капслоку, а упорно меняют ее по alt+shift. Тогда я списал это на криво поставившийся xorg. Сейчас, после перехода на арч, проблема осталась. Я решил разобраться в вопросе. В логах xorg я заметил, что он игнорирует опции для клавиатуры и генерирует свои. Порылся по форуму, и нашел, что опциями клавиатуры можно управлять так:
setxkbmap -layout “us,ru(winkeys)” -model “pc105” -option “grp:caps_toggle”
Эта комманда у меня срабытывает и раскладка начинает меняться по капслоку. Но появляется странный глюк: перестают работать стрелки и del. Когда я комбинирую опции grp:caps_toggle и ctrl:swapcaps - то вопреки моим ожиданиям, смена раскладки не происходит по левому контролу, а он начинает работать как капслок.
В связи с этим, у меня несколько вопросов.
1. Как вообще добиться того, чтобы иксы читали конфиг клавиатуры из xorg.conf? Вот лог файла
Xorg.0.log (сюда файл не уместился, а pastebin почему-то лежит, пришлось заливать на яндекс)

А вот на всякий случай xorg.conf

Section "Files"
	ModulePath   "/usr/lib/xorg/modules"
	FontPath     "/usr/share/fonts/misc"
	FontPath     "/usr/share/fonts/100dpi:unscaled"
	FontPath     "/usr/share/fonts/75dpi:unscaled"
	FontPath     "/usr/share/fonts/TTF"
	FontPath     "/usr/share/fonts/Type1"
EndSection
Section "Module"
      Load "i2c"
      Load "bitmap"
      Load "ddc"
      Load "dri"
      Load "extmod"
      Load "freetype"
      Load "glx"
      Load "int10"
      Load "type1"
      Load "vbe"
      Load "synaptics"
      Load "evdev"    
EndSection
Section "InputDevice"
	Identifier	"Generic Keyboard"
	Driver		"kbd"
	Option		"CoreKeyboard"
	Option		"XkbRules"	"xorg"
	Option		"XkbModel"	"pc105"
	Option		"XkbLayout"	"us, ru"
	Option		"XkbVariant"	",winkeys"
	Option		"XkbOptions"	"altwin:meta_win,grp:caps_toggle"
EndSection
Section "InputDevice"
	Identifier	"Configured Mouse"
	Driver		"mouse"
	Option		"CorePointer"
	Option		"Device"		"/dev/input/mice"
	Option		"Protocol"		"ImPS/2"
	Option		"ZAxisMapping"		"4 5"
	Option		"Emulate3Buttons"	"true"
EndSection
Section "InputDevice"
       Identifier  "Touchpad"
	Driver  "synaptics"
	Option  "Device"   "/dev/input/mouse0"
	Option  "Protocol"   "auto-dev"
	Option  "LeftEdge"   "130"
	Option  "RightEdge"   "840"
	Option  "TopEdge"   "130"
	Option  "BottomEdge"   "640"
	Option  "FingerLow"   "7"
	Option  "FingerHigh"   "8"
	Option  "MaxTapTime"   "180"
	Option  "MaxTapMove"   "110"
	Option  "EmulateMidButtonTime"   "75"
	Option  "VertScrollDelta"   "20"
	Option  "HorizScrollDelta"   "20"
	Option  "MinSpeed"   "0.25"
	Option  "MaxSpeed"   "0.50"
	Option  "AccelFactor"   "0.010"
	Option  "EdgeMotionMinSpeed"   "200"
	Option  "EdgeMotionMaxSpeed"   "200"
	Option  "UpDownScrolling"   "1"
	Option  "CircularScrolling"   "1"
	Option  "CircScrollDelta"   "0.1"
	Option  "CircScrollTrigger"   "2"
	Option  "SHMConfig"   "true"
	Option  "Emulate3Buttons"   "on"
EndSection
# Section "InputDevice"
# 	Identifier	"Synaptics Touchpad"
# 	Driver		"synaptics"
# 	Option		"SendCoreEvents"	"true"
# 	Option		"Device"		"/dev/psaux"
# 	Option		"Protocol"		"auto-dev"
# 	Option		"HorizEdgeScroll"	"0"
# endSection
#Section "InputDevice"
#	Driver		"wacom"
#	Identifier	"stylus"
#	Option		"Device"	"/dev/input/wacom"
#	Option		"Type"		"stylus"
#	Option		"ForceDevice"	"ISDV4"		# Tablet PC ONLY
#EndSection
#Section "InputDevice"
#	Driver		"wacom"
#	Identifier	"eraser"
#	Option		"Device"	"/dev/input/wacom"
#	Option		"Type"		"eraser"
#	Option		"ForceDevice"	"ISDV4"		# Tablet PC ONLY
#E#ndSection
#Section "InputDevice"
#	Driver		"wacom"
#	Identifier	"cursor"
#	Option		"Device"	"/dev/input/wacom"
#	Option		"Type"		"cursor"
#	Option		"ForceDevice"	"ISDV4"		# Tablet PC ONLY
#ndSection
Section "dri"
  Mode 0666
EndSection
Section "Device"
	Identifier	"Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller"
	Driver		"intel"
	BusID		"PCI:0:2:0"
	Option 		"DDC"	"no"
	Option          "DRI"   "true"
EndSection
Section "Monitor"
	Identifier	"Generic Monitor"
	Option		"DPMS"
EndSection
Section "Screen"
	Identifier	"Default Screen"
	Device		"Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller"
	Monitor		"Generic Monitor"
	DefaultDepth	24
	SubSection "Display"
		Modes		"1280x800"
	EndSubSection
EndSection
Section "ServerLayout"
	Identifier	"Default Layout"
	Screen		"Default Screen"
	InputDevice	"Generic Keyboard"
	InputDevice	"Configured Mouse"
        "AutoAddDevices" "False"
        "AllowEmptyInput" "False"
# Uncomment if you have a wacom tablet
#	InputDevice     "stylus"	"SendCoreEvents"
#	InputDevice     "cursor"	"SendCoreEvents"
#	InputDevice     "eraser"	"SendCoreEvents"
	InputDevice	"Touchpad" "SendCoreEvents"
EndSection

Вот эти две директивы
“AutoAddDevices” “False”
“AllowEmptyInput” “False”

Выключить автодетект опций клавиатуры, видимо не помогло :(

и rc.conf

LOCALE="ru_RU.UTF-8"
HARDWARECLOCK="UTC"
USEDIRECTISA="no"
TIMEZONE="Europe/Moscow"
KEYMAP="ru"
CONSOLEFONT="ter-v16b"
CONSOLEMAP=
USECOLOR="yes"
MOD_AUTOLOAD="yes"
MODULES=(8139cp 8139too mii ipw2200 ac97_bus snd-mixer-oss snd-pcm-oss 
snd-page-alloc snd-pcm snd-timer snd snd-ac97-codec snd-intel8x0 
snd-intel8x0m soundcore eth1394)
USELVM="no"
HOSTNAME="navi"
eth0="eth0 92.246.176.221 netmask 255.255.255.0 broadcast 
92.246.176.255"
eth1="eth1 192.168.0.3 netmask 255.255.0.0"
INTERFACES=(eth0 eth1)
gateway="default gw 92.246.176.1"
ROUTES=(gateway)
 
#NETWORKS=(main)
DAEMONS=(syslog-ng network netfs crond acpid laptop-mode alsa hal fam evdev tifm_sd gdm)

Во время загрузки системы показывается ошибка, связанная с evdev. Хотя он у меня установлен в системе.

2. Подозреваю, что все-таки можно сделать так, чтобы capslock работал как ctrl а смена раскладки происходила по левому ctrl. Был бы очень благодарен за информацию.

3. Как заставить правый alt вести себя как alt? А то сейчас он ведет себя как enter.

Заранее спасибо за информацию.
P.S. честно пытался разобраться сам, но потом совсем запутался и теперь прошу помощи у уважаемого коммьюнити.
> Когда я комбинирую опции grp:caps_toggle и ctrl:swapcaps
правильно оно работает.

xorg.conf
   Option      "XkbLayout"   "us, ru"
   Option      "XkbVariant"   ",winkeys"
   Option      "XkbOptions"   "altwin:meta_win,grp:caps_toggle"

вот это тебе и менять. Например так:
        Option      "XkbLayout" "us,ru"
        option      "XkbVariant" ",winkeys"
        Option      "XkbOptions" "grp:rwin_toggle,grp_led:scroll,compose:ralt"

переключение по правому Win-key (один хрен больше он ни для чего не нужен)

у меня пока всё. по поводу смен поведения клавиш… не задумывался и не нужно было, а так пошукай в /usr/share/X11/xkb/
systemd должен умереть.
h4tr3d
переключение по правому Win-key (один хрен больше он ни для чего не нужен)

у меня пока всё. по поводу смен поведения клавиш… не задумывался и не нужно было, а так пошукай в /usr/share/X11/xkb/

Две проблемы: как я уже написал выше, у меня не читаются опции клваиатуры из Xorg.conf. В логе есть такие строки(полная версия лога в первом посте)
(WW) AllowEmptyInput is on, devices using drivers 'kbd' or 'mouse' will be disabled.
(WW) Disabling Generic Keyboard
(WW) Disabling Configured Mouse
........................................
(II) XINPUT: Adding extended input device "Video Bus" (type: KEYBOARD)
(**) Option "xkb_rules" "base"
(**) Video Bus: xkb_rules: "base"
(**) Option "xkb_model" "evdev"
(**) Video Bus: xkb_model: "evdev"
(**) Option "xkb_layout" "us"
(**) Video Bus: xkb_layout: "us"
(II) config/hal: Adding input device Video Bus
(**) Video Bus: always reports core events
(**) Video Bus: Device: "/dev/input/event6"
(II) Video Bus: Found keys
(II) Video Bus: Configuring as keyboard
(II) XINPUT: Adding extended input device "Video Bus" (type: KEYBOARD)
(**) Option "xkb_rules" "base"
(**) Video Bus: xkb_rules: "base"
(**) Option "xkb_model" "evdev"
(**) Video Bus: xkb_model: "evdev"
(**) Option "xkb_layout" "us"
(**) Video Bus: xkb_layout: "us"

То есть тут, видимо, отключается драйвера kbd и подключается что-то другое. Про русскую раскладку тут вообще ничего нет, ходя в xorg.conf она указана.
Ну и вторая проблема - нет клавиши rwin, клавиатура ноутбучная.
tinman321
а с такой секцией?

Не помогло :(
Версия исксов, полный путь до конфига, он должен быть такой:
/etc/X11/xorg.conf (xorg.conf - маленькими буквами…)

и полный лог иксов при запуске.
systemd должен умереть.
h4tr3d
Версия исксов, полный путь до конфига, он должен быть такой:
/etc/X11/xorg.conf (xorg.conf - маленькими буквами…)

и полный лог иксов при запуске.

Мои иксы:
testing/xorg-server 1.5.3-2
extra/xorg-server-utils 7.4-2

До тестовой ветки обновился сегодня утром, до этого была экстра, думал поможет - не помогло.

Лог : http://paste.org.ru/?m1h5n8
Имя файла и путь совпадает.
Вроде как kbd и keyboard сейчас deprecated, т.к. на evdev переходят?

Сделай:
$ egrep “N|H” /proc/bus/input/devices
найди свою клавиатуру, что-нибудь типа:
N: Name=“AT Translated Set 2 keyboard”
H: Handlers=kbd event1

И поправь xorg.conf:
Section "InputDevice"
	Identifier	"Keyboard0"
	Driver		"evdev"
	Option		"Device"	"/dev/input/event1"
	Option		"XkbRules"	"xorg"
	Option		"XkbModel"	"pc105"
	Option		"XkbLayout"	"us,ru"
	Option		"XkbOptions"	"grp:rwin_toggle,grp_led:scroll,compose:ralt"
	Option		"CoreKeyboard"	"true"
EndSection
egrep "N|H" /proc/bus/input/devices
N: Name="Macintosh mouse button emulation"
H: Handlers=mouse0 event0 
N: Name="AT Translated Set 2 keyboard"
H: Handlers=kbd event1 
N: Name="Logitech Optical USB Mouse"
H: Handlers=mouse1 event2 
N: Name="Power Button (FF)"
P: Phys=LNXPWRBN/button/input0
H: Handlers=kbd event3 
N: Name="Lid Switch"
P: Phys=PNP0C0D/button/input0
H: Handlers=event4 
N: Name="Power Button (CM)"
P: Phys=PNP0C0C/button/input0
H: Handlers=kbd event5 
N: Name="Video Bus"
H: Handlers=kbd event6 
N: Name="Video Bus"
H: Handlers=kbd event7 
N: Name="PC Speaker"
H: Handlers=kbd event8 
B: SND=6
N: Name="PS/2 Mouse"
H: Handlers=mouse2 event9 
N: Name="AlpsPS/2 ALPS GlidePoint"
H: Handlers=mouse3 event10 

Сейчас попробую заменить. Только на моей клавиатуре нет правого win-кея.
sysmouse
Вроде как kbd и keyboard сейчас deprecated, т.к. на evdev переходят?

Сделай:
$ egrep “N|H” /proc/bus/input/devices
найди свою клавиатуру, что-нибудь типа:
N: Name=“AT Translated Set 2 keyboard”
H: Handlers=kbd event1

Вот спасибо, сейчас уже переключение работает! Правда, правый альт не подхватился :(

Если бы еще придумать, как контрол назначить на капс, а переключение раскладки сделать по левому контролу - это было бы вообще круто! Это штатными средствами можно сделать? Насколько я понял, переключение раскладки в иксах нельзя повесить на произвольную клавишу/сочетание клавиш, к примеру на ctrl+\. Хотя было бы круто :)

UPD. В итоге, остановился на способе переключения раскладки по ctrl+shift. В результате мои опции клавиатуры выглядят так:
Option      "XkbOptions"   "grp_led:scroll,compose:ralt,grp:ctrl_shift_toggle,ctrl:swapcaps"

Только вот правый альт остался нерабочим. В чем может быть проблема?
Посчитать количество клавишь и поставить правильную модель? :) может поможет
systemd должен умереть.
 
Зарегистрироваться или войдите чтобы оставить сообщение.