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

Bug#291699: Support for ibook xkeymap



Package: xlibs
Version: 4.3.0.dfsg.1-10
Severity: wishlist
Tags: patch upstream

Hi,

I recently installed Debian testing on my iBook G4. This keyboard is
different from the Apple Desktop Keyboard. (cfr.
http://maconlinux.org/images/adbkeys.gif vs.
http://developer.apple.com/documentation/Hardware/Developer_Notes/Macintosh_CPUs-G4/iBookG4/3_Input-Output/chapter_4_section_13.html#//apple_ref/doc/uid/TP40001480-CH207-BCIDDBEG)

The most annyoing thing esp. for German users is the missing AltGr
functionality.

The included patch alows this setup:
# setxkbdmap -v 10
Setting verbose level to 10
locale is C
Applied rules from xfree86:
model:      ibook
layout:     de
variant:    nodeadkeys
Trying to build keymap using the following components:
keycodes:   xfree86(ibook)+aliases(qwertz)
types:      complete
compat:     complete
symbols:    pc/pc(pc105)+pc/de(nodeadkeys)
geometry:   macintosh(ibook)

For clarification, since kernel 2.6 the ppc keyboard code uses the input
driver and supplied PC-keycodes, hence the pc-keycodes and symbols are
correct.

This patch does:
- define an iBook keyboard geometry file
- map the Apple key to what AltGr does on a PC keyboard (Originally,
  this was mapped to windows menu keys, where I never heard of anyone
  using them, so IMHO the loss is minor. The other "Windows Key"
  emulation codes are already "taken" by the mouse button emulation
  kernel driver, so on an ibook, really noone misses them.)
- if you specify "ibook" as your keyboard model.

Bye,

Joerg

--- ./geometry/macintosh.orig	2005-01-22 14:44:45.169101088 +0100
+++ ./geometry/macintosh	2005-01-22 15:02:19.259854936 +0100
@@ -153,3 +153,119 @@
     }; // End of "Keypad" section
 
 }; // End of "default" geometry
+
+xkb_geometry "ibook" {
+
+    description= "iBook G4 Keyboard";
+    width= 325;
+    height= 200;
+
+    shape.cornerRadius= 1;
+    shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+    shape "HALF" { { [ 18, 9] }, { [2,1], [ 16, 8] } };
+    shape "BKSP" { { [ 28,18] }, { [2,1], [ 26,17] } };
+    shape "TAB"  { { [ 28,18] }, { [2,1], [ 26,17] } };
+    shape "RTRN" {
+    	{ [ 0,0], [ 18, 0], [18,37], [4,37], [4,18], [0,18] },
+	{ [ 2,1], [ 16, 1], [16,36], [6,36], [6,17], [2,17] } };
+    shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } };
+    shape "LMTA" { { [ 28,18] }, { [2,1], [ 26,17] } };
+    shape "LFSH" { { [ 23,18] }, { [2,1], [ 21,17] } };
+    shape "RTSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
+    shape "RALT" { { [ 23,18] }, { [2,1], [ 21,17] } };
+    shape "SPCE" { { [ 94,18] }, { [2,1], [ 92,17] } };
+
+    shape "POWR" { cornerRadius= 9, { [ 18, 18 ] } };
+
+    shape "LED"  { cornerRadius= 2, { [  4,  4 ] } };
+
+
+    indicator.onColor= "green";
+    indicator.offColor= "green30";
+    indicator.top= 67;
+    indicator.shape= "LED";
+    indicator "NumLock"     { shape = "LED"; top= 57; left= 152; };
+
+    text.color= "black";
+
+    section.left= 23;
+    row.left= 1;
+    key.shape= "NORM";
+    key.gap=  1;
+
+    section "Power" {
+        top= 16;
+	left= 240;
+	key.shape="POWR";
+	row {
+	    top= 1;
+	    keys { <POWR> };
+	};
+    }; // End of "Power" Section
+
+    section "Function" {
+	top= 52;
+	key.shape="HALF";
+	row {
+	    top= 1;
+	    keys {  <ESC>, 
+	           { <FK01>, 11 }, <FK02>, <FK03>, <FK04>, <FK05>,
+		   { <FK06>, 10 }, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>,
+		   { <FK12>, 11 }
+	    };
+	};
+    }; // End of "Function" section
+
+    section "Alpha" {
+	top= 62;
+	row {
+	    top= 1;
+	    keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+		   <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+		   <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
+	    };
+	};
+	row {
+	    top= 20;
+	    keys { { <TAB>, "TAB" },  <AD01>, <AD02>, <AD03>,
+                   <AD04>, <AD05>, <AD06>, <AD07>, <AD08>, <AD09>,
+                   <AD10>, <AD11>, <AD12>, { <RTRN>,  "RTRN" }
+	    };
+	};
+	row {
+	    top= 39;
+	    keys { { <CAPS>, "CAPS" }, <AC01>, <AC02>, <AC03>,
+                   <AC04>, <AC05>, <AC06>, <AC07>, <AC08>, <AC09>,
+		   <AC10>, <AC11>, <BKSL>
+	    };
+	};
+	row {
+	    top= 58;
+	    keys { { <LFSH>, "LFSH" }, <LSGT>, <AB01>, <AB02>, <AB03>,
+                   <AB04>, <AB05>, <AB06>, <AB07>, <AB08>, <AB09>,
+                   <AB10>, { <RTSH>, "RTSH" }
+	    };
+	};
+	row {
+	    top= 77;
+	    keys { <FN>, { <LCTL>, "LCTL" }, { <LALT>, "LALT" },
+                   { <RALT>, "RALT" },
+                   { <SPCE>, "SPCE" }, 
+	           { <RALT>, "RALT" }, <KPEN>
+	    };
+	};
+    }; // End of "Alpha" section
+    section "Cursor" {
+	key.shape="HALF";
+	top= 138;
+	left= 242;
+	row {
+	    top= 1;
+	    keys  { { <UP>, 20} };
+	};
+        row {
+	    top= 10;
+	    keys { <LEFT>, <DOWN>, <RGHT> };
+	};
+    }; // End of "Cursor section"
+};
--- ./keycodes/xfree86.orig	2005-01-20 08:25:10.000000000 +0100
+++ ./keycodes/xfree86	2005-01-22 15:07:03.359665200 +0100
@@ -12,6 +12,11 @@
     include "xfree86(basic)"
     <BKSL> =  51;
     <LSGT> =  94;
+    <RALT> = 113;
+    // Microsoft keyboard extra keys
+    <LWIN> = 115;
+    <RWIN> = 116;
+    <MENU> = 117;
 };
 
 xkb_keycodes "basic" {
@@ -79,11 +84,6 @@
     <LCTL> =  37;
     <SPCE> =  65;
     <RCTL> = 109;
-    <RALT> = 113;
-    // Microsoft keyboard extra keys
-    <LWIN> = 115;
-    <RWIN> = 116;
-    <MENU> = 117;
 
     <ESC>  =   9;
     <FK01> =  67;
@@ -258,7 +258,7 @@
     // <I5B> =   219;
     // <I5C> =   220;
     // <I5D> =   221;
-    <I5E> =   222;
+    // <I5E> =   222;
     <I5F> =   223;
     <I60> =   224;
     <I61> =   225;
@@ -356,6 +356,18 @@
     <BKSL> = 94;
     <AC12> = 51;
     <KPPT> = 134;
+    // Microsoft keyboard extra keys
+    <LWIN> = 115;
+    <RWIN> = 116;
+    <MENU> = 117;
 };
 
 
+xkb_keycodes "ibook" {
+    include "xfree86(basic)"
+    <RALT> = 115;
+    <BKSL> =  51;
+    <LSGT> =  94;
+    <POWR> = 222;
+};
+
--- ./rules/xfree86.orig	2005-01-20 21:29:23.000000000 +0100
+++ ./rules/xfree86	2005-01-22 12:17:15.840403536 +0100
@@ -25,6 +25,7 @@
   powerpcps2	=	powerpcps2
   pc98		=	xfree98(pc98)
   abnt2		=	xfree86(abnt2)
+  ibook		=	xfree86(ibook)
   *		=	xfree86
 
 ! $azerty = be fr fr-latin9
@@ -53,6 +54,7 @@
   winbook	=	winbook(XP5)
   pc98		=	nec(pc98)
   abnt2		=	pc
+  ibook		=	macintosh(ibook)
   macintosh	=	macintosh(macintosh)
   macintosh_old	=	macintosh(macintosh)
   *		=       pc(pc104)

Attachment: signature.asc
Description: Digital signature


Reply to: