Bug 5336

Summary: Не работает циклическое переключение раскладки по левому Ctrl-Shift
Product: Sisyphus Reporter: Serge Polkovnikov <serge.polkovnikov>
Component: xorg-x11Assignee: Valery Inozemtsev <shrek>
Status: CLOSED WONTFIX QA Contact: qa-sisyphus
Severity: major    
Priority: P2 CC: eostapets, mike
Version: unstable   
Hardware: all   
OS: Linux   

Description Serge Polkovnikov 2004-10-15 14:35:21 MSD
Не работает _циклическое_ переключение раскладки по левому Ctrl-Shift. По 
правому - всё нормально (если конечно есть правый Ctrl, а то у меня на ноуте 
даже его нет). 
 
Ниже выдержка из xorg.conf: 
 
Section "InputDevice" 
 
    Identifier "Keyboard1" 
    Driver      "kbd" 
    Option "AutoRepeat"  "250 30" 
 
    Option "XkbModel" "pc105" 
    Option "XkbLayout" "us,ua,ru" 
    Option "XkbVariant"  ",winkeys,winkeys" 
    Option "XkbOptions"  "grp:ctrl_shift_toggle" 
 
EndSection
Comment 1 Valery Inozemtsev 2004-10-15 14:42:20 MSD
работает.  У Вас на ноутбуке действительно клавиатура с 105 клавишами? 
Comment 2 Serge Polkovnikov 2004-10-15 14:55:41 MSD
На ноуте - нет. Но дома - да. Там тоже не работает. Секция описания клавиатуры 
- аналогичная. Да в принципе - это проявилось везде где устанавливался xorg. 
Comment 3 Aleksandr Blokhin 2004-10-15 16:51:10 MSD
Подтверждаю! По левому Ctrl+Shift возможно только обратное переключение на US.
Вот мои настройки:

Section "InputDevice"

    Identifier "Keyboard1"
    Driver      "kbd"
    Option "AutoRepeat"  "250 30"

    Option "XkbModel" "pc105"
    Option "XkbLayout" "us,ru,ee"
    Option "XkbVariant"  ",winkeys,"
    Option "XkbOptions"  "grp:ctrl_shift_toggle,grp:switch"

EndSection
Comment 4 Valery Inozemtsev 2004-10-15 19:06:43 MSD
Это не бага, а фича

"Если установлено три языка, то комбинация левого или правого(или левого) Ctrl с 
левым Shift даёт переключение на предыдущюю раскладку. То есть если у 
меня UA - то на RU, а если RU - то на US и ни как иначе"
 
Shvidkiy Andrew in sisyphus@
Comment 5 Serge Polkovnikov 2004-10-15 19:16:16 MSD
>Это не бага, а фича 
 
>"Если установлено три языка, то комбинация левого или правого(или левого) 
>Ctrl с  
>левым Shift даёт переключение на предыдущюю раскладку. То есть если у  
>меня UA - то на RU, а если RU - то на US и ни как иначе" 
  
Правильно! Тока делать он должен это циклически, т.е. после английского должен 
переключится на украинский, потом на русский и т.д. - по кругу (см. правый 
Ctrl-Shift) 
 
Comment 6 Sasha Martsinuk 2004-10-16 10:23:29 MSD
Потверждаю.
Левый ctrl_shift только переключает из любой раскладки в английскую.

Повторяется не только в альтовой сборке X.org, но и в XFree86 4.4 на FreeBSD.

Незадокумментированая фича в апстриме?
Comment 7 Valery Inozemtsev 2005-09-06 16:54:51 MSD
// using the group(ctrl_shift_toggle) map, pressing:  
//     Control_L+Shift_L locks the previous group  
//     Control_R+Shift_R locks the next group  
// If you have two groups and group wrap is enabled, the effect is  
// indistinguishable.  
partial modifier_keys  
xkb_symbols "ctrl_shift_toggle" {  
    key <LFSH> {  
        type="PC_BREAK",  
        symbols[Group1]= [ Shift_L,     ISO_Prev_Group ]  
    };  
    key <RTSH> {  
        type="PC_BREAK",  
        symbols[Group1]= [ Shift_R,     ISO_Next_Group ]  
    };  
    key <LCTL>  {       [       Control_L,      ISO_Prev_Group ]        };  
    key <RCTL>  {       [       Control_R,      ISO_Next_Group ]        };  
};  
 
тоже самое для alt_shift_toggle, ctrl_alt_toggle и т.п. 
Comment 8 Vitaliy N. Borinskiy 2006-05-13 14:35:22 MSD
Может быть это и не баг, а фича... Мало ли, может кому-нибудь нравится такое
поведение переключателей, а для тех, кому не нравится есть решение.
/etc/X11/xkb/compat/iso9995:

вот здесь

interpret ISO_Prev_Group {                                                  
    useModMapMods= level1;                                                  
    virtualModifier= AltGr;                                                 
    action= LockGroup(group=-1);

вместо group=-1 пишем group=+2 (для 3-х раскладок, +3 для 4-х и т. д.)