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