LINUX.ORG.RU

Как получить текущую раскладку клавиатуры? (или заставить xephyr использовать её?)

 


0

3

В общем, задача стоит такая :

  • есть приложение, запущенное «снаружи» (DISPLAY=:0.0)
  • есть второе, запущенное «внутри» xephyr-а (DISPLAY=:1.0).
  • есть третье запущенное в xephyr приложение (вообще - второе, это скорее что-то wm-подобное) - (DISPLAY=:1.0)

Нужно обеспечить корректную смену раскладок.

Как я понял, «из коробки» xephyr позволяет задать только 1 «стартовую» раскладку (или ошибаюсь?) В рамках костыля вижу такой вариант - у 1 и 2 приложения есть расшаренная память, в которой можно, ко всему прочему, положить название раскладки.

Тогда второе могло бы просто выполнять по мере изменения

DISPLAY=:1.0 setxkbmap <layoutName>
Но - как мне получить текущую раскладку? Пока удалось наткнуться на советы вида :
# setkbxmap -print
xkb_keymap {
	xkb_keycodes  { include "evdev+aliases(qwerty)"	};
	xkb_types     { include "complete"	};
	xkb_compat    { include "complete"	};
	xkb_symbols   { include "pc+us+ru:2+inet(evdev)+group(alt_shift_toggle)+terminate(ctrl_alt_bksp)"	};
	xkb_geometry  { include "pc(pc105)"	};
};
Но спарсить конкретно текущую нельзя, т.к. её тут нет.

В рамках извращений - следующее :

case "$(xset -q|gr LED| awk '{ print $10 }')" in
  "00000002") KBD="English" ;;
  "00001002") KBD="Thai" ;;
  *) KBD="unknown" ;;
esac
но это какой-то очень странный вариант, нет? (можно определить возможные раскладки по списку выше, а потом подобным образом - текущую, но какой-то непрямой метод).

Также нашёл гномоспецифичное org/gnome/desktop/input-sources/current, но в моём mate оно всегда выставлено в 0.

Есть какие-то ещё варианты?

Ответ на: комментарий от Gvidon

Ее нет, т.к. программа выполняет заданое аргументами действие и сразу завершается.

Smola
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.