1

Тема: Три розкладки в Gnome

Як зробити в Gnome та його засобами три розкладки? Але не три підряд. А дві потрібних.
Тобто мені в основному треба en, ru. Але часто треба en,ua. Буває ще й так що треба всі три.. але рідко. В fluxbox я це вирішував за допомогою xxkb, скриптом підкладаючи xxkb різні конфіги та описував тут http://archlinux.org.ua/viewtopic.php?id=163.

А як таке або схоже зробити в Gnome?
Зараз в мене в xorg.conf : Option "XkbLayout"    "us,ru". А в аплеті розкладок Gnome я горемично додаю то російську то украінську до англійскої, бо перемикатись через три розкладки мені не зручно.

2

Re: Три розкладки в Gnome

Якщо налаштувати перемикання на Ctrl-Shift, то праві клавіші перемикають розкладки по порядку, а ліві - в зворотньому. Тому перемикатися через 3 розкладки не доводиться. В мене en,uk,ru.

TO LIVE IS TO DIE

3

Re: Три розкладки в Gnome

Теж гарне рішення. Але я про це не знав smile що так можна. Або не здогадався просто. До того ж звик користуватись r_win як перемикачем розкладки. PS: але дуже дякую, думаю, чи не перейти. Буду дивитись.

Та я вже встиг налаштувати xxkb. І хочу розповісти, як. В топіку Кожному вікну -- свою розкладку! я розповідав про налаштування xxkb для fluxbox. Але конфіги були не мої, і я не знаю чому, але воно не працювало в поєднанні: gnome, compiz-fision + emerald. Не працювало = не стартувало. Тому конфіг довелось переписати.

~/.xxkbrc

 # Common options
XXkb.image.path: /usr/share/xxkb

# Main window options
XXkb.mainwindow.enable: yes # type yes if want enable tray-icon
XXkb.mainwindow.appicon: no
XXkb.mainwindow.in_tray: true
XXkb.mainwindow.type: tray #param added in new version. values: normal, top, tray, wmaker
XXkb.mainwindow.geometry: 15x15+0+0
XXkb.mainwindow.image.1: en15.xpm
XXkb.mainwindow.image.2: ru15.xpm
XXkb.mainwindow.image.3: ua15.xpm
XXkb.mainwindow.label.enable: no

# Operation mode options
XXkb.controls.add_when_start: yes
XXkb.controls.add_when_create:  yes
XXkb.controls.add_when_change: no
XXkb.controls.focusout: no
XXkb.controls.button_delete: yes
XXkb.controls.button_delete_and_forget: no
## Control switching
XXkb.controls.two_state: yes
XXkb.group.base: 1 
XXkb.group.alt: 3

# The application window button options
XXkb.button.enable: yes # type yes if want enable per-windowed-icons
XXkb.button.geometry: 15x15+22+3 # on window title it is from left, like "window icon", then "layout icon"
XXkb.button.image.1: en15.xpm
XXkb.button.image.2: ru15.xpm
XXkb.button.image.3: ua15.xpm

## Needed params for default values
XXkb.mainwindow.image.4: ua15.xpm
XXkb.button.image.4: ua15.xpm
XXkb.button.border.width: 0
XXkb.button.border.color: #000000
XXkb.button.label.enable: no

# Bell options 
XXkb.bell.enable: no

далі требі xxkb засунути в автостарт гномовськоі сесії. З такою конфігурацією в оболонці gnome, compiz-fision + emerald працює так:
- В xorg.conf розкладки: us,ru,ua
- в треї значок розкладок (замість гномівького аплета)
- в window-title значок не відображується (не знаю чого, може це пов'язано з декоратором emerald, тому довелось класти значок в трей)
- на gnome-panel значок теж буде, він не функціональний і виглядає як глюк. Його можна видалити  колесом прокрутки миші.
- розкладки перемикаются згідно з xorg.conf налаштованою там клавішею.
- основна група - en, ru, альтернативна en,ua
- перемикання між групами:
-- правою кнопкою по перемикачу розкладок на обраному en - обирається група en, ru
-- правою кнопкою по перемикачу розкладок на обраному ru - обирається група en, ua
- xxkb запам'ятовує не лише обрані розкладки для кожно вікна, а ще й групи перемикання. наприклад в мене pidgin пам'ятає групи en,ru а firefox - en,ua

Є й глюки.
- перший і другий я вже описав - значок на gnome-panel та відсутність значка в window-title
- третій - якщо в різногрупових окнах обрати en (послідовно в кожному), то вони забувають про обрані групи і думають що  у всіх дефолтна en,ru.

4

Re: Три розкладки в Gnome

Знайшов ще один дивний спосіб перемикатись між трьома розкладками, схожий на той, що запропонував Romashka, але для клавіш rwin та lwin. А ctrl+shift я не можу використовувать тому що така комбінація виключає роботу цих клавіш в редагуванні тексту.

Оскільки xxkb при роботі в compiz+emerald інколи глючить , довелося шукать альтернативу.

Отже, поведінка перемикачів груп розкладок описується в файлі /usr/share/X11/xkb/symbols/group. Там я знайшов такий код:

// using the group(lwin_toggle) map, pressing the left Windows' logo key
// toggles groups.  If you use this map, you would declare you keyboard
// as pc101 or pc102 instead of pc104 or pc105.
partial modifier_keys
xkb_symbols "lwin_toggle" {
  virtual_modifiers AltGr;
  key <LWIN> {
    virtualMods= AltGr,
    symbols[Group1] = [ ISO_Next_Group ]
    };
};

// using the group(rwin_toggle) map, pressing the right Windows' logo key
// toggles groups.  If you use this map, you would declare you keyboard
// as pc101 or pc102 instead of pc104 or pc105.
partial modifier_keys
xkb_symbols "rwin_toggle" {
  virtual_modifiers AltGr;
  key <RWIN> {
    virtualMods= AltGr,
    symbols[Group1] = [ ISO_Next_Group ]
    };
};

Та в блоці для lwin_toggle змінив ISO_Next_Group на ISO_Prev_Group.

В xorg.conf довелося додати ще один перемикач

    Option "XkbRules"   "xorg"
    Option "XkbModel"   "pc102"
    Option "XkbLayout"  "us,ru,ua"
    Option "XkbVariant" ",winkeys,winkeys"
    Option "XkbOptions" "grp:rwin_toggle,grp:lwin_toggle,grp_led:scroll"

Гном підхватує налаштування та все працює. Доведеться звичайно звикати до другої клавіши - lwin, але на даний момент це найкраще рішення!

5

Re: Три розкладки в Gnome

Якось дивно звучить питання. Вже досить давно Володимир Лісівка розробив окрему розкладку для uk/ru, її можна знайти, наприклад, в гномі чи кедах як Ukrainian (unicode). Прикол її в тому, що використовується ОДНА розкладка для української і російської. По замовчуванню стоїть українська, друкування російських відбувається шляхом натискання клавіші правої Alt і відповідної клавіші: ы = Alt+і , э = Alt+є, ъ = Alt+ї, ё - Alt+е. Розкладка містить досить багато символів. Відповідно, щоб зробити це не в графічних менеджерах, а напряму в xorg, робите таке:

Section "InputDevice"
    Identifier     "Keyboard0"
    Driver         "evdev"
    Option "Device" "/dev/input/event1"
    Option         "XkbRules" "xorg"
    Option         "XkbModel" "pc105"
    Option         "XkbLayout" "us,ua"
    Option         "XkbVariant" ",unicode"
    Option         "XkbOptions" "grp:alt_shift_toggle,lv3:ralt_switch,grp_led:scroll"
EndSection

В даному випадку Ви будете тішитися переключанням по LeftAlt+LeftShift. Попробуйте, дуже зручно. Ця тема довго розжовувалася на http://linux.org.ua, врешті розкладка ввійшла у всі дистрибутиви, тільки мало хто її зауважив і не знає її переваги. Мені в повсякденному потрібно 4 мови, українська, російська, польська, англійська, то я користаюся  Option         "XkbLayout" "pl,ua", на pl ідуть польська і англійська, на ua(unicode) українська і російська. Бо дійсно, вколо переключати 4 розкладки це просто....

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