XFree86 4.1 a ceska klavesnice [long]
Pavel Janík
Pavel na Janik.cz
Středa Srpen 29 14:00:25 CEST 2001
X-Face: $"d&^B_IKlTHX!y2d,3;grhwjOBqOli]LV`6d]58%5'x/kBd7.MO&n3bJ na Zkf&RfBu|^qL+
?/Re{MpTqanXS2'~Qp'J2p^M7uM:zp[1Xq#{|C!*'&NvCC[9!|=>#qHqIhroq_S"MH8nSH+d^9*BF:
iHiAs(t(~b#1.{w.d[=Z
Date: Wed, 29 Aug 2001 14:00:23 +0200
Message-ID: <m3zo8j6ppk.fsf na SnowWhite.SuSE.cz>
Lines: 94
User-Agent: Gnus/5.090004 (Oort Gnus v0.04) Emacs/21.0.105
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
--=-=-=
Content-Type: text/plain; charset=iso-8859-2
Content-Transfer-Encoding: 8bit
Zdravím,
byl jsem požádán o forward následující e-mailu do konference. Pokud budete
odpovídat, prosím nechejte v CC: jako konferenci, tak i původního autora.
Protože e-mail má přílohu, kterou jsem doopravdy přiložil ;-), a já nevím,
jaká pravidla přesně používá listserver k jejich ořezávání, umístil jsem ji
na http://www.janik.cz/tmp/cz_and_sk_kb.diff
(To ktoman: prosím podívej se dovnitř toho patche - jsou tam i drobnosti
(X<->Z), které je možné okamžitě opravit bez nějaké další diskuse.)
(To peak: mimochodem, kendy byl na střední škole v abecedě o jedno místo
přede mnou v abecedním pořádku... A pak žé má teorie nefunguje ;-)
--- cut here ---
Dobry den,
neodebiram linux na linux.cz, proto prosim Pavla o forward...
Jak jiz subject napovida, jedna se o v soucasne dobe dost diskutovany
problem. Nez budu prezentovat sve reseni, pokusim se o shrnuti:
1. czsk bylo znacne nestandartni
2. cs mirne nefungovalo (do 17.7.2000, kdy jsem je pro distribuci SuSE
opravil a pridal cs_qwerty)
Pro klavesnice jinych zemi obvykle distribuce do XF86configu pripisuji:
Section "InputDevice"
Driver "keyboard"
Identifier "Keyboard[0]"
Option "Protocol" "Standard"
Option "XkbKeyCodes" "xfree86"
Option "XkbLayout" *** potrebny layout ***
Option "XkbModel" "pc104"
Option "XkbRules" "xfree86"
EndSection
Pro cs ci cs_qwerty bylo potreba pridat jeste radek
Option "XkbOptions" "grp:shift_toggle"
ktery nezapricinoval nic jineho, nez prepinani pomoci Shift+Shift.
Jiz tedy samotne cs ci cs_qwerty se chovalo standardne ve smyslu "neni
potreba se chovat specialne k ceske klavesnici".
V XF 4.1 se objevily klavesnice cz* a sk*, ktere se mi libi, maji ale
jednu vadu: Kdyz pouzijete
Option "XkbOptions" "grp:shift_toggle"
pomoci shift+shift se prepnete do naprosto podivne klavesnice (vesmes
ruzne symboly, nevim, odkud to pochazi).
Protoze prepinani group pomoci shift+shift uzivatelum chybi (a _neni_ to
"evil", podivejte se napr. na kanadskou klavesnici; specifikace xkb
dle zbezneho prolistovani se take k nekolika groupam nestavi zaporne),
rozhodl jsem se je zase pridat. Jdu (alespon si myslim) nejstandardnejsi
cestou:
1. nadefinoval jsem rozlozeni us_group2 (vychazi z us, je podobne
us_group3), ktere ma standardni US rozlozeni _ve_druhe_groupe_.
2. na zacatek cz a sk jsem pridal include "us_group2" a include
"group(shift_toggle)".
Takove rozlozeni funguje pro prvne zmineny vynatek z XF86configu. Dale lze
v XF86configu zmenit prepinac group na cokoli jineho pomoci
Option "XkbOptions" "grp:ctrl_shift_toggle"
V neposledni rade funguje naprosto bez problemu
setxkbmap cz
setxkbmap us
setxkbmap sk_qwerty
takze ani ruzne externi utility na prepinani mezi rozlozenimi by nemely
mit problemy.
Prikladam patch, ktery zrejme bude v pristi verzi SuSE Linuxu. Pokud jej
chteji pouzit i jini, budu jedine rad :-)
S pozdravem,
Kendy
--
Jan Holesovsky
SuSE CR, s.r.o. e-mail: kendy na suse.cz
Drahobejlova 27 tel:+420 2 830 95 373 (fax 374)
190 00 Praha 9, Czech Republic http://www.suse.cz
--- cut here ---
--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=cz_and_sk_kb.diff
Content-Description: XFree86 patch
--- programs/xkbcomp/symbols/Imakefile Sat Jun 2 09:16:37 2001
+++ programs/xkbcomp/symbols/Imakefile Tue Aug 28 15:34:01 2001
@@ -14,7 +14,7 @@
keypad lock lt lt_std lt_p lv mk no pc104 \
pl pt \
ralt ro ru se si sk sk_qwerty sr th ua us us_intl \
- us_group3 vn tr
+ us_group2 us_group3 vn tr
SUBDIRS = digital fujitsu hp macintosh nec sgi sony sun xfree68
MakeXkbDir($(LIBDIR)/xkb,symbols)
--- programs/xkbcomp/symbols/cz Sat May 19 01:35:35 2001
+++ programs/xkbcomp/symbols/cz Tue Aug 28 18:14:32 2001
@@ -9,6 +9,11 @@
// to satisfy most unix, windows and mac users.
// 2001 by Kamil Toman <ktoman na email.cz>
+ // Switching to US added by Jan Holesovsky <kendy na suse.cz>, 2001
+
+ include "us_group2(basic)"
+ include "group(shift_toggle)"
+
name[Group1]= "Czech";
key.type = "FOUR_LEVEL";
--- programs/xkbcomp/symbols/cz_qwerty Sat May 19 01:35:35 2001
+++ programs/xkbcomp/symbols/cz_qwerty Tue Aug 28 18:16:43 2001
@@ -4,12 +4,13 @@
xkb_symbols "basic" {
// This layout should work exactly as a cz with the exception
- // of 'X' and 'Y' keys, which are in the qwerty style (ie. swapped).
+ // of 'Z' and 'Y' keys, which are in the qwerty style (ie. swapped).
// 2001 by Kamil Toman <ktoman na email.cz>
include "cz(basic)"
key <AB01> { [ z, Z,
degree, NoSymbol ] };
- key <AD06> { [ y, Y, NoSymbol, NoSymbol ] };
+ key <AD06> { [ y, Y,
+ NoSymbol, NoSymbol ] };
};
--- programs/xkbcomp/symbols/sk Sat May 19 01:35:35 2001
+++ programs/xkbcomp/symbols/sk Tue Aug 28 18:14:07 2001
@@ -9,6 +9,11 @@
// to satisfy most unix, windows and mac users.
// 2001 by Kamil Toman <ktoman na email.cz>
+ // Switching to US added by Jan Holesovsky <kendy na suse.cz>, 2001
+
+ include "us_group2(basic)"
+ include "group(shift_toggle)"
+
name[Group1] = "Slovak";
key.type = "FOUR_LEVEL";
--- programs/xkbcomp/symbols/sk_qwerty Sat May 19 01:35:35 2001
+++ programs/xkbcomp/symbols/sk_qwerty Tue Aug 28 18:16:54 2001
@@ -4,12 +4,13 @@
xkb_symbols "basic" {
// This layout should work exactly as a sk with the exception
- // of 'X' and 'Y' keys, which are in the qwerty style (ie. swapped).
+ // of 'Z' and 'Y' keys, which are in the qwerty style (ie. swapped).
// 2001 by Kamil Toman <ktoman na email.cz>
include "sk(basic)"
key <AB01> { [ z, Z,
degree, NoSymbol ] };
- key <AD06> { [ y, Y, NoSymbol, NoSymbol ] };
+ key <AD06> { [ y, Y,
+ NoSymbol, NoSymbol ] };
};
--- programs/xkbcomp/symbols/us_group2 Thu Jan 1 01:00:00 1970
+++ programs/xkbcomp/symbols/us_group2 Tue Aug 28 13:39:49 2001
@@ -0,0 +1,277 @@
+// $Xorg: us,v 1.3 2000/08/17 19:54:44 cpqbld Exp $
+
+// symbols definition for a very simple US/ASCII layout.
+// It has basically the alphanumeric keys, punctuation,
+// one shift key, one control key and caps lock. It
+// uses the punctuation keys configurations common on PC
+// keyboards (e.g. key <ABO9> is { [], [ period greater ] })
+
+// This file is a modified version of US keyboard for
+// use mainly in cz* and sk* keyboards.
+// Modified by Jan Holesovsky <kendy na suse.cz>, 2001
+
+// $XFree86: xc/programs/xkbcomp/symbols/us,v 3.10 2001/01/17 23:45:59 dawes Exp $
+
+partial hidden alphanumeric_keys modifier_keys
+xkb_symbols "basic" {
+
+ name[Group2]= "US/ASCII";
+ key <ESC> { [], [ Escape ] };
+
+ // Alphanumeric section
+ key <TLDE> { [], [ quoteleft, asciitilde ] };
+ key <AE01> { [], [ 1, exclam ] };
+ key <AE02> { [], [ 2, at ] };
+ key <AE03> { [], [ 3, numbersign ] };
+ key <AE04> { [], [ 4, dollar ] };
+ key <AE05> { [], [ 5, percent ] };
+ key <AE06> { [], [ 6, asciicircum ] };
+ key <AE07> { [], [ 7, ampersand ] };
+ key <AE08> { [], [ 8, asterisk ] };
+ key <AE09> { [], [ 9, parenleft ] };
+ key <AE10> { [], [ 0, parenright ] };
+ key <AE11> { [], [ minus, underscore ] };
+ key <AE12> { [], [ equal, plus ] };
+ key <BKSP> { [], [ BackSpace ] };
+
+ key <TAB> { [], [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [], [ q, Q ] };
+ key <AD02> { [], [ w, W ] };
+ key <AD03> { [], [ e, E ] };
+ key <AD04> { [], [ r, R ] };
+ key <AD05> { [], [ t, T ] };
+ key <AD06> { [], [ y, Y ] };
+ key <AD07> { [], [ u, U ] };
+ key <AD08> { [], [ i, I ] };
+ key <AD09> { [], [ o, O ] };
+ key <AD10> { [], [ p, P ] };
+ key <AD11> { [], [ bracketleft, braceleft ] };
+ key <AD12> { [], [ bracketright, braceright ] };
+ key <RTRN> { [], [ Return ] };
+
+ key <CAPS> { [], [ Caps_Lock ] };
+ key <AC01> { [], [ a, A ] };
+ key <AC02> { [], [ s, S ] };
+ key <AC03> { [], [ d, D ] };
+ key <AC04> { [], [ f, F ] };
+ key <AC05> { [], [ g, G ] };
+ key <AC06> { [], [ h, H ] };
+ key <AC07> { [], [ j, J ] };
+ key <AC08> { [], [ k, K ] };
+ key <AC09> { [], [ l, L ] };
+ key <AC10> { [], [ semicolon, colon ] };
+ key <AC11> { [], [ quoteright, quotedbl ] };
+
+ key <LFSH> { [], [ Shift_L ] };
+ key <AB01> { [], [ z, Z ] };
+ key <AB02> { [], [ x, X ] };
+ key <AB03> { [], [ c, C ] };
+ key <AB04> { [], [ v, V ] };
+ key <AB05> { [], [ b, B ] };
+ key <AB06> { [], [ n, N ] };
+ key <AB07> { [], [ m, M ] };
+ key <AB08> { [], [ comma, less ] };
+ key <AB09> { [], [ period, greater ] };
+ key <AB10> { [], [ slash, question ] };
+ key <BKSL> { [], [ backslash, bar ] };
+
+ key <LCTL> { [], [ Control_L ] };
+ key <SPCE> { [], [ space ] };
+ // End alphanumeric section
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_L };
+ modifier_map Lock { Caps_Lock };
+ modifier_map Control{ Control_L };
+};
+
+// definition of a US/ASCII layout for a typical 101-key keyboard.
+// Includes the basic alphanumeric and punctuation keys and then
+// defines the "extra" (right) modifier keys, function keys, cursor,
+// edit, and keypad keys.
+xkb_symbols "generic101" {
+ include "us_group2(basic)"
+ key <RTSH> { [], [ Shift_R ] };
+ key <LALT> { [], [ Alt_L ] };
+ key <RCTL> { [], [ Control_R ] };
+ key <RALT> { [], [ Alt_R ] };
+
+ // Begin "Function" section
+ key <FK01> { [], [ F1 ] };
+ key <FK02> { [], [ F2 ] };
+ key <FK03> { [], [ F3 ] };
+ key <FK04> { [], [ F4 ] };
+ key <FK05> { [], [ F5 ] };
+ key <FK06> { [], [ F6 ] };
+ key <FK07> { [], [ F7 ] };
+ key <FK08> { [], [ F8 ] };
+ key <FK09> { [], [ F9 ] };
+ key <FK10> { [], [ F10 ] };
+ key <FK11> { [], [ F11 ] };
+ key <FK12> { [], [ F12 ] };
+ // End "Function" section
+
+ // Begin "Editing" section
+ key <PRSC> {
+ type= "PC_SYSRQ",
+ symbols[Group2]= [], [ Print, Sys_Req ]
+ };
+ key <SYRQ> {
+ type= "PC_SYSRQ",
+ symbols[Group2]= [], [ Print, Sys_Req ]
+ };
+ key <SCLK> { [], [ Scroll_Lock ] };
+ key <PAUS> {
+ type= "PC_BREAK",
+ symbols[Group2]= [], [ Pause, Break ]
+ };
+ key <BRK> {
+ type= "PC_BREAK",
+ symbols[Group2]= [], [ Pause, Break ]
+ };
+ key <INS> { [], [ Insert ] };
+ key <HOME> { [], [ Home ] };
+ key <PGUP> { [], [ Prior ] };
+ key <DELE> { [], [ Delete ] };
+ key <END> { [], [ End ] };
+ key <PGDN> { [], [ Next ] };
+
+ key <UP> { [], [ Up ] };
+ key <LEFT> { [], [ Left ] };
+ key <DOWN> { [], [ Down ] };
+ key <RGHT> { [], [ Right ] };
+
+ // End "Editing" section, begin "Keypad"
+ key <NMLK> { [], [ Num_Lock, Pointer_EnableKeys ] };
+ key <KPDV> { [], [ KP_Divide ] };
+ key <KPMU> { [], [ KP_Multiply ] };
+ key <KPSU> { [], [ KP_Subtract ] };
+
+ key <KP7> { [], [ KP_Home, KP_7 ] };
+ key <KP8> { [], [ KP_Up, KP_8 ] };
+ key <KP9> { [], [ KP_Prior, KP_9 ] };
+ key <KPAD> { [], [ KP_Add ] };
+
+ key <KP4> { [], [ KP_Left, KP_4 ] };
+ key <KP5> { [], [ KP_Begin, KP_5 ] };
+ key <KP6> { [], [ KP_Right, KP_6 ] };
+
+ key <KP1> { [], [ KP_End, KP_1 ] };
+ key <KP2> { [], [ KP_Down, KP_2 ] };
+ key <KP3> { [], [ KP_Next, KP_3 ] };
+ key <KPEN> { [], [ KP_Enter ] };
+
+ key <KP0> { [], [ KP_Insert, KP_0 ] };
+ key <KPDL> { [], [ KP_Delete, KP_Decimal ] };
+ // End "Keypad" section
+
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_R };
+ modifier_map Control{ Control_R };
+ modifier_map Mod1 { Alt_L, Alt_R };
+ modifier_map Mod2 { Num_Lock };
+ modifier_map Mod5 { Scroll_Lock };
+};
+
+// definition for the PC-AT type 101 key keyboard
+default
+xkb_symbols "pc101" {
+ include "us_group2(generic101)"
+ key <LALT> { [], [ Alt_L, Meta_L ] };
+ key <RALT> { [], [ Alt_R, Meta_R ] };
+
+ // begin modifier mappings
+ modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
+};
+
+// definition for the extra key on 102-key keyboards
+xkb_symbols "pc102" {
+ include "us_group2(pc101)"
+ key <LSGT> { [], [ less, greater ] };
+};
+
+// definition of Euro-style, Alt_R == [Mode_switch, Multi_key]
+xkb_symbols "pc101euro" {
+ include "us_group2(generic101)"
+ key <LALT> { [], [ Alt_L, Meta_L ] };
+ key <RALT> { [], [ Mode_switch, Multi_key ] };
+
+ // begin modifier mappings
+ modifier_map Mod1 { Alt_L, Meta_L };
+};
+
+// definition of Alternate Euro-style, Alt_R == [Multi_key]
+xkb_symbols "pc101compose" {
+ include "us_group2(generic101)"
+ key <LALT> { [], [ Alt_L, Meta_L ] };
+ key <RALT> { [], [ Multi_key ] };
+
+ // begin modifier mappings
+ modifier_map Mod1 { Alt_L, Meta_L };
+};
+
+xkb_symbols "pc102euro" {
+ include "us_group2(pc101euro)"
+ key <LSGT> { [], [ less, greater ] };
+};
+
+xkb_symbols "pc102compose" {
+ include "us_group2(pc101compose)"
+ key <LSGT> { [], [ less, greater ] };
+};
+
+// definition for the extra keys on 104-key "Windows95" keyboards
+xkb_symbols "pc104" {
+ include "us_group2(generic101)"
+ key <LALT> { [], [ Alt_L ] };
+ key <RALT> { [], [ Alt_R ] };
+ key <LWIN> { [], [ Meta_L ] };
+ key <RWIN> { [], [ Multi_key ] };
+ key <MENU> { [], [ Menu ] };
+
+ // modifier mappings
+ modifier_map Mod1 { Alt_L, Alt_R };
+ modifier_map Mod4 { Meta_L, Meta_R };
+};
+
+// definition of Euro-style, Right "logo" key == [Mode_switch, Multi_key]
+xkb_symbols "pc104euro" {
+ include "us_group2(pc104)"
+ key <RALT> { [], [ Mode_switch ] };
+ key <RWIN> { [], [ Multi_key ] };
+};
+
+// put the compose key on the right "logo" key
+xkb_symbols "pc104compose" {
+ include "us_group2(pc104)"
+ key <RWIN> { [], [ Multi_key ] };
+};
+
+// defintion which includes both the Windows95 keyboards _and_
+// the extra key on most European keyboards.
+xkb_symbols "pc105" {
+ include "us_group2(pc104)"
+ key <LSGT> { [], [ less, greater ] };
+};
+xkb_symbols "pc105euro" {
+ include "us_group2(pc104euro)"
+ key <LSGT> { [], [ less, greater ] };
+};
+xkb_symbols "pc105compose" {
+ include "us_group2(pc104compose)"
+ key <LSGT> { [], [ less, greater ] };
+};
+// universal maps are identical to pc105; wish we had aliases for map names.
+xkb_symbols "pc_universal" {
+ include "us_group2(pc104)"
+ key <LSGT> { [], [ less, greater ] };
+};
+xkb_symbols "pc_universal_euro" {
+ include "us_group2(pc104euro)"
+ key <LSGT> { [], [ less, greater ] };
+};
+xkb_symbols "pc_universal_compose" {
+ include "us_group2(pc104compose)"
+ key <LSGT> { [], [ less, greater ] };
+};
--=-=-=
Content-Type: text/plain; charset=iso-8859-2
Content-Transfer-Encoding: 8bit
--
Pavel Janík
When you're in a fight with an idiot, it's difficult for other people to tell
which one the idiot is.
-- Bruce Perens on debian-devel
--=-=-=--
Další informace o konferenci Linux