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