1

Тема: Кожному вікну -- свою розкладку! :)

Оскільки питання суто технічне, але стосується мов, помістив його тут, в локалізації.
Так вот, чи можна так зробить, щоб при переході від вікна до вікна автоматично змінювалась розкладка? Тобто щоб кожне вікно "пам'ятало" свою мову вводу і не треба було постійно перемикатись. Бо зараз воно вроді глобально працює...

(window manager -- openbox)

2

Re: Кожному вікну -- свою розкладку! :)

Так щоб аж назавжди, то наврядчи. А от на час сеансу можна.

xxkb спасьот отца руськой демократії. Якщо треба, то дам .xxkbrc для російськоі та української, та маленький скриптик до них (перемикає між en-ru або між en-ru-uk)

Востаннє редагувалося drfn (2007-08-31 07:04:53)

3

Re: Кожному вікну -- свою розкладку! :)

Спасибі. Програмка справді корисна. Поставив.
Але от .xxkbrc ну ніяк не можу знайти sad
то якшо не важко, виклади свій.
І ще дивно, що при перемиканні на українську, висвітлює прапорець нашого північного сусіди smile Прикольний натяк big_smile

4

Re: Кожному вікну -- свою розкладку! :)

Викладу ввечерi з дома, сьгоднi. Зараз на роботi, а тут дещо iншi налаштування xxkb. Ну, ще тупий скриптик дам, щоб перемикатись smile

Востаннє редагувалося drfn (2007-08-31 17:33:30)

5

Re: Кожному вікну -- свою розкладку! :)

Так. Наша ціль:
В віконних менеджарах аля wmii, fluxbox, openbox etc
1) налаштувати xxkb на роботу з розкладками для кожного вікна, показувати пропорці країн обраної мови-розкладки.
2) мати змогу перемикатись з варіанту розкладки en-ru на en-ru-ua та навпаки миттєво, не перезавантажуючи xorg.
PS: я рідко користуюсь українською, тому такі вимоги. Після цоьго маленького howto налаштуйте так, як вам треба.

Перше.
Встановити пакет xxkb.

Друге.
В xorg.conf додати параметри розкладок:

    Option "XkbLayout"  "us,ru,ua"
    Option "XkbVariant" ",winkeys,winkeys"

та перезавантижити ікси.

Третє.
в ~ директорії створіть файл ~/.xxkbrc_ru такого змісту:

XXkb.group.base:   1
XXkb.group.alt:    2
XXkb.button.xpm.1:      en15.xpm
XXkb.button.xpm.2:      ru15.xpm
##  XXkb.button.xpm.3:      ua15.xpm
XXkb.button.xpm.4:
XXkb.button.enable:     yes
XXkb.button.geometry:   15x15+22+3
XXkb.button.gravity:    NorthEast
XXkb.bell.enable:       no
XXkb.bell.percent:      -50
XXkb.controls.mainwindow_delete:        yes
XXkb.controls.button_delete:    yes
XXkb.controls.add_when_create:  yes
XXkb.controls.focusout: no
##  XXkb.controls.two_state:        no
  XXkb.controls.two_state:        yes
XXkb.controls.add_when_change:  no
XXkb.controls.add_when_start:   yes
XXkb.controls.button_delete_and_forget: yes
XXkb.app_list.wm_name.ignore:   notification-area-applet Authentication Indicator mixer_applet2 Authentication Indicator Authentication Indicator Authentication Indicator Authentication Indicator kicker MPlayer
XXkb.app_list.wm_class_class.ignore:    kdesktop  xmms Stardict Grip
XXkb.app_list.wm_class_name.ignore:     korgac klipper
XXkb.mousebutton.1.reverse:     no
XXkb.mousebutton.3.reverse:     no
XXkb.mainwindow.xpm.1:  en48.xpm
XXkb.mainwindow.xpm.2:  ru48.xpm
##  XXkb.mainwindow.xpm.3:  ua48.xpm
XXkb.mainwindow.xpm.4:
XXkb.mainwindow.enable: no
XXkb.mainwindow.appicon:        no
XXkb.mainwindow.geometry:       48x48
XXkb.ignore.reverse:    no

та файл ~/.xxkbrc_ua наступного змісту:

XXkb.group.base:   1
XXkb.group.alt:    2
XXkb.button.xpm.1:      en15.xpm
XXkb.button.xpm.2:      ru15.xpm
XXkb.button.xpm.3:      ua15.xpm
XXkb.button.xpm.4:
XXkb.button.enable:     yes
XXkb.button.geometry:   15x15+22+3
XXkb.button.gravity:    NorthEast
XXkb.bell.enable:       no
XXkb.bell.percent:      -50
XXkb.controls.mainwindow_delete:        yes
XXkb.controls.button_delete:    yes
XXkb.controls.add_when_create:  yes
XXkb.controls.focusout: no
XXkb.controls.two_state:        no
##  XXkb.controls.two_state:        yes
XXkb.controls.add_when_change:  no
XXkb.controls.add_when_start:   yes
XXkb.controls.button_delete_and_forget: yes
XXkb.app_list.wm_name.ignore:   notification-area-applet Authentication Indicator mixer_applet2 Authentication Indicator Authentication Indicator Authentication Indicator Authentication Indicator kicker MPlayer
XXkb.app_list.wm_class_class.ignore:    kdesktop  xmms Stardict Grip
XXkb.app_list.wm_class_name.ignore:     korgac klipper
XXkb.mousebutton.1.reverse:     no
XXkb.mousebutton.3.reverse:     no
XXkb.mainwindow.xpm.1:  en48.xpm
XXkb.mainwindow.xpm.2:  ru48.xpm
XXkb.mainwindow.xpm.3:  ua48.xpm
XXkb.mainwindow.xpm.4:
XXkb.mainwindow.enable: no
XXkb.mainwindow.appicon:        no
XXkb.mainwindow.geometry:       48x48
XXkb.ignore.reverse:    no

Параметри XXkb.app_list.wm_name.ignore, XXkb.app_list.wm_class_class.ignore та XXkb.app_list.wm_class_name.ignore я залишив для прикладу (read man xxkb)

Також, в директорії, де ви складуєте свої повсякденні скрипти, треба скласти такий виконуваний скриптик, в мене це   ~/scripts/rxkb:

#!/bin/bash
cp ~/.xxkbrc_$1 ~/.xxkbrc
killall xxkb; xxkb &

Четверте:
Тепер все просто: в терміналі - ~/scripts/rxkb ru або  ~/scripts/rxkb ua. На ці комбінації можна видумати кей-біндінги в WM, якцо він це дозволяє. Користуватись результатом можна миттєво.

- Розкладки перемикаются такими кнопками, як ви задали в xorg.conf;
- розкладок буде стільки, скільки вказано в поточному ~/.xxkbrc, лише в xorg.conf вони повинні бути всі.
- порядок розташування прапорців XXkb.mainwindow.xpm.N та кнопок XXkb.button.xpm.N на них  повинні бути такими, як порядок розкладок в xorg.conf (кнопка потрібна, щоб можна було мишою клоцати по прапорцю, розкладка буде змінюватись на наступну);
- Розміри прапорців XXkb.button.geometry та їх розташування відносно краю верхньої панелі вікна редагуються, додавайте + або -, різні цифрі і ви все зрозумієте.

П'яте:
Не забудьте в startup скрипт свого WM написати щось тіпа xxkb & в потрибному місці, щоб xxkb стартував з менеджером вікон. В флюксі це стрипт ~/.fluxbox/startup

В мене все.

Востаннє редагувалося drfn (2007-08-31 21:43:05)

6

Re: Кожному вікну -- свою розкладку! :)

Дякую за детальні інструкції. Заінсталював, настроїв -- все працює smile
Скористався тільки одним прикладом конфіг-файлу. Тільки переробив на en-ua (російською майже не користуюсь).
Трохи розбирався з налагодженнями і отут вичитав, що можна в самій прозі виставити подвійний режим (two_state). Тобто маємо тоді два стани: базовий (напр. en-ru) і альтернативний (en-ru-ua). Тоді клацаючи лівою мишою перемикаєш циклічно розкладки, а правою -- з базового в альтернативний стан і навпаки.
Хоча скриптом перемикати теж вроді варіант -- кей-біндінги можна виставити...

7

Re: Кожному вікну -- свою розкладку! :)

В аплеті перемикання розкладки клавіатури в Xfce є така опція.

http://goodies.xfce.org/_media/projects/panel-plugins/xfce4-xkb-plugin-settings.png

TO LIVE IS TO DIE

8

Re: Кожному вікну -- свою розкладку! :)

Мерсі за пораду. Але в мене Опенбокс а не Хфсе.. люблю складності big_smile
А свою проблему я вже вирішив завдяки drfn-у. Велике йому спасибі за підказки.
xxkb -- могуча програмка! Саме те що я шукав smile

9

Re: Кожному вікну -- свою розкладку! :)

У зв`язку з оновленням xxkb, починаючи з версії пакету  xxkb-1.11-1.pkg.tar.gz, зявилися нові параметри в конфіг-файлі замість старих.

Так, в кожному конфізі замiсть
XXkb.button.xpm.1: en15.xpm
треба писати
XXkb.button.image.1:  en15.xpm

Також, додано параметри, без яких xxkb не стартує:

 XXkb.button.border.width: 0
 XXkb.button.border.color: #000000
 XXkb.button.label.enable: no
 XXkb.image.path: /usr/share/xxkb/

Значення перших трьох параметрів мої і написані , аби xxkb працював, що там треба писати насправді, я не знаю smile Працює як раніше і добре.
Останный параметр говоре сам за себе smile Я так розумію, ви тепер можете самі без рута написати свої картиночки і підкласти куди треба.

Востаннє редагувалося drfn (2007-10-10 22:06:46)

10

Re: Кожному вікну -- свою розкладку! :)

Для себе я зробив простіше - заінсталював axkb. Рекомендую!

"Дивовижний народ українці! Найбільші його вороги сконали своєю смертю" І. Драч