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