Re: Хочу что бы в X Window в русской раскладке Ctrl+<KEY> отдавало как Ctrl+ASCII...
- To: debian-russian@lists.debian.org
- Subject: Re: Хочу что бы в X Window в русской раскладке Ctrl+<KEY> отдавало как Ctrl+ASCII...
- From: Oleksandr Gavenko <gavenkoa@gmail.com>
- Date: Fri, 06 Jul 2012 20:30:44 +0300
- Message-id: <[🔎] 87liiwn6ez.fsf@desktop.home.int>
- References: <87vcia31py.fsf@desktop.home.int> <20120629160626.53084599@DOM-131> <87r4sy2ub4.fsf@desktop.home.int> <20120629182842.01a333e8c1d5fc136b693c8c@yandex.ru> <20120629163540.6accc0df@Ulf.tvoe.tv> <87wr2pn6ph.fsf@desktop.home.int> <20120630081514.bd6b69807da10bc43534942e@yandex.ru>
On 2012-06-30, Sergej Kochnev wrote:
> On Sat, 30 Jun 2012 00:34:02 +0300
> Oleksandr Gavenko <gavenkoa@gmail.com> wrote:
>
>>Я хочу безусловное переключение (не модальное) в желаемую раскладку.
>
> Могу предложить простое решение в виде kbdd. Ему можно отправить номер
> group через D-Bus.
Пока принял это решение.
================================================================
После чтения howto и стандартов пришел к выводу что настраивать через xkbcomp
сложно.
Для желающих безусловного переключения есть рецепт в статье:
http://xgu.ru/download/sash-kan-notes.pdf
но из-за Emacs и желания переключать по Win+1/Win+2 (или Hyper+1...) нужно еще
было погружаться...
================================================================
Внизу привожу изменения, которые я зделал для работы с kbdd. В предыдущем
случае не устраиволо:
* иногда xmodmap не отрабатывал коректно (при интенсивном использовании
клавиатуры в момент переключения раскладки)
* Fvwm создавал 3 процесса (bash, setxkbmap, xmodmap), в теории должно быть
ноль.
Пока используется shell и dbus-send, но позжее я надеюсь с помощью FvwmPerl
получить постоянно работающий процесс, что бы закрыть вопрос
производительности.
kbdd минималистичен, не имеет файлов конфирурации и сохраняет раскладку для
каждого окна отдельно (т.е. если вызовете диалог из приложения - то он будет
иметь первую раскладку, что может отличаться от раскладки в приложении).
================================================================
Собственно имеется еще ряд проектов, связанных с переключение раскладки. Я
привожу эту информацию что бы люди "забыли" о xxkb и взглянули на scim и ibus.
Просто по инерции "бывалые" рекомендуют до сих пор xxkb, по памяти как они
побовали этот проект еще в 2001...
xxkb: https://sourceforge.net/projects/xxkb/
Дохлый проект, баги не фиксяться с 2007, хотя написан замечательным
разработчиком, чие Howto приводится в качестве документации на Xorg, последний
релиз сделан сторонними разработчиками и есть жалобы что они чего то там
поломали. "Конфликтует" с множеством оконных менежеров (из различных
источников Интернета).
Мне не удалось его запустить, ругался на файлы настроек. С такой ошибкой есть
баги на sourceforge.
scim: http://www.scim-im.org/
(Smart Common Input Method) скорее всего очень мощный проект, т.к. позволяет
обходить ограничения существующий протоколов X для некоторых "сложных" языков
(корейский, японский). Вместе с мощностью идет и сложножность в изучении.
У меня Root окно перестало получать клики мышки и я отказался от дальнейшего
рассмотрения, (вдруг где то проще?)...
ibus: http://code.google.com/p/ibus/
(Intelligent Input Bus for Linux / Unix OS). Ничего не скажу, т.к. kbdd уже
заработал.
================================================================
diff -r 3009c836ab8b -r f5c5a51bc45f .bashrc
--- a/.bashrc Fri Jul 06 19:13:56 2012 +0300
+++ b/.bashrc Fri Jul 06 19:29:26 2012 +0300
@@ -115,8 +115,8 @@
# Fix lang under X.
-alias en="setxkbmap -layout us; xmodmap ~/.xmodmaprc"
-alias ут="setxkbmap -layout us; xmodmap ~/.xmodmaprc"
+alias en="dbus-send --dest=ru.gentoo.KbddService /ru/gentoo/KbddService ru.gentoo.kbdd.set_layout uint32:0"
+alias ут="dbus-send --dest=ru.gentoo.KbddService /ru/gentoo/KbddService ru.gentoo.kbdd.set_layout uint32:0"
diff -r 3009c836ab8b -r f5c5a51bc45f .fvwm/config
--- a/.fvwm/config Fri Jul 06 19:13:56 2012 +0300
+++ b/.fvwm/config Fri Jul 06 19:29:26 2012 +0300
@@ -243,9 +243,9 @@
# Switch input method.
-Key 1 A 3 Exec setxkbmap -layout us; xmodmap ~/.xmodmaprc
-Key 2 A 3 Exec setxkbmap -layout ru,us; xmodmap ~/.xmodmaprc
-Key 3 A 3 Exec setxkbmap -layout ua,us; xmodmap ~/.xmodmaprc
+Key 1 A 3 Exec dbus-send --dest=ru.gentoo.KbddService /ru/gentoo/KbddService ru.gentoo.kbdd.set_layout uint32:0
+Key 2 A 3 Exec dbus-send --dest=ru.gentoo.KbddService /ru/gentoo/KbddService ru.gentoo.kbdd.set_layout uint32:1
+Key 3 A 3 Exec dbus-send --dest=ru.gentoo.KbddService /ru/gentoo/KbddService ru.gentoo.kbdd.set_layout uint32:2
diff -r 3009c836ab8b -r f5c5a51bc45f .xinitrc
--- a/.xinitrc Fri Jul 06 19:13:56 2012 +0300
+++ b/.xinitrc Fri Jul 06 19:29:26 2012 +0300
@@ -15,6 +15,8 @@
# Under Cygwin I prefer '-multiwindow' option, so it needn't to setup WM.
if [[ -z $COMSPEC ]]; then
+ setxkbmap us,ru,ua
+ kbdd &
if [[ -f ~/.xmodmaprc ]]; then
xmodmap ~/.xmodmaprc
fi
--
Best regards!
Reply to: