[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Хочу что бы в X Window в русской раскладке Ctrl+<KEY> отдавало как Ctrl+ASCII...



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: