New APL keyboard maps

Timothy S. Nelson wayland at wayland.id.au
Thu May 14 19:19:32 PDT 2009


 	Hi all.  I've been interacting with the APL community to create 
keyboard maps for their special-purpose keyboards (I don't use APL myself, 
though).  I've created some keyboard maps that, while probably not perfect, 
are probably a step ahead of the complete lack of support that we currently 
have for APL.

 	My question is, is this the correct place to send them?

[Note for those not familiar with APL: APL is a programming language that uses 
a large number of symbols to represent its syntax; it's semi-mathematical, and 
allows a very concise representation of an algorithm.  It has regularly had 
specialised keyboards provided for it in the past. 
http://en.wikipedia.org/wiki/APL_(programming_language) ]

 	Oh, incidentally, has there been any thought given to making xkbprint 
support unicode?

Keyboard map follows:

------------------------------------------------------------

// APL Keyboard Layouts

// This file supports:
// -	The Sharp APL for Unix (SAX) layout
// -	The IBM APL2 layout
// -	The Manugistics APL*PLUS II (Version 5.1, 1993) keyboard layout

// Unicode APL table: http://aplwiki.com/UnicodeAplTable
// ...and another: http://publibfp.boulder.ibm.com/epubs/pdf/h2110611.pdf (appendix A)
// Generic Unicode stuff: http://www.fileformat.info/info/unicode/category/index.htm

// Tim Nelson (this file's creator) says:

// This file doesn't deal with all the combining stuff -- I'm not an APL programmer,
// and am not quite sure what's needed here.  However, it may be possible to get this
// working with dead keys and the like.  Patches gratefully accepted.

// Some of the shift-key assignments may differ from the APL tradition.  If
// that's not considered acceptable, it should be possible to remap the 
// shift keys.  I have striven, however, to ensure that the use of shift keys
// in these maps is at least self-consistent.

// I'm assuming that this will be used with another keyboard layout (ie. for 
// your language), with a special shift key to use these maps.

partial alphanumeric_keys modifier_keys 
xkb_symbols "common" {
 	name[Group1]= "APL Keyboard Symbols: Common";

 	key <AE01> { [	diaeresis	] };
 	key <AE02> { [	U00AF	] }; // ¯ -- Macron
 	key <AE03> { [	less	] };
 	key <AE04> { [	U2264	] }; // â?¤ -- Less-than Or Equal To
 	key <AE05> { [	equal	] };
 	key <AE06> { [	U2265	] }; // â?¥ -- Greater-than Or Equal To
 	key <AE07> { [	greater	] };
 	key <AE08> { [	U2260	] }; // â?  -- Not Equal To
 	key <AE09> { [	U2228	] }; // â?¨ -- Logical Or
 	key <AE10> { [	U2227	] }; // â?§ -- Logical And

 	// Q
 	key <AD01> { [	question	] };
 	// W
 	key <AD02> { [	U2375		] }; // â?µ -- APL Functional Symbol Omega
 	// E
 	key <AD03> { [	U220A		] }; // â?? -- Small Element Of
 	// R
 	key <AD04> { [	U2374		] }; // â?´ -- APL Functional Symbol Rho
 	// T
 	key <AD05> { [	asciitilde		] };
 	// Y
 	key <AD06> { [	U2191		] }; // â?? -- Upwards Arrow
 	// U
 	key <AD07> { [	U2193		] }; // â?? -- Downwards Arrow
 	// I
 	key <AD08> { [	U2373	] }; // â?³ -- APL Functional Symbol Iota
 	// O
 	key <AD09> { [	U25CB	] }; // â?? -- White Circle
 	// P
 	key <AD10> { [	U22C6	] }; // â?? -- Should this be a plain asterisk, or the star operator???
 	// [
 	key <AD11> { [	U2190	] }; // â?? -- Leftwards Arrow

 	// A
 	key <AC01> { [	U237A	] }; // â?º -- APL Functional Symbol Alpha
 	// S
 	key <AC02> { [	U2308	] }; // â?? -- Left Ceiling
 	// D
 	key <AC03> { [	U230A	] }; // â?? -- Left Floor
 	// F
 	key <AC04> { [	underscore	] };
 	// G
 	key <AC05> { [	U2207	] }; // â?? -- Nabla
 	// H
 	key <AC06> { [	U2206	] }; // â?? -- Increment
 	// J
 	key <AC07> { [	U2218	] }; // â?? -- Ring Operator
 	// K
 	key <AC08> { [	apostrophe ] };
 	// L
 	key <AC09> { [	U2395	] }; // â?? -- APL Functional Symbol Quad

 	// Z
 	key <AB01> { [	U2282	] }; // â?? -- Subset Of
 	// X
 	key <AB02> { [	U2283	] }; // â?? -- Superset Of
 	// C
 	key <AB03> { [	U2229	] }; // â?© -- Intersection
 	// V
 	key <AB04> { [	U222A	] }; // â?ª -- Union
 	// B
 	key <AB05> { [	U22A5	] }; // â?¥ -- Up Tack
 	// N
 	key <AB06> { [	U22A4	] }; // â?¤ -- Down Tack
 	// M
 	key <AB07> { [	U007C	] }; // | -- Vertical Line
};

// Keys common to a number of keyboards that allow normal language usage alongside APL
partial alphanumeric_keys modifier_keys 
xkb_symbols "unified" {
 	name[Group1]= "APL Keyboard Symbols: Unified Layout";

 	include "apl(common)"

 	// `
 	key <TLDE> { [	U22C4	] }; // â?? -- Diamond Operator
 	key <AE09> { [	NoSymbol,	U2371	] }; // â?± -- APL Functional Symbol Down Caret Tilde
 	key <AE10> { [	NoSymbol,	U2372	] }; // â?² -- APL Functional Symbol Up Caret Tilde
 	// -
 	key <AE11> { [	U00D7	] }; // Ã? -- Multiplication Sign
 	// =
 	key <AE12> { [	U00F7,	U2339	] }; // ÷ � -- Division Sign / APL Functional Symbol Quad Divide

 	// ]
 	key <AD12> { [	U2192		] }; // â?? -- Rightwards Arrow
};

// Layout: http://www.wickensonline.co.uk/apl-unicomp.html
default
partial alphanumeric_keys modifier_keys 
xkb_symbols "sax" {
 	name[Group1]= "APL Keyboard Symbols: Sharp APL for Unix";

 	include "apl(unified)"

 	key <AE01> { [	NoSymbol,	U00A1	] }; // ¡ -- Inverted Exclamation Mark
 	key <AE04> { [	NoSymbol,	cent	] };
 	key <AE08> { [	NoSymbol,	U2342	] }; // â?? -- APL Functional Symbol Quad Backslash
 	// -
 	key <AE11> { [	NoSymbol,	U2261	] }; // â?¡ -- Identical To

 	// Q
 	key <AD01> { [	NoSymbol,	U00BF	] }; // ¿ -- Inverted Question Mark
 	// W
 	key <AD02> { [	NoSymbol,	U233D	] }; // â?½ -- APL Functional Symbol Circle Stile
 	// E
 	key <AD03> { [	NoSymbol,	U2377	] }; // â?· -- APL Functional Symbol Epsilon Underbar
 	// T
 	key <AD05> { [	NoSymbol,	U2349	] }; // â?? -- APL Functional Symbol Circle Backslash
 	// I
 	key <AD08> { [	NoSymbol,	U2378	] }; // â?¸ -- APL Functional Symbol Iota Underbar
 	// O
 	key <AD09> { [	NoSymbol,	U2365	] }; // â?¥ -- APL Functional Symbol Circle Diaeresis
 	// P
 	key <AD10> { [	NoSymbol,	U235F	] }; // â?? -- APL Functional Symbol Circle Star

 	// A
 	key <AC01> { [	NoSymbol,	U2296	] }; // â?? -- Circled Minus
 	// F
 	key <AC04> { [	NoSymbol,	U236B	] }; // â?« -- APL Functional Symbol Del Tilde
 	// G
 	key <AC05> { [	NoSymbol,	U2352	] }; // â?? â?? -- APL Functional Symbol Del Stile
 	// H
 	key <AC06> { [	NoSymbol,	U234B	] }; // â?? â?? -- APL Functional Symbol Delta Stile
 	// J
 	key <AC07> { [	NoSymbol,	U2364	] }; // â?¤ -- APL Functional Symbol Jot Diaeresis
 	// K
 	key <AC08> { [	NoSymbol,	U233B	] }; // â?»
 	// L
 	key <AC09> { [	NoSymbol,	U235E	] }; // â?? -- APL Functional Symbol Quote Quad
 	// ;
 	key <AC10> { [	U22A2	] }; // â?¢ -- Right Tack
 	// '
 	key <AC11> { [	U22A3	] }; // â?£ -- Left Tack

 	// C
 	key <AB03> { [	NoSymbol,	U235D	] }; // â?? -- APL Functional Symbol Up Shoe Jot
 	// B
 	key <AB05> { [	NoSymbol,	U234E	] }; // â?? -- APL Functional Symbol Down Tack Jot (Unicode got the name wrong; it should have been "Up Tack")
 	// N
 	key <AB06> { [	NoSymbol,	U2355	] }; // â?? -- APL Functional Symbol Up Tack Jot (Unicode got the name wrong; it should have been "Down Tack")
 	// M
 	key <AB07> { [	NoSymbol,	U2336	] }; // â?¶ -- APL Functional Symbol I-Beam
 	// ,
 	key <AB08> { [	U235E,	U236A	] }; // â?? â?ª -- APL Functional Symbol Quote Quad / APL Functional Symbol Comma Bar
 	// .
 	key <AB09> { [	U234E,	U2359	] }; // â?? â?? -- [See B key] / APL Functional Symbol Delta Underbar
 	// /
 	key <AB10> { [	U2355,	U233F	] }; // â?? â?¿ -- [See N key] / APL Functional Symbol Slash Bar

 	key <BKSL> { [	U235D,	U2340	] }; // â?? â?? -- APL Functional Symbol Up Shoe Jot / APL Functional Symbol Backslash Bar
};

// Layout: http://www.wickensonline.co.uk/apl-unicomp.html
partial alphanumeric_keys modifier_keys 
xkb_symbols "apl2" {
 	name[Group1]= "APL Keyboard Symbols: IBM APL2";

 	include "apl(common)"

 	// The first column is NoSymbol because it inherits.  The second is NoSymbol because those keys don't do anything

 	// `
 	key <TLDE> { [	NoSymbol,	U233B,	U2342	] }; // â?» â?? --
 	key <AE01> { [	NoSymbol, NoSymbol, U2336	] }; // â?¶ -- APL Functional Symbol I-Beam
 	key <AE02> { [	NoSymbol, NoSymbol,	U236B	] }; // â?« -- APL Functional Symbol Del Tilde
 	key <AE03> { [	NoSymbol, NoSymbol,	U2353	] }; // â?? -- APL Functional Symbol Del Stile
 	key <AE04> { [	NoSymbol, NoSymbol,	U234B	] }; // â?? -- APL Functional Symbol Delta Stile
 	key <AE05> { [	NoSymbol, NoSymbol,	U233D	] }; // â?½ -- APL Functional Symbol Circle Stile
 	key <AE06> { [	NoSymbol, NoSymbol,	U2349	] }; // â?? -- APL Functional Symbol Circle Backslash
 	key <AE07> { [	NoSymbol, NoSymbol,	U2296	] }; // â?? -- Circled Minus
 	key <AE08> { [	NoSymbol, NoSymbol,	U235F	] }; // â?? -- APL Functional Symbol Circle Star
 	key <AE09> { [	NoSymbol, NoSymbol,	U2371	] }; // â?± -- APL Functional Symbol Down Caret Tilde
 	key <AE10> { [	NoSymbol, NoSymbol,	U2372	] }; // â?² -- APL Functional Symbol Up Caret Tilde
 	// -
 	key <AE11> { [	plus,	minus,	exclam	] };
 	// =
 	key <AE12> { [	U00D7,	U00F7,	U2339	] }; // � ÷ � -- Multiplication Sign / Division Sign / APL Functional Symbol Quad Divide

 	// [
 	key <AD11> { [	NoSymbol,	U2192,	U235E	] }; // (â??) â?? â?? -- Rightwards Arrow / APL Functional Symbol Quote Quad
 	// ]
 	key <AD12> { [	U2337,	U2378,	U2359	] }; // â?· â?¸ â?? -- APL Functional Symbol Squish Quad / APL Functional Symbol Iota Underbar / APL Functional Symbol Delta Underbar

 	// ;
 	key <AC10> { [	bracketleft, parenleft,	U234E	] }; // â?? -- [See B key in SAX layout]
 	// '
 	key <AC11> { [	bracketright, parenright, U2355	] }; // â?? -- [See N key in SAX layout]

 	// ,
 	key <AB08> { [	comma,	semicolon, U235D ] }; // â?? -- APL Functional Symbol Up Shoe Jot
 	// .
 	key <AB09> { [	period,	colon,	U2340	] }; // â?? -- APL Functional Symbol Backslash Bar
 	// /
 	key <AB10> { [	slash,	backslash, U233F ] }; // â?¿ -- APL Functional Symbol Slash Bar

 	key <BKSL> { [	U2261,	U2377, U2364	] }; // â?¡ â?· â?¤ -- Identical To / APL Functional Symbol Epsilon Underbar / APL Functional Symbol Jot Diaeresis
};

partial alphanumeric_keys modifier_keys 
xkb_symbols "aplplusII" {
 	name[Group1]= "APL Keyboard Symbols: Manugistics APL*PLUS II";

 	include "apl(apl2)"

 	// `
 	key <TLDE> { [	dollar,	U22C4,	U236A	] }; // â?? â?ª -- Diamond Operator / APL Functional Symbol Comma Bar
 	key <AE01> { [	NoSymbol, NoSymbol, U2261	] }; // â?¡ -- Identical To

 	// [
 	key <AD11> { [	U2190,	NoSymbol,	U235E	] }; // â?? â?? -- Leftwards Arrow / APL Functional Symbol Quote Quad
 	// ]
 	key <AD12> { [	U2192,	NoSymbol,	U236C	] }; // â?? â?¬ -- Rightwards Arrow / APL Functional Symbol Zilde

 	// ;
 	key <AC10> { [	bracketleft, parenleft,	U234E	] }; // â?? -- [See B key in SAX layout]
 	// '
 	key <AC11> { [	bracketright, parenright, U2355	] }; // â?? -- [See N key in SAX layout]

 	key <BKSL> { [	U22A3,	U22A2,	U2359	] }; // â?£ â?¢ â?? -- Left Tack / Right Tack / APL Functional Symbol Delta Underbar
};


// MicroAPL layout: http://aplwiki.com/APLXKeyboardLayouts
// I didn't do the old-style MicroAPL layout; patches gratefully accepted
partial alphanumeric_keys modifier_keys 
xkb_symbols "aplx" {
 	name[Group1]= "APL Keyboard Symbols: APLX Unified APL Layout";

 	include "apl(unified)"

 	// `
 	key <TLDE> { [	NoSymbol,	U235E	] }; // â?? -- APL Functional Symbol Quote Quad
 	key <AE01> { [	NoSymbol,	U2336	] }; // â?¶ -- APL Functional Symbol I-Beam
 	key <AE02> { [	NoSymbol,	U236B	] }; // â?« -- APL Functional Symbol Del Tilde
 	key <AE03> { [	NoSymbol,	U2353	] }; // â?? -- APL Functional Symbol Del Stile
 	key <AE04> { [	NoSymbol,	U234B	] }; // â?? -- APL Functional Symbol Delta Stile
 	key <AE05> { [	NoSymbol,	U233D	] }; // â?½ -- APL Functional Symbol Circle Stile
 	key <AE06> { [	NoSymbol,	U2349	] }; // â?? -- APL Functional Symbol Circle Backslash
 	key <AE07> { [	NoSymbol,	U2296	] }; // â?? -- Circled Minus
 	key <AE08> { [	NoSymbol,	U235F	] }; // â?? -- APL Functional Symbol Circle Star
 	// -
 	key <AE11> { [	NoSymbol,	exclam ] };

 	// [
 	key <AD11> { [	NoSymbol,	U2347	] }; // â?? -- Box With Left Arrow
 	// ]
 	key <AD12> { [	NoSymbol,	U2348	] }; // â?? -- Box With Right Arrow

 	// ;
 	key <AC10> { [	U234E,	U2261	] }; // â?? â?¡ -- [See B key in SAX layout] / Identical To
 	// '
 	key <AC11> { [	U2355,	U2262	] }; // â?? â?¢ -- [See N key in SAX layout] / Not Identical To

 	// ,
 	key <AB08> { [	U235D,	U236A	] }; // â?? â?ª -- APL Functional Symbol Up Shoe Jot / APL Functional Symbol Comma Bar
 	// .
 	key <AB09> { [	U2340,	U2364	] }; // â?? â?¤ -- APL Functional Symbol Backslash Bar / APL Functional Symbol Jot Diaeresis
 	// /
 	key <AB10> { [	U233F ] }; // â?¿ -- APL Functional Symbol Slash Bar

 	key <BKSL> { [	U22A3,	U22A3	] }; // â?£ â?¢ -- Left Tack / Right Tack
};

------------------------------------------------------------


---------------------------------------------------------------------
| Name: Tim Nelson                 | Because the Creator is,        |
| E-mail: wayland at wayland.id.au    | I am                           |
---------------------------------------------------------------------

----BEGIN GEEK CODE BLOCK----
Version 3.12
GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- 
PE(+) Y+>++ PGP->+++ R(+) !tv b++ DI++++ D G+ e++>++++ h! y-
-----END GEEK CODE BLOCK-----


More information about the xorg mailing list