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

Re: Configure keys for my keyboard



Peter Cordes <peter@llama.nslug.ns.ca> writes:
> If you haven't tried xkeycaps, then you should.  It's great :)
> Unless you need some serious keyboard kung fu, xkeycaps should
> handle all the dirty work and spit out an xmodmap input file.  (This
> won't help if you're going to mess with the xkb defs, though.)

Yeah, also, if you've got one of the newer apple keyboards (the full
sized USB "Pro Keyboard") or the Lombard (probably other powerbooks as
well) the attached patch may be useful:

diff -urN xkeycaps-2.46/kbds/all-kbds.h xkeycaps-2.46.huber/kbds/all-kbds.h
--- xkeycaps-2.46/kbds/all-kbds.h	Sun Dec 12 20:13:39 1999
+++ xkeycaps-2.46.huber/kbds/all-kbds.h	Thu Jan 25 13:04:34 2001
@@ -88,6 +88,27 @@
 #endif
 
 #ifdef KBD
+  KBD ("MacProUSB", "Apple", "Pro Keyboard USB (XFree86; US)", 0,
+       &macpro104_geom, macpro104_caps, macpro104_codes, mac_linux_input_map),
+#else
+# include "macpro104-geom.h"
+# include "macpro104-caps.h"
+# include "macpro104-codes.h"
+# include "mac-linux-input-map.h"
+#endif
+
+#ifdef KBD
+  KBD ("MacLombard", "Apple", "PowerBook [Lombard] (XFree86; US)", 0,
+       &maclombard_geom, maclombard_caps, maclombard_codes,
+       mac_linux_input_map),
+#else
+# include "maclombard-geom.h"
+# include "maclombard-caps.h"
+# include "maclombard-codes.h"
+# include "mac-linux-input-map.h"
+#endif
+
+#ifdef KBD
   KBD ("MacADB", "Apple", "Standard ADB (NetBSD; US)", 0,
        &macstd_geom, macstd_caps, macstd_codes, macstd_map),
 #else
diff -urN xkeycaps-2.46/kbds/mac-linux-input-map.h xkeycaps-2.46.huber/kbds/mac-linux-input-map.h
--- xkeycaps-2.46/kbds/mac-linux-input-map.h	Wed Dec 31 19:00:00 1969
+++ xkeycaps-2.46.huber/kbds/mac-linux-input-map.h	Thu Jan 25 14:14:45 2001
@@ -0,0 +1,131 @@
+#ifndef __MAC_LINUX_INPUT_MAP_H__
+#define __MAC_LINUX_INPUT_MAP_H__
+
+/* 
+ * This file was generated from a machine running Linux, with the new
+ * input layer enabled.  The input layer translates Apple style scancodes
+ * to PC style scancodes for better compatibility out of the box.  We
+ * still need a special map file due to the extra keys on a mac keyboard.
+ *
+ * - Josh Huber <huber@alum.wpi.edu>, 1/25/2001
+ *
+ */
+
+static const struct default_keycode_map mac_linux_input_map [] = {
+	/* these keys have keycodes but no keysyms in the default map */
+	{  93, 0, { 0 }}, /* F13 */
+	{ 133, 0, { 0 }}, /* Left Command */
+	{ 134, 0, { 0 }}, /* Right Command */
+
+	{   9, 0,		{ XK_Escape }},
+	{  10, 0,		{ XK_1,	XK_exclam }},
+	{  11, 0,		{ XK_2,	XK_at }},
+	{  12, 0,		{ XK_3,	XK_numbersign }},
+	{  13, 0,		{ XK_4,	XK_dollar }},
+	{  14, 0,		{ XK_5,	XK_percent }},
+	{  15, 0,		{ XK_6,	XK_asciicircum }},
+	{  16, 0,		{ XK_7,	XK_ampersand }},
+	{  17, 0,		{ XK_8,	XK_asterisk }},
+	{  18, 0,		{ XK_9,	XK_parenleft }},
+	{  19, 0,		{ XK_0,	XK_parenright }},
+	{  20, 0,		{ XK_minus,	XK_underscore }},
+	{  21, 0,		{ XK_equal,	XK_plus }},
+	{  22, 0,		{ XK_BackSpace }},
+	{  23, 0,		{ XK_Tab }},
+	{  24, 0,		{ XK_q,	XK_Q }},
+	{  25, 0,		{ XK_w,	XK_W }},
+	{  26, 0,		{ XK_e,	XK_E }},
+	{  27, 0,		{ XK_r,	XK_R }},
+	{  28, 0,		{ XK_t,	XK_T }},
+	{  29, 0,		{ XK_y,	XK_Y }},
+	{  30, 0,		{ XK_u,	XK_U }},
+	{  31, 0,		{ XK_i,	XK_I }},
+	{  32, 0,		{ XK_o,	XK_O }},
+	{  33, 0,		{ XK_p,	XK_P }},
+	{  34, 0,		{ XK_bracketleft,	XK_braceleft }},
+	{  35, 0,		{ XK_bracketright,	XK_braceright }},
+	{  36, 0,		{ XK_Return }},
+	{  37, ControlMask,	{ XK_Control_L }},
+	{  38, 0,		{ XK_a,	XK_A }},
+	{  39, 0,		{ XK_s,	XK_S }},
+	{  40, 0,		{ XK_d,	XK_D }},
+	{  41, 0,		{ XK_f,	XK_F }},
+	{  42, 0,		{ XK_g,	XK_G }},
+	{  43, 0,		{ XK_h,	XK_H }},
+	{  44, 0,		{ XK_j,	XK_J }},
+	{  45, 0,		{ XK_k,	XK_K }},
+	{  46, 0,		{ XK_l,	XK_L }},
+	{  47, 0,		{ XK_semicolon,	XK_colon }},
+	{  48, 0,		{ XK_apostrophe,	XK_quotedbl }},
+	{  49, 0,		{ XK_grave,	XK_asciitilde }},
+	{  50, ShiftMask,	{ XK_Shift_L }},
+	{  51, 0,		{ XK_backslash,	XK_bar }},
+	{  52, 0,		{ XK_z,	XK_Z }},
+	{  53, 0,		{ XK_x,	XK_X }},
+	{  54, 0,		{ XK_c,	XK_C }},
+	{  55, 0,		{ XK_v,	XK_V }},
+	{  56, 0,		{ XK_b,	XK_B }},
+	{  57, 0,		{ XK_n,	XK_N }},
+	{  58, 0,		{ XK_m,	XK_M }},
+	{  59, 0,		{ XK_comma,	XK_less }},
+	{  60, 0,		{ XK_period,	XK_greater }},
+	{  61, 0,		{ XK_slash,	XK_question }},
+	{  62, ShiftMask,	{ XK_Shift_R }},
+	{  63, 0,		{ XK_KP_Multiply }},
+	{  64, Mod1Mask,	{ XK_Alt_L }},
+	{  65, 0,		{ XK_space }},
+	{  66, LockMask,	{ XK_Caps_Lock }},
+	{  67, 0,		{ XK_F1,	XK_F11 }},
+	{  68, 0,		{ XK_F2,	XK_F12 }},
+	{  69, 0,		{ XK_F3,	XK_F13 }},
+	{  70, 0,		{ XK_F4,	XK_F14 }},
+	{  71, 0,		{ XK_F5,	XK_F15 }},
+	{  72, 0,		{ XK_F6,	XK_F16 }},
+	{  73, 0,		{ XK_F7,	XK_F17 }},
+	{  74, 0,		{ XK_F8,	XK_F18 }},
+	{  75, 0,		{ XK_F9,	XK_F19 }},
+	{  76, 0,		{ XK_F10,	XK_F20 }},
+	{  77, Mod2Mask,	{ XK_Num_Lock }},
+	{  78, Mod5Mask,	{ XK_Scroll_Lock }},
+	{  79, 0,		{ XK_KP_7 }},
+	{  80, 0,		{ XK_KP_8 }},
+	{  81, 0,		{ XK_KP_9 }},
+	{  82, 0,		{ XK_KP_Subtract }},
+	{  83, 0,		{ XK_KP_4 }},
+	{  84, 0,		{ XK_KP_5 }},
+	{  85, 0,		{ XK_KP_6 }},
+	{  86, 0,		{ XK_KP_Add }},
+	{  87, 0,		{ XK_KP_1 }},
+	{  88, 0,		{ XK_KP_2 }},
+	{  89, 0,		{ XK_KP_3 }},
+	{  90, 0,		{ XK_KP_0 }},
+	{  91, 0,		{ XK_KP_Decimal }},
+	{  94, 0,		{ XK_less,	XK_greater }},
+	{  95, 0,		{ XK_F11 }},
+	{  96, 0,		{ XK_F12 }},
+	{ 104, 0,		{ XK_KP_Enter }},
+	{ 105, ControlMask,	{ XK_Control_R }},
+	{ 106, 0,		{ XK_KP_Divide }},
+	{ 108, Mod1Mask,	{ XK_Alt_R }},
+	{ 109, 0,		{ XK_Break }},
+	{ 110, 0,		{ XK_Home }},
+	{ 111, 0,		{ XK_Up }},
+	{ 112, 0,		{ XK_Prior }},
+	{ 113, 0,		{ XK_Left }},
+	{ 114, 0,		{ XK_Right }},
+	{ 115, 0,		{ XK_End }},
+	{ 116, 0,		{ XK_Down }},
+	{ 117, 0,		{ XK_Next }},
+	{ 118, 0,		{ XK_Insert }},
+	{ 119, 0,		{ XK_Delete }},
+	{ 120, 0,		{ XK_Menu }},
+	{ 121, 0,		{ XK_F13 }},
+	{ 122, 0,		{ XK_F14 }},
+	{ 123, 0,		{ XK_Help }},
+	{ 124, 0,		{ XK_Execute }},
+	{ 125, 0,		{ XK_F17 }},
+	{ 126, 0,		{ XK_KP_Subtract }},
+	{ 127, 0,		{ XK_Pause }},
+};
+
+#endif
diff -urN xkeycaps-2.46/kbds/maclombard-caps.h xkeycaps-2.46.huber/kbds/maclombard-caps.h
--- xkeycaps-2.46/kbds/maclombard-caps.h	Wed Dec 31 19:00:00 1969
+++ xkeycaps-2.46.huber/kbds/maclombard-caps.h	Thu Jan 25 14:10:58 2001
@@ -0,0 +1,138 @@
+/* xkeycaps, Copyright (c) 1991, 1992, 1993, 1997
+ *  Jamie Zawinski <jwz@jwz.org>
+ *
+ * This file describes the PowerBook Lombard (1999) laptop
+ * keyboard from Apple.  There is a block of fake keys in the map
+ * to the right that shows what keys are generated when the 'fn'
+ * key is held down.
+ *
+ * - Josh Huber <huber@alum.wpi.edu>, 1/25/2001
+ */
+
+static const struct key_strings maclombard_caps [] = {
+
+  /* Row 0 */
+
+  {"Esc", 0},
+  {"F1", 0},
+  {"F2", 0},
+  {"F3", 0},
+  {"F4", 0},
+  {"F5", 0},
+  {"F6", 0},
+  {"F7", 0},
+  {"F8", 0},
+  {"F9", 0},
+  {"F10", 0},
+  {"F11", 0},
+  {"F12", 0},
+
+  /* Row 2 */
+
+  {"~", "`", 0},
+  {"!", "1", 0},
+  {"@", "2", 0},
+  {"#", "3", 0},
+  {"$", "4", 0},
+  {"%", "5", 0},
+  {"^", "6", 0},
+  {"&", "7", 0},
+  {"*", "8", 0},
+  {"(", "9", 0},
+  {")", "0", 0},
+  {"_", "-", 0},
+  {"+", "=", 0},
+  {"Delete (BS)", 0},
+  /* fn generated keys */
+  {"Home", 0},
+  {"Page", "Up", 0},
+  {"Clear", 0},
+  {"=", 0},
+  {"/", 0},
+  {"*", 0},
+
+  /* Row 3 */
+
+  {"Tab", 0},
+  {"Q", 0},
+  {"W", 0},
+  {"E", 0},
+  {"R", 0},
+  {"T", 0},
+  {"Y", 0},
+  {"U", 0},
+  {"I", 0},
+  {"O", 0},
+  {"P", 0},
+  {"{", "[", 0},
+  {"}", "]", 0},
+  {"|", "\\", 0},
+  /* fn generated keys */
+  {"End", 0},
+  {"Page", "Down", 0},
+  {"7", 0},
+  {"8", 0},
+  {"9", 0},
+  {"-", 0},
+
+  /* Row 4 */
+
+  {"Caps Lock", 0},
+  {"A", 0},
+  {"S", 0},
+  {"D", 0},
+  {"F", 0},
+  {"G", 0},
+  {"H", 0},
+  {"J", 0},
+  {"K", 0},
+  {"L", 0},
+  {":", ";", 0},
+  {"\"", "'", 0},
+  {"Return", 0},
+  /* fn generated keys */
+  {"4", 0},
+  {"5", 0},
+  {"6", 0},
+  {"+", 0},
+
+  /* Row 5 */
+
+  {"Shift", 0},
+  {"Z", 0},
+  {"X", 0},
+  {"C", 0},
+  {"V", 0},
+  {"B", 0},
+  {"N", 0},
+  {"M", 0},
+  {"<", ",", 0},
+  {">", ".", 0},
+  {"?", "/", 0},
+  {"Shift", 0},
+  /* fn generated keys */
+  {"1", 0},
+  {"2", 0},
+  {"3", 0},
+  {"Enter", 0},
+
+  /* Row 6 */
+
+  {"Fn", 0},
+  {"Ctrl", 0},
+  {"Alt", "Option", 0},
+  {"Cmd", 0},
+  {" ", 0},
+  {"enter", 0},
+  {"Alt", "Option", 0},
+  {"UpArrow", 0},
+  /* fn generated keys */
+  {"0", 0},
+  {".", 0},
+
+  /* row 7 */
+
+  {"LeftArrow", 0},
+  {"DownArrow", 0},
+  {"RightArrow", 0},
+};
diff -urN xkeycaps-2.46/kbds/maclombard-codes.h xkeycaps-2.46.huber/kbds/maclombard-codes.h
--- xkeycaps-2.46/kbds/maclombard-codes.h	Wed Dec 31 19:00:00 1969
+++ xkeycaps-2.46.huber/kbds/maclombard-codes.h	Thu Jan 25 14:12:48 2001
@@ -0,0 +1,43 @@
+/* xkeycaps, Copyright (c) 1998, 1999 Jamie Zawinski <jwz@jwz.org>
+ *
+ * This file describes the keycodes that are sent via the XFree86
+ * x server on Linux with the new USB input layer enabled, using a
+ * powerbook Lombard (1999) laptop from Apple.
+ *
+ * note: the 'fn' key does not send a keyevent to the x-server
+ *
+ * - Josh Huber <huber@alum.wpi.edu>, 1/25/2001
+ */
+
+static const KeyCode maclombard_codes [] = {
+  /* Row 1 */
+  9, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 95, 96,
+
+  /* Row 2 */
+  49, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+  /* fn */
+  110, 112, 77, 125, 106, 63,
+
+  /* Row 3 */
+  23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 51,
+  /* fn */
+  115, 117, 79, 80, 81, 82,
+  
+  /* Row 4 */
+  66, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 36,
+  /* fn */
+  83, 84, 85, 86,
+
+  /* Row 5 */
+  50, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 50,
+  /* fn */
+  87, 88, 89, 104,
+
+  /* Row 6 */
+  0, 37, 64, 133, 65, 104, 64, 111,
+  /* fn */
+  90, 91,
+
+  /* Row 7 -- a hack */
+  113, 116, 114,
+};
diff -urN xkeycaps-2.46/kbds/maclombard-geom.h xkeycaps-2.46.huber/kbds/maclombard-geom.h
--- xkeycaps-2.46/kbds/maclombard-geom.h	Wed Dec 31 19:00:00 1969
+++ xkeycaps-2.46.huber/kbds/maclombard-geom.h	Thu Jan 25 13:53:55 2001
@@ -0,0 +1,100 @@
+/* xkeycaps, Copyright (c) 1998, 1999 Jamie Zawinski <jwz@jwz.org>
+ *
+ * This file describes the keyboard on the Apple Powerbook G3
+ * Lombard (1999) model.  I've placed the keysyms that are emited
+ * when the 'fn' key is held in a block of keys to the right
+ * so it looks like a number pad.
+ *
+ * - Josh Huber <huber@alum.wpi.edu>, 1/25/2001
+ */
+
+static const struct key_geometry maclombard_geom_row1 [] = {
+	{14, 7},
+	{7, 0},
+	{14, 7}, {14, 7}, {14, 7}, {14, 7},
+	{7, 0},
+	{14, 7}, {14, 7}, {14, 7}, {14, 7},
+	{7, 0},
+	{14, 7}, {14, 7}, {14, 7}, {14, 7},
+};
+
+static const struct key_geometry maclombard_geom_row2 [] = {
+	{14, 14}, {14, 14}, {14, 14}, {14, 14}, {14, 14},
+	{14, 14}, {14, 14}, {14, 14}, {14, 14}, {14, 14},
+	{14, 14}, {14, 14}, {14, 14},
+	{21, 14},
+
+	/* fake keys for fn-KEY combinations */
+	{7, 0},
+	{14, 14}, {14, 14},
+	{7, 0},
+	{14, 14}, {14, 14}, {14, 14}, {14, 14},
+};
+
+static const struct key_geometry maclombard_geom_row3 [] = {
+	{21, 14},
+	{14, 14}, {14, 14}, {14, 14}, {14, 14}, {14, 14},
+	{14, 14}, {14, 14}, {14, 14}, {14, 14}, {14, 14},
+	{14, 14}, {14, 14}, {14, 14},
+
+	/* fake keys for fn-KEY combinations */
+	{7, 0},
+	{14, 14}, {14, 14},
+	{7, 0},
+	{14, 14}, {14, 14}, {14, 14}, {14, 14},
+};
+
+static const struct key_geometry maclombard_geom_row4 [] = {
+	{24, 14},
+	{14, 14}, {14, 14}, {14, 14}, {14, 14}, {14, 14}, 
+	{14, 14}, {14, 14}, {14, 14}, {14, 14}, {14, 14}, 
+	{14, 14},
+	{25, 14},
+
+	/* fake keys for fn-KEY combinations */
+	{42, 0},
+	{14, 14}, {14, 14}, {14, 14}, {14, 14},
+};
+
+static const struct key_geometry maclombard_geom_row5 [] = {
+	{31, 14},
+	{14, 14}, {14, 14}, {14, 14}, {14, 14}, {14, 14}, 
+	{14, 14}, {14, 14}, {14, 14}, {14, 14}, {14, 14}, 
+	{32, 14},
+
+	/* fake keys for fn-KEY combinations */
+	{42, 0},
+	{14, 14}, {14, 14}, {14, 14}, {14, 28},
+};
+
+static const struct key_geometry maclombard_geom_row6 [] = {
+	{14, 14}, {14, 14}, {14, 14}, {18, 14},
+	{69, 14},
+	{18, 14}, {14, 14},
+	{14, 0}, {14, 7}, {14, 0},
+
+	/* fake keys for fn-KEY combinations */
+	{42, 0},
+	{28, 14}, {14, 14},
+};
+
+/* a little hack due to apple's funny arrow keys */
+static const struct key_geometry maclombard_geom_row7 [] = {
+	{161, 0}, /* skip */
+	{14, 7}, {14, 7}, {14, 7}, /* three lower arrow keys */
+};
+
+static const struct keyboard_row_geometry maclombard_geom_rows [] = {
+  ROW (maclombard_geom_row1, 7),
+  ROW (maclombard_geom_row2, 14),
+  ROW (maclombard_geom_row3, 14),
+  ROW (maclombard_geom_row4, 14),
+  ROW (maclombard_geom_row5, 14),
+  ROW (maclombard_geom_row6, 14),
+  ROW (maclombard_geom_row7, 7),
+};
+
+static const struct keyboard_geometry maclombard_geom = {
+  sizeof (maclombard_geom_rows) / sizeof (struct keyboard_row_geometry),
+  maclombard_geom_rows, 3, 3, 3
+};
diff -urN xkeycaps-2.46/kbds/macpro104-caps.h xkeycaps-2.46.huber/kbds/macpro104-caps.h
--- xkeycaps-2.46/kbds/macpro104-caps.h	Wed Dec 31 19:00:00 1969
+++ xkeycaps-2.46.huber/kbds/macpro104-caps.h	Thu Jan 25 12:06:11 2001
@@ -0,0 +1,137 @@
+/* xkeycaps, Copyright (c) 1991, 1992, 1993, 1997
+ *  Jamie Zawinski <jwz@jwz.org>
+ *
+ * This file describes the surface of the Apple "Pro Keyboard". It
+ * is based on the pc104 caps header file.
+ *
+ * - Josh Huber <huber@alum.wpi.edu>, 1/25/2001
+ */
+
+static const struct key_strings macpro104_caps [] = {
+
+  /* Row 0 */
+
+  {"Esc", 0},
+  {"F1", 0},
+  {"F2", 0},
+  {"F3", 0},
+  {"F4", 0},
+  {"F5", 0},
+  {"F6", 0},
+  {"F7", 0},
+  {"F8", 0},
+  {"F9", 0},
+  {"F10", 0},
+  {"F11", 0},
+  {"F12", 0},
+  {"F13", 0},
+  {"F14", 0},
+  {"F15", 0},
+  {"Vol", " - ", 0},
+  {"Vol", " + ", 0},
+  {"Vol", "Mute", 0},
+  {"Eject", 0},
+
+  /* Row 2 */
+
+  {"~", "`", 0},
+  {"!", "1", 0},
+  {"@", "2", 0},
+  {"#", "3", 0},
+  {"$", "4", 0},
+  {"%", "5", 0},
+  {"^", "6", 0},
+  {"&", "7", 0},
+  {"*", "8", 0},
+  {"(", "9", 0},
+  {")", "0", 0},
+  {"_", "-", 0},
+  {"+", "=", 0},
+  {"Delete (BS)", 0},
+  {"Help", 0},
+  {"Home", 0},
+  {"Page", "Up", 0},
+  {"NL", "Clear", 0},
+  {"=", 0},
+  {"/", 0},
+  {"*", 0},
+
+  /* Row 3 */
+
+  {"Tab", 0},
+  {"Q", 0},
+  {"W", 0},
+  {"E", 0},
+  {"R", 0},
+  {"T", 0},
+  {"Y", 0},
+  {"U", 0},
+  {"I", 0},
+  {"O", 0},
+  {"P", 0},
+  {"{", "[", 0},
+  {"}", "]", 0},
+  {"|", "\\", 0},
+  {"Del", "[X]", 0},
+  {"End", 0},
+  {"Page", "Down", 0},
+  {"7", 0},
+  {"8", 0},
+  {"9", 0},
+  {"-", 0},
+
+  /* Row 4 */
+
+  {"Caps Lock", 0},
+  {"A", 0},
+  {"S", 0},
+  {"D", 0},
+  {"F", 0},
+  {"G", 0},
+  {"H", 0},
+  {"J", 0},
+  {"K", 0},
+  {"L", 0},
+  {":", ";", 0},
+  {"\"", "'", 0},
+  {"Return", 0},
+  {"4", 0},
+  {"5", 0},
+  {"6", 0},
+  {"+", 0},
+
+  /* Row 5 */
+
+  {"Shift", 0},
+  {"Z", 0},
+  {"X", 0},
+  {"C", 0},
+  {"V", 0},
+  {"B", 0},
+  {"N", 0},
+  {"M", 0},
+  {"<", ",", 0},
+  {">", ".", 0},
+  {"?", "/", 0},
+  {"Shift", 0},
+  {"UpArrow", 0},
+  {"1", 0},
+  {"2", 0},
+  {"3", 0},
+  {"Enter", 0},
+
+  /* Row 6 */
+
+  {"Ctrl", 0},
+  {"Alt", "Option", 0},
+  {"Cmd", 0},
+  {" ", 0},
+  {"Cmd", 0},
+  {"Alt", "Option", 0},
+  {"Ctrl", 0},
+  {"LeftArrow", 0},
+  {"DownArrow", 0},
+  {"RightArrow", 0},
+  {"0", 0},
+  {".", 0}
+};
diff -urN xkeycaps-2.46/kbds/macpro104-codes.h xkeycaps-2.46.huber/kbds/macpro104-codes.h
--- xkeycaps-2.46/kbds/macpro104-codes.h	Wed Dec 31 19:00:00 1969
+++ xkeycaps-2.46.huber/kbds/macpro104-codes.h	Thu Jan 25 12:06:11 2001
@@ -0,0 +1,48 @@
+/* xkeycaps, Copyright (c) 1991, 1992, 1993, 1997
+ *  Jamie Zawinski <jwz@jwz.org>
+ *
+ * This file describes the Apple Pro Keyboard on Linux with
+ * X Free 4.x, using the new USB input layer in the kernel.  This
+ * translates the keysyms to intel-ish style, so most things do
+ * not have to be changed.  This keyboard however has a slightly
+ * different layout than a standard PC keyboard, and a few different
+ * keys.
+ *
+ * - Josh Huber <huber@alum.wpi.edu>, 1/25/2001
+ */
+
+static const KeyCode macpro104_codes [] = {
+  /* Row 0 */
+  9,
+  67, 68, 69, 70,
+  71, 72, 73, 74,
+  75, 76, 95, 96,
+  93, 123, 127,
+  0, 0, 0, 0, /* these keys do nothing right now! */
+
+  /* Row 1 -- no space here on the Apple Pro Keyboard */
+  49, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+  118, 110, 112,
+  77, 125, 106, 63,
+
+  /* Row 2 */
+  23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 51,
+  119, 115, 117,
+  79, 80, 81, 82,
+  
+  /* Row 3 */
+  66, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 36,
+  83, 84, 85, 86,
+
+  /* Row 4 */
+  50, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 
+  111,
+  87, 88, 89, 104,
+
+  /* Row 5 */
+  37, 64, 133,
+  65,
+  134, 108, 105,
+  113, 116, 114,
+  90, 91
+};
diff -urN xkeycaps-2.46/kbds/macpro104-geom.h xkeycaps-2.46.huber/kbds/macpro104-geom.h
--- xkeycaps-2.46/kbds/macpro104-geom.h	Wed Dec 31 19:00:00 1969
+++ xkeycaps-2.46.huber/kbds/macpro104-geom.h	Thu Jan 25 12:06:11 2001
@@ -0,0 +1,68 @@
+/* xkeycaps, Copyright (c) 1991, 1992, 1993, 1997
+ * Jamie Zawinski <jwz@jwz.org>
+ *
+ * This file describes the layout of the Apple "Pro Keyboard".  This is 
+ * a USB keyboard that is shipping with the G4 desktop machines.
+ * This file is based on the pc104 layout. (short enter [return] key,
+ * wide backspace key.)
+ *
+ * - Josh Huber <huber@alum.wpi.edu>, 1/25/2001
+ */
+
+static const struct key_geometry macpro104_geom_row0 [] = {
+ {7, 7}, {5, 0},
+ {7, 7}, {7, 7}, {7, 7}, {7, 7}, {5, 0},
+ {7, 7}, {7, 7}, {7, 7}, {7, 7}, {5, 0},
+ {7, 7}, {7, 7}, {7, 7}, {7, 7}, {4, 0},
+ {7, 7}, {7, 7}, {7, 7}, {4, 0},
+ {7, 7}, {7, 7}, {7, 7}, {7, 7},
+};
+
+static const struct key_geometry macpro104_geom_row1 [] = {
+ {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7},
+ {7, 7}, {7, 7}, {7, 7}, {7, 7}, {15, 7}, {4, 0},
+ {7, 7}, {7, 7}, {7, 7}, {4, 0},
+ {7, 7}, {7, 7}, {7, 7}, {7, 7}
+};
+
+static const struct key_geometry macpro104_geom_row2 [] = {
+ {10, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7},
+ {7, 7}, {7, 7}, {7, 7}, {7, 7}, {12, 7}, {4, 0},
+ {7, 7}, {7, 7}, {7, 7}, {4, 0},
+ {7, 7}, {7, 7}, {7, 7}, {7, 7}
+};
+
+static const struct key_geometry macpro104_geom_row3 [] = {
+ {13, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7},
+ {7, 7}, {7, 7}, {7, 7}, {16, 7}, {29, 0},
+ {7, 7}, {7, 7}, {7, 7}, {7, 7},
+};
+
+static const struct key_geometry macpro104_geom_row4 [] = {
+ {16, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7},
+ {7, 7}, {7, 7}, {20, 7}, {11, 0},
+ {7, 7}, {11, 0},
+ {7, 7}, {7, 7}, {7, 7}, {7, 14}
+};
+
+static const struct key_geometry macpro104_geom_row5 [] = {
+ {10, 7}, {9, 7},
+ {11, 7}, {46, 7}, {11, 7}, {9, 7}, {10, 7},
+ {4, 0},
+ {7, 7}, {7, 7}, {7, 7}, {4, 0},
+ {14, 7}, {7, 7}
+};
+
+static const struct keyboard_row_geometry macpro104_geom_rows [] = {
+  ROW (macpro104_geom_row0, 7),
+  ROW (macpro104_geom_row1, 7),
+  ROW (macpro104_geom_row2, 7),
+  ROW (macpro104_geom_row3, 7),
+  ROW (macpro104_geom_row4, 7),
+  ROW (macpro104_geom_row5, 7),
+};
+
+static const struct keyboard_geometry macpro104_geom = {
+  sizeof (macpro104_geom_rows) / sizeof (struct keyboard_row_geometry),
+  macpro104_geom_rows, 6, 3, 3
+};
I encourage people to apt-get source, try applying the patch, and
building a new xkeycaps.  Also, if you're feeling frisky, read the
README on how to add new keyboards and add the couple you have.

ttyl,

-- 
Josh Huber                                   | huber@debian.org |

Reply to: