LINUX.ORG.RU

три раскладки


0

0

имеется три раскладки: англ, рус, укр.

возможно ли сделать переключение между англ <-> рус по альт-шифт, напирмер. а англ <-> укр по капсу, или контрол-шифт или еще как.


Re: три раскладки

WM/DE вестимо угадать должны. Или это под вендой? О_о

anonymous ()
Ответ на: Re: три раскладки от anonymous

Re: три раскладки

dwm

желательно чтобы эта гадость дальше ксорг.конф не вылезала. хотя все варианты интересны

Damned ()

Re: три раскладки

Поставь kkbswitch и не мучайся: первая раскладка = Ctrl+Alt+1, вторая = Ctrl+Alt+2 и т.д.

gabix ()

Re: три раскладки

Чего-то непонятно. Вот ты переключился, скажем, в русскую раскладку одной комбинацией, а потом нажал на комбинацию укр/инглиш. В какую он у тебя должен перейти: украинскую или английскую? Переключатель укр/инглиш как должен себя вести при уже выбранной до этого рус или инглиш? Ты не запутаешься?

Zubok ★★★★★ ()
Ответ на: Re: три раскладки от Zubok

Re: три раскладки

э.. ну какбы так. например переключение между основными (рус-англ) по алтшифт. а вот если нажать контрол-шифт то получаем украинскую. или как-то так.

если бы я такое встречал и знал или оно возможно, то не спрашивал бы.

может какой левел3 или как оно там называется..

Damned ()

Re: три раскладки

моежт setxkbmap на hotkeys привязать?

sdio ★★★★★ ()
Ответ на: Re: три раскладки от Damned

Re: три раскладки

я знаю два пути: через левел3 и через компоуз. когда я пробовал поставить авесам, левел3 не подошол, потому компоуз:

andrey@valkyrie ~ $ cat .XCompose
include "/usr/share/X11/locale/en_US.UTF-8/Compose"

<Multi_key> <Cyrillic_yeru> <Cyrillic_yeru> : "і" U0456
<Multi_key> <Cyrillic_YERU> <Cyrillic_YERU> : "І" U0406

<Multi_key> <Cyrillic_hardsign> <Cyrillic_hardsign> : "ї" U0457
<Multi_key> <Cyrillic_HARDSIGN> <Cyrillic_HARDSIGN> : "Ї" U0407

<Multi_key> <Cyrillic_e> <Cyrillic_e> : "є" U0454
<Multi_key> <Cyrillic_E> <Cyrillic_E> : "Є" U0404

<Multi_key> <backslash> <backslash> : "ґ" U0491
<Multi_key> <bar> <bar> : "Ґ" U0490

andrey@valkyrie ~ $

generatorglukoff ★★ ()
Ответ на: Re: три раскладки от Damned

Re: три раскладки

>э.. ну какбы так. например переключение между основными (рус-англ) по алтшифт. а вот если нажать контрол-шифт то получаем украинскую. или как-то так.

А немодальные переключения по трем комбинациям не годятся?

Вообще, мои ограниченные познания в икскабэ говорят, что сделать так, как ты хочешь проблематично. Можно попробовать сделать, например, следующий алгоритм:

Комбинация альтшифт выбирает режим тоггла: рус/лат или укр/лат (последовательно), а другая комбинация осуществляет сам тоггл в зависимости от текущего состояния, выбранного альтшифт. А можно еще попробовать так сделать: одна комбинация выбирает режим тоггла рус/лат, другая -- укр/лат, а третья непосредственно тоггл делает. Надо попробовать. Не знаю, получится ли.

Zubok ★★★★★ ()
Ответ на: Re: три раскладки от Damned

Re: три раскладки

Вот есть некий результат по решению задачки (немного отличной от
исходной). Alt+Shift переключает режим Рус/Лат либо Укр/Лат, а 
Crtl+Shift -- сам toggle делает. Это несколько похоже на хак, но
сделать лучше пока знаний не хватает. Идея такая. Делаем символ 
ISO_Next_Group_Lock прыгающим через одну группу, а ISO_Prev_Group_Lock
прыгающим через две. Определяем четыре группы us, us, ru, ua. На 
комбинацию Alt+Shift вешаем генерацию ISO_Next_Group_Lock, а на 
Ctrl+Shift вешаем ISO_Prev_Group_Lock. Проверить можно так

xkbcomp ~/my_keymap :0 (в нулевой дисплей)

Комбинации Alt+Shift и Ctrl+Shift (my_group) взяты прямо из xkb и 
подправлены. У меня вроде заработало, как предполагалось.

ъъъ ]]] ъъъ (переключаем режим) їїїїї ]]]]] їїїїї :)

=========================================
~/my_group:

partial modifier_keys 
xkb_symbols "ctrl_shift_toggle" {
    key <LFSH> {
        type[Group1]="PC_BREAK",
        symbols[Group1]= [ Shift_L,     ISO_Prev_Group_Lock ]
    };
    key <RTSH> {
        type[Group1]="PC_BREAK",
        symbols[Group1]= [ Shift_R,     ISO_Prev_Group_Lock ]
    };
    key <LCTL>  {       [       Control_L,      ISO_Prev_Group_Lock ]        };
    key <RCTL>  {       [       Control_R,      ISO_Prev_Group_Lock ]        };
};

partial modifier_keys 
xkb_symbols "alt_shift_toggle" {
    virtual_modifiers Alt;
    key <LALT> {
        symbols[Group1]= [ NoSymbol,    ISO_Next_Group_Lock ],
        virtualMods= Alt
    };
    key <RALT> {
        symbols[Group1]= [ NoSymbol,    ISO_Next_Group_Lock ],
        virtualMods= Alt
    };
    key <LFSH> {
        type[Group1]="PC_SYSRQ",
        symbols[Group1]= [ Shift_L,     ISO_Next_Group_Lock ]
    };
    key <RTSH> {
        type[Group1]="PC_SYSRQ",
        symbols[Group1]= [ Shift_R,     ISO_Next_Group_Lock ]
    };
};

===================================================
~/my_keymap:

xkb_keymap "my_model" {
        xkb_keycodes {
                include "xfree86"
        };
        xkb_types { include "complete" 
		    include "my_types" 
        };
        xkb_compatibility { 
		include "complete" 
		interpret ISO_Next_Group_Lock { action = LockGroup(group=+1); };
  		interpret ISO_Prev_Group_Lock { action = LockGroup(group=+2); };
	};
        xkb_symbols {
                include "pc(pc105)"
		include "us:1"
		include "us:2"
                include "ru(winkeys):3"
		include "ua:4"
		include "my_group(ctrl_shift_toggle)"
		include "my_group(alt_shift_toggle)"
        };
        xkb_geometry { include "pc(pc105)" };
};

Zubok ★★★★★ ()
Ответ на: Re: три раскладки от Zubok

Re: три раскладки

Ой, только ошибся в my_keymap. Там надо my_types убрать. Забыл.

~/my_keymap:

xkb_keymap "my_model" {
        xkb_keycodes {
                include "xfree86"
        };
        xkb_types { include "complete" };
        xkb_compatibility { 
		include "complete" 
		interpret ISO_Next_Group_Lock { action = LockGroup(group=+1); };
  		interpret ISO_Prev_Group_Lock { action = LockGroup(group=+2); };
	};
        xkb_symbols {
                include "pc(pc105)"
		include "us:1"
		include "us:2"
                include "ru(winkeys):3"
		include "ua:4"
		include "my_group(ctrl_shift_toggle)"
		include "my_group(alt_shift_toggle)"
        };
        xkb_geometry { include "pc(pc105)" };
};

Zubok ★★★★★ ()
Ответ на: Re: три раскладки от Zubok

Re: три раскладки

Да, похоже, можно покрасивее решить задачку с выбором ua/us и ru/us. У Ивана Паскаля есть похожий примерчик. А так как этот человек есть корифей в области xkb, то советую его почитать.

http://www.linux.org.ru/books/xkb/example4.html#2

Я еще думаю, что возможен такой вариант, что ты переключаешься между ru/us, а ua у тебя может быть включена с удержанием какой-нибудь выбранной кнопки с целью набора нужных украинских букв. Отпускаешь кнопку -- возвращается прежний режим. Но для этого тоже надо познать xkb. Я на 100% не уверен, что так можно делать. Но вот SetGroup, кажется, как раз такой режим переключения и осуществляет, судя по доке:

SetGroup Set current group, while the keys are held down.

LatchGroup Latch current group, until the next key is pressed.

LockGroup Lock current group, until the keys are pressed again.

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