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