xmodmap a ISO_Prev_Group a ISO_Next_Group (LONG)
    Jindrich Makovicka 
    jmakovicka_jr na volny.cz
       
    Středa Srpen 30 19:10:59 CEST 2000
    
    
  
Hi!
Zkousel jsem metodou pokus-omyl laborovat s XKB, specielne s 
definicemi dalsich grup. Nasledujici definice obsahuji 4 grupy, mezi 
kterymi se rotuje pomoci ScrollLocku a aktivni grupa se indikuje 
ledkama pro Caps a Scroll lock binarne. Jako mode switch o jednu, dve 
nebo 3 grupy funguji AltGr, pravy Ctrl a (win)Menu.
Pokud chcete, aby ISO_(Next|Prev)_Group rotovaly o dve grupy misto o 
jednu, tak do compat pridejte jeste
    interpret ISO_Next_Group {
        useModMapMods= level1;
        virtualModifier= AltGr;
        action= LockGroup(group=+2);
    };
    interpret ISO_Prev_Group {
        useModMapMods= level1;
        virtualModifier= AltGr;
        action= LockGroup(group=-2);
    };
Nebo muzete temhle symbolum nechat puvodni vyznam, v XKeysymDB 
definovat (viz nize) symbol ISO_*_Group2 (predtim se podivejte do 
include/X11/keysymdef.h a dejte si pozor na pripadne konflikty) a 
napsat
	interpret ISO_Next_Group2
	... (jako vyse)
	interpret ISO_Prev_Group2
	... (napodobne)
Potom budou ISO_*_Group rotovat o jednu grupu a ISO_*_Group2 o dve.
--- 8< ----------------------------------------------------- >8 ---
xkb/compat/space_cadet:
// This is a "default" compatibility with a small modification:
// "Scroll Lock" & "Caps Lock" LEDs now show the active keyboard group
default xkb_compatibility "space_cadet"  {
    include "basic"
    augment "mousekeys"
    augment "accessx(basic)"
    augment "misc"
    augment "iso9995"
    augment "japan"
    virtual_modifiers AltGr,RightCtrl,Menu;
    group 3 = RightCtrl;
    group 4 = Menu;
    interpret Mode_switch {
        useModMapMods= level1;
        virtualModifier= AltGr;
        action= SetGroup(group=2);
    };
    interpret Mode_switch2 {
        useModMapMods= level1;
        virtualModifier= RightCtrl;
        action= SetGroup(group=3);
    };
    interpret Mode_switch3 {
        useModMapMods= level1;
        virtualModifier= Menu;
        action= SetGroup(group=4);
    };
    // Yeah ... now Caps Lock & Scroll Lock LEDs display
    // the selected group in binary ...
    indicator "Scroll Lock" {
        allowExplicit;
        groups= Group2+Group4;
    };
    indicator "Caps Lock" {
        allowExplicit;
        groups= Group3+Group4;
    };
};
--- 8< ----------------------------------------------------- >8 ---
xkb/symbols/czskx: (upraveny czsk, pouze zkouska)
					...
xkb_symbols "us_cz_prog" {
    Name[Group1] = "US/ASCII";
    Name[Group2] = "Czech";
    Name[Group3] = "Datel";
    Name[Group4] = "Datel2";
    include "czskx(def_basic)"
    include "czskx(def_qwerty)"
    include "czskx(def_us_cz_prog)"
};
                   ...
    key <AD01> {	[	  q,	Q 		],
                        [	  q,	Q 		],
                        [	  z,	Z 		],
                        [	  a,	A 		]       
			    };
                   ...
    key <MENU> {	[	Mode_switch3, Multi_key		] };
				   ...
    modifier_map Mod3   { Mode_switch, Mode_switch2, Mode_switch3 };
					...
    key <RALT> {        [ Mode_switch,  Multi_key       	]       };
    key <RCTL> {        [ Mode_switch2, Multi_key       	]       };
					...
--- 8< ----------------------------------------------------- >8 ---
do XKeysymDB se prida na konec 
Mode_switch2		:77FD
Mode_switch3		:77FC
nebo jeste
ISO_Next_Group2		:neco
ISO_Prev_Group2		:neco_jineho
--- 8< ----------------------------------------------------- >8 ---
V XF86Config se zmeni XkbCompat a XkbKeymap:
XkbKeymap "czskx(us_cz_prog)"
XkbCompat "space_cadet"
--
Jindrich Makovicka
    
    
Další informace o konferenci Linux