Bug 30618 - Не устанавливается переключатель раскладок по ctrls_toggle (/etc/X11/xinit/fixkeyboard)
Summary: Не устанавливается переключатель раскладок по ctrls_toggle (/etc/X11/xinit/fi...
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: xinitrc (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL: http://lists.altlinux.org/pipermail/s...
Keywords:
Depends on: 32638 32658
Blocks:
  Show dependency tree
 
Reported: 2014-12-30 08:26 MSK by Eugine V. Kosenko
Modified: 2016-10-24 20:12 MSK (History)
4 users (show)

See Also:


Attachments
Патч, добавляющий вызов xkbcomp в fixkeyboard (629 bytes, application/octet-stream)
2014-12-30 08:27 MSK, Eugine V. Kosenko
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
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
$