[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#286581: xlibs: Error in key definition for Dutch keyboards



Hello Branden,

On Saturday 26 March 2005 07:18, Branden Robinson wrote:
> I've attached a patch.  Because I am unable to evaluate its correctness
> (not having a Dutch keyboard), I ask you to please evaluate it.  You
> can apply it to your running system by applying it as follows:

Thanks very much for creating the patch. On testing (after borrowing a 
Dutch keyboard to test with) however, I discovered there was a lot more 
wrong with the X definitions for Dutch keyboards.

The additional problems were:
- accent keys are expected to work as deadkeys;
- therefore, having accented characters defined (e.g. AltGr-a for á) is
  superfluous;
- EuroSign missing;
- a lot of characters were defined more than once (under different keys);
- some characters that were defined are not supported in iso-8859-15, the
  preferred encoding for Dutch.

I have therefore created two new files:
1 /etc/X11/xkb/symbols/nl
  .I have kept this file basic: only the characters actually printed on
   the keyboard (with the 'yen' as only exception)
  .This file has mainly been cleaned up; it is a subset of the second file
   (there are no differences in the characters that _are_ defined)
2 /etc/X11/xkb/symbols/pc/nl
  .This file is a bit more elaborate: it supports almost all "extra" 
   characters available in the iso-8859-15 encoding
  .This file is a complete rewrite and no longer depends on the definition
   for the 'latin' keymap

I have extensively tested the _second_ file as that was the one used on 
the command 'setxkbmap nl'.
I have not been able to find out how/when/where the _first_ file is used, 
but have of course reviewed the changes carefully.

The following link shows the new keymap definition:
http://home.tiscali.nl/isildur/debian/xkbd_nl.html

A few remarks on the new definition:
- The ~ key is not a deadkey because the tilde is rarely (if ever) used
  as an accent and because it _is_ used very often in Linux.
- There are some characters that are not defined in iso-8859-15. This is
  because Dutch keyboards were originally developed for iso-8859-1 which
  does have these characters. Because of the Euro iso-8859-15 is now
  preferred. Also, these keys _do_ work under X11 (provided you save your
  document in UTF encoding).
- Maybe it would be useful to create a "nodeadkeys" variant of this
  keymap, but I have left that for later.

A diff from the old definitions is attached as well as a tarbal with the 
new files.
I hope you do not find this patch too invasive. I've tried making a patch 
with only the most essential changes, but the result was unsatisfactory 
and even that patch got quite large.

If you can give me some hints on how the file /etc/X11/xkb/symbols/nl is 
used, I'd be more than happy to test that as well (if possible).

Cheers,
Frans

diff -ur symbols.orig/nl symbols/nl
--- symbols.orig/nl	2005-04-03 22:58:40.000000000 +0200
+++ symbols/nl	2005-04-03 22:59:16.000000000 +0200
@@ -3,12 +3,13 @@
 
 // converted from the nl-latin.map of the Linux kbd package by
 // Pablo Saratxaga <srtxg@f2219.n293.z2.fidonet.org>
+// Revised by Frans Pop <aragorn@tiscali.nl>, April 2005
 
 default partial alphanumeric_keys
 xkb_symbols "basic" {
 
     // Describes the differences between a very simple US/ASCII
-    // keyboard and a very simple Nederland keyboard
+    // keyboard and a very simple Dutch keyboard
 
     // Alphanumeric section
     name[Group1]= "Nederland";
@@ -22,7 +23,7 @@
     key <AE04> {	[         4,	dollar   	],
 			[ onequarter			]	};
     key <AE05> {	[         5,	percent  	],
-			[ EuroSign			]	};
+			[ onehalf			]	};
     key <AE06> {	[         6,	ampersand	],
 			[ threequarters			]	};
     key <AE07> {	[         7,	underscore	],
@@ -34,59 +35,40 @@
     key <AE10> {	[         0,	apostrophe	]	};
     key <AE11> {	[     slash,	question 	],
 			[ backslash			]	};
-    key <AE12> {	[    degree,	dead_tilde	],
-			[ dead_cedilla			]	};
+    key <AE12> {	[    degree,	asciitilde	],
+			[ dead_cedilla,	dead_tilde	]	};
     key <AD03> {	[         e,	E        	],
-			[    eacute,	Eacute   	]	};
+			[  EuroSign		   	]	};
     key <AD04> {	[         r,	R        	],
-			[ paragraph,	registered	]	};
-    key <AD05> {	[         t,	T        	],
-			[     thorn,	THORN    	]	};
+			[ paragraph		]	};
     key <AD06> {	[         y,	Y        	],
-			[ ydiaeresis,	yen      	]	};
-    key <AD07> {	[         u,	U        	],
-			[ udiaeresis,	Udiaeresis	]	};
-    key <AD08> {	[         i,	I        	],
-			[ idiaeresis,	Idiaeresis	]	};
-    key <AD09> {	[         o,	O        	],
-			[    ograve,	Ograve   	]	};
-    key <AD10> {	[         p,	P        	],
-			[ paragraph			]	};
-    key <AD11> {	[ dead_diaeresis,	dead_tilde	],
-			[ asciitilde,	asciicircum	]	};
+			[       yen			]	};
+    key <AD11> {	[ dead_diaeresis,	dead_circumflex	],
+			[ asciicircum			]	};
     key <AD12> {	[  asterisk,	bar      	]	};
-    key <AC01> {	[         a,	A        	],
-			[    aacute,	Aacute   	]	};
     key <AC02> {	[         s,	S        	],
 			[    ssharp			]	};
-    key <AC03> {	[         d,	D        	],
-			[       eth,	ETH      	]	};
-    key <AC04> {	[         f,	F        	],
-			[ ordfeminine,	ordfeminine	]	};
     key <AC10> {	[      plus,	plusminus	]	};
-    key <AC11> {	[ apostrophe,	grave    	],
-			[ dead_acute,	dead_grave	]	};
+    key <AC11> {	[ dead_acute,	dead_grave	],
+			[     grave			]	};
     key <TLDE> {	[        at,	section  	],
 			[   notsign			]	};
     key <BKSL> {	[      less,	greater  	]	};
     key <AB01> {	[         z,	Z        	],
 			[ guillemotleft			]	};
     key <AB02> {	[         x,	X        	],
-			[ guillemotright			]	};
+			[ guillemotright		]	};
     key <AB03> {	[         c,	C        	],
 			[      cent,	copyright	]	};
-    key <AB06> {	[         n,	N        	],
-			[    ntilde,	Ntilde   	]	};
     key <AB07> {	[         m,	M        	],
-			[  Greek_mu,	masculine	]	};
-    key <AB08> {	[     comma,	semicolon	],
-			[   cedilla,	guillemotleft	]	};
+			[        mu			]	};
+    key <AB08> {	[     comma,	semicolon	]	};
     key <AB09> {	[    period,	colon    	],
-			[ periodcentered,	guillemotright	]	};
+			[ periodcentered		]	};
     key <AB10> {	[     minus,	equal    	],
 			[    hyphen			]	};
-    key <LSGT> {	[ bracketleft,	bracketright	],
-			[       bar			]	};
+    key <LSGT> {	[ bracketright,	bracketleft	],
+			[ brokenbar			]	};
 
     // End alphanumeric section
 
diff -ur symbols.orig/pc/nl symbols/pc/nl
--- symbols.orig/pc/nl	2005-04-03 22:58:40.000000000 +0200
+++ symbols/pc/nl	2005-04-03 22:59:10.000000000 +0200
@@ -5,49 +5,68 @@
 
 // converted from the nl-latin.map of the Linux kbd package by
 // Pablo Saratxaga <srtxg@f2219.n293.z2.fidonet.org>
+// Revised by Frans Pop <aragorn@tiscali.nl>, April 2005
+
 //
 // $XFree86: xc/programs/xkbcomp/symbols/pc/nl,v 1.3 2003/04/19 12:22:12 pascal Exp $
 
 default partial alphanumeric_keys
 xkb_symbols "basic" {
 
-    include "pc/latin"
-
     name[Group1]="Nederland";
 
-    key <AE02>	{ [         2,   quotedbl,  twosuperior,    oneeighth ]	};
-    key <AE06>	{ [         6,  ampersand, threequarters, fiveeighths ]	};
-    key <AE07>	{ [         7, underscore,     sterling, seveneighths ]	};
-    key <AE08>	{ [         8,  parenleft,    braceleft,   VoidSymbol ]	};
-    key <AE09>	{ [         9, parenright,   braceright,   VoidSymbol ]	};
-    key <AE10>	{ [         0, apostrophe,   VoidSymbol,   VoidSymbol ]	};
+    key <TLDE>	{ [        at,    section,      notsign               ]	};
+    key <AE01>	{ [         1,     exclam,  onesuperior,   exclamdown ]	};
+    key <AE02>	{ [         2,   quotedbl,  twosuperior,    masculine ]	};
+    key <AE03>	{ [         3, numbersign, threesuperior, ordfeminine ]	};
+    key <AE04>	{ [         4,     dollar,   onequarter               ]	};
+    key <AE05>	{ [         5,    percent,      onehalf               ]	};
+    key <AE06>	{ [         6,  ampersand, threequarters              ]	};
+    key <AE07>	{ [         7, underscore,     sterling               ]	};
+    key <AE08>	{ [         8,  parenleft,    braceleft               ]	};
+    key <AE09>	{ [         9, parenright,   braceright               ]	};
+    key <AE10>	{ [         0, apostrophe,   VoidSymbol               ]	};
     key <AE11>	{ [     slash,   question,    backslash, questiondown ]	};
     key <AE12>	{ [    degree, asciitilde, dead_cedilla,   dead_tilde ]	};
 
-    key <AD03>	{ [         e,          E,       eacute,       Eacute ]	};
-    key <AD05>	{ [         t,          T,        thorn,        THORN ]	};
-    key <AD06>	{ [         y,          Y,   ydiaeresis,          yen ]	};
-    key <AD07>	{ [         u,          U,   udiaeresis,   Udiaeresis ]	};
-    key <AD08>	{ [         i,          I,   idiaeresis,   Idiaeresis ]	};
-    key <AD09>	{ [         o,          O,       ograve,       Ograve ]	};
-    key <AD10>	{ [         p,          P,   VoidSymbol               ]	};
+    key <AD01>	{ [         q,          Q,   VoidSymbol               ]	};
+    key <AD02>	{ [         w,          W,   VoidSymbol               ]	};
+    key <AD03>	{ [         e,          E,     EuroSign               ]	};
+    key <AD04>	{ [         r,          R,    paragraph,   registered ]	};
+    key <AD05>	{ [         t,          T,   VoidSymbol,    trademark ]	};
+    key <AD06>	{ [         y,          Y,          yen               ]	};
+    key <AD07>	{ [         u,          U,   VoidSymbol               ]	};
+    key <AD08>	{ [         i,          I,   VoidSymbol               ]	};
+    key <AD09>	{ [         o,          O,       oslash,     Ooblique ]	};
+    key <AD10>	{ [         p,          P,        thorn,        THORN ]	};
     key <AD11>	{ [dead_diaeresis, dead_circumflex, asciicircum       ]	};
     key <AD12>	{ [  asterisk,        bar,   VoidSymbol               ]	};
 
-    key <AC01>	{ [         a,          A,       aacute,       Aacute ]	};
-    key <AC04>	{ [         f,          F,  ordfeminine,  ordfeminine ]	};
-    key <AC10>	{ [      plus,  plusminus,   VoidSymbol               ]	};
+    key <AC01>	{ [         a,          A,           ae,           AE ]	};
+    key <AC02>	{ [         s,          S,       ssharp               ]	};
+    key <AC03>	{ [         d,          D,   VoidSymbol               ]	};
+    key <AC04>	{ [         f,          F,   VoidSymbol               ]	};
+    key <AC05>	{ [         g,          G,   VoidSymbol               ]	};
+    key <AC06>	{ [         h,          H,   VoidSymbol               ]	};
+    key <AC07>	{ [         j,          J,   VoidSymbol               ]	};
+    key <AC08>	{ [         k,          K,   VoidSymbol               ]	};
+    key <AC09>	{ [         l,          L,   VoidSymbol               ]	};
+    key <AC10>	{ [      plus,  plusminus,     multiply,     division ]	};
     key <AC11>	{ [dead_acute, dead_grave,        grave               ]	};
-    key <TLDE>	{ [        at,    section,      notsign,      notsign ]	};
-
     key <BKSL>	{ [      less,    greater,   VoidSymbol               ]	};
+    
+    key <LSGT>	{ [bracketright, bracketleft, brokenbar,   VoidSymbol ]	};
+    key <AB01>	{ [         z,          Z, guillemotleft              ]	};
+    key <AB02>	{ [         x,          X, guillemotright             ]	};
+    key <AB03>	{ [         c,          C,         cent,    copyright ]	};
+    key <AB04>	{ [         v,          V,   VoidSymbol               ]	};
+    key <AB05>	{ [         b,          B,   VoidSymbol               ]	};
     key <AB06>	{ [         n,          N,       ntilde,       Ntilde ]	};
-    key <AB07>	{ [         m,          M,           mu,    masculine ]	};
+    key <AB07>	{ [         m,          M,           mu               ]	};
     key <AB08>	{ [     comma,  semicolon,   VoidSymbol               ]	};
     key <AB09>	{ [    period,      colon, periodcentered             ]	};
-    key <AB10>	{ [     minus,      equal,       hyphen, dead_abovedot]	};
+    key <AB10>	{ [     minus,      equal,       hyphen,       macron ]	};
 
-    key <LSGT>	{ [bracketright, bracketleft, brokenbar               ]	};
 
     include "level3(ralt_switch)"
 };

Attachment: xkb_nl.tgz
Description: application/tgz


Reply to: