klavesnica pre X (viac znak. sad)
Peter Ivanyi
ivanyi na internet.sk
Čtvrtek Leden 28 19:21:29 CET 1999
Zdravím,
v poslednej dobe tu objavilo niekoľko otázok, týkajúcich sa
predmetu tohto majlu, prípadne k použitiu klávesnícs rozšíreným
počtom klavies. Skúsim zosumarizovať niektoré svoje poznatky.
Podľa dokumentácie XFree86 možno klávesnici pri použití
X keyboard extension priradiť max. 4 skupiny, kde skupina je
chápaná ako sada znakov, ktoré logicky patria k sebe a môžu
byť usporiadané na viacerých prepínaných úrovniach (shift
levels) v rámci danej sady. Napr. znaky `a' a `Shift+a',
čo reprezentuje znak `A', patria do jednej skupiny.
Vytvoril som nejakú skúšobnú mapu symbolov obsahujúcu
4 znakové sady, ktorá mapuje pôvodnu klávesu q, prepínanie
sady na nasledujúcu cez ScrollLock, na predchádzajúcu cez
Shift+ScrollLock, dočasné prepnutie pri podržaní klávesy
AltGr, klávesa Pause prepína vždy na prvú znakovú sadu.
Analogicky by si každý záujemca mohol dodefinovať ďaľšie
vlastné sady k svojej používanej mape najkorektnejšie asi
s využitím rozloženia symbolov z máp dodaných v distribúcii
XFree86 /usr/X11R6/lib/X11/xkb/symbols. Možný problém sa môže
vyskytnúť pri zobrazovaní symbolov/znakov, ktoré nie sú
obsiahnuté v zvolenom fonte.
V klávesnicovej sekcii súboru /etc/X11/XF86Config je možné
pridať k modifikátorom skupín klávesnice definovaných v mape
symbolov ďaľšie, napr. :
XkbOptions "grp:ctrl_shift_toggle"
kde Control_L+Shift_L prepne na predchádzajúcu znakovú sadu,
Control_R+Shift_R prepne na nasledujúcu znakovú sadu.
Krátke zhrnutie jednotlivých volieb klávesnicovej sekcie súboru
/etc/X11/XF86Config sa nachádza v súbore
/usr/X11R6/lib/X11/xkb/rules/xfree86.lst.
S pozdravom
Peter
----------------------------------------------------------------
// --- /usr/X11R6/lib/X11/xkb/symbols/test4 ---
// u mna XFree86-3.3.2
// Priklad 4 klav. map
// neobsadene klavesy v jednotl. mapach budu obsahovat znaky iso9995-3
partial default alphanumeric_keys
xkb_symbols "test" {
Name[Group1] = "mapa1";
Name[Group2] = "mapa2";
Name[Group3] = "mapa3";
Name[Group4] = "mapa4";
include "test4(basic)"
};
partial alphanumeric_keys
xkb_symbols "basic" {
key <AD01> { [ a, A ],
[ b, B ],
[ c, C ],
[ d, D ]
};
key <AD02> { [ w ]
};
key <CAPS> { [ Caps_Lock ]
};
key <LFSH> { [ Shift_L ]
};
key <RTSH> { [ Shift_R ]
};
key <SCLK> { [ ISO_Prev_Group, ISO_Next_Group ]
};
key <RALT> { [ Mode_switch ]
};
key <PAUS> { [ ISO_First_Group ]
};
modifier_map Shift { Shift_L, Shift_R };
modifier_map Lock { Caps_Lock };
modifier_map Mod3 { Mode_switch };
};
Kvôli reprodukovateľnosti uvádzam aj kláv. sekciu /etc/X11/XF86Config
----------------------------------------------------------------
Section "Keyboard"
Protocol "Standard"
AutoRepeat 500 5
XkbModel "pc102"
XkbLayout "test4"
XkbKeycodes "xfree86"
XkbTypes "default"
XkbCompat "default"
XkbSymbols "us(pc102)"
XkbGeometry "pc"
XkbRules "xfree86"
# XkbOptions "grp:ctrl_shift_toggle"
EndSection
Další informace o konferenci Linux