Bug 30618

Summary: Не устанавливается переключатель раскладок по ctrls_toggle (/etc/X11/xinit/fixkeyboard)
Product: Sisyphus Reporter: Eugine V. Kosenko <eugine.kosenko>
Component: xinitrcAssignee: placeholder <placeholder>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: glebfm, imz, ldv, placeholder
Version: unstable   
Hardware: all   
OS: Linux   
URL: http://lists.altlinux.org/pipermail/sisyphus/2014-December/363265.html
Bug Depends on: 32638, 32658    
Bug Blocks:    
Attachments:
Description Flags
Патч, добавляющий вызов xkbcomp в fixkeyboard none

Description Eugine V. Kosenko 2014-12-30 08:26:30 MSK
Изначально тема была поднята здесь:

http://lists.altlinux.org/pipermail/sisyphus/2014-December/363265.html

Основная проблема в том, что в Xkbmap можно установить переключатель раскладок, например, по caps_toggle или ctrl_shift_toggle, но не получается сделать то же самое по ctrls_toggle.

Возможно, что это скорее проблема пакета xkeyboard-config, к которому относится файл /usr/share/X11/xkb/symbols/group, содержащий соответствующее определение ctrls_toggle, и нужно исправить именно определение этой комбинации.

Однако, в `man setxkbcomp` (раздел "USING WITH xkbcomp") приведен шаблон использования setxkbmap в паре с xkbcomp, после запуска которого переключатель ctrls_toggle устанавливается. Причину этого я пока не понял, так как в том же документе сказано, что такой образец нужен, только если X-сервер и клиент запускаются на разных машинах с разными конфигурациями.

Не знаю, правильное ли это решение, но я просто изменил вызов setxkbmap в файле /etc/X11/xinit/fixkeyboard, и у меня все заработало. Мои изменеия даю в прилагаемом патче.

Кроме того, я добавил еще одну альтернативу, когда файл Xkbmap отсутствует и как в системном, так и в домашнем каталоге пользователя. В этом случае настройки клавиатуры определяются конфигурацией xorg.conf (в частности, в файле /etc/X11/xorg.conf.d/95-input-keyboard.conf), и работа fixkeyboard сводится только к загрузке текущих значений setxkbmap в xkbcomp.

Думаю, пока (и если) не разберемся с определением ctrls_toggle в xkeyboard-config, стоит пока использовать предложенные мной изменения.
Comment 1 Eugine V. Kosenko 2014-12-30 08:27:40 MSK
Created attachment 6217 [details]
Патч, добавляющий вызов xkbcomp в fixkeyboard
Comment 2 Ivan Zakharyaschev 2016-10-20 04:29:25 MSK
(In reply to comment #0)

> Кроме того, я добавил еще одну альтернативу, когда файл Xkbmap отсутствует и
> как в системном, так и в домашнем каталоге пользователя. В этом случае
> настройки клавиатуры определяются конфигурацией xorg.conf (в частности, в файле
> /etc/X11/xorg.conf.d/95-input-keyboard.conf), и работа fixkeyboard сводится
> только к загрузке текущих значений setxkbmap в xkbcomp.

А если без xkbcomp и Вашего проблемного переключателя, то такой вызов имеет всё равно смысл добавить?

Или это будет действие, которое ничего не делает?

(Если это так, это могло бы быть темой отдельного bug report, чтобы не потерялось и это соображение.)

(Основную проблему пока не проверил.)
Comment 3 Ivan Zakharyaschev 2016-10-20 04:54:09 MSK
Да, описанная проблема и решение у меня тоже воспроизвелись с setxkbmap-1.3.0-alt1.
Comment 4 Ivan Zakharyaschev 2016-10-22 21:47:22 MSK
(In reply to comment #1)
> Created an attachment (id=6217) [details]
> Патч, добавляющий вызов xkbcomp в fixkeyboard

Заметил такую неприятность с таким патчем и xkbcomp-1.2.4-alt1 или xkbcomp-1.3.1-alt1 и setxkbmap-1.3.1-alt1 или setxkbmap-1.3.0-alt1:

setxkbmap -query потом печатает всю информацию о старой конфигурации (включая options и layout).

Может быть, если пользоваться таким workaround (пока не исправлена собственно ошибка в setxkbmap), то уж делать сразу два вызова:

	setxkbmap -option '' `cat "$sysxkbmap"`
	setxkbmap -option '' `cat "$sysxkbmap"` -print | xkbcomp - "$DISPLAY"
Comment 5 Ivan Zakharyaschev 2016-10-22 23:21:26 MSK
A working fix has been published in https://bugs.freedesktop.org/show_bug.cgi?id=15843#c3 .
Comment 6 Ivan Zakharyaschev 2016-10-24 16:34:58 MSK
In a Sisyphus system, this problem is not present (perhaps, due to
https://packages.altlinux.org/en/Sisyphus/srpms/xkeyboard-config ).

$ rpm -qf /usr/share/X11/xkb/symbols/group 
xkeyboard-config-2.18-alt1
$