apl revision bfd7cbc1
1// EXTRAS:
2//
3// APL Keyboard Layouts
4
5// This file supports:
6// -	The Sharp APL for Unix (SAX) layout
7// -	The IBM APL2 layout
8// -	The Manugistics APL*PLUS II (Version 5.1, 1993) keyboard layout
9
10// Unicode APL table: http://aplwiki.com/UnicodeAplTable
11// ...and another: http://publibfp.boulder.ibm.com/epubs/pdf/h2110611.pdf (appendix A)
12// Generic Unicode stuff: http://www.fileformat.info/info/unicode/category/index.htm
13
14// Tim Nelson (this file's creator) says:
15
16// This file doesn't deal with all the combining stuff -- I'm not an APL programmer,
17// and am not quite sure what's needed here.  However, it may be possible to get this
18// working with dead keys and the like.  Patches gratefully accepted.  
19
20// Some of the shift-key assignments may differ from the APL tradition.  If
21// that's not considered acceptable, it should be possible to remap the 
22// shift keys.  I have striven, however, to ensure that the use of shift keys
23// in these maps is at least self-consistent.  
24
25// I'm assuming that this will be used with another keyboard layout (ie. for 
26// your language), with a special shift key to use these maps.  
27
28partial alphanumeric_keys modifier_keys 
29xkb_symbols "common" {
30	name[Group1]= "APL";
31
32	key <AE01> { [	diaeresis	] };
33	key <AE02> { [	U00AF	] }; // ¯ -- Macron
34	key <AE03> { [	less	] };
35	key <AE04> { [	U2264	] }; // ≤ -- Less-than Or Equal To
36	key <AE05> { [	equal	] };
37	key <AE06> { [	U2265	] }; // ≥ -- Greater-than Or Equal To
38	key <AE07> { [	greater	] };
39	key <AE08> { [	U2260	] }; // ≠ -- Not Equal To
40	key <AE09> { [	U2228	] }; // ∨ -- Logical Or
41	key <AE10> { [	U2227	] }; // ∧ -- Logical And
42
43	// Q
44	key <AD01> { [	question	] };
45	// W
46	key <AD02> { [	U2375		] }; // ⍵ -- APL Functional Symbol Omega
47	// E
48	key <AD03> { [	U220A		] }; // ∊ -- Small Element Of
49	// R
50	key <AD04> { [	U2374		] }; // ⍴ -- APL Functional Symbol Rho
51	// T
52	key <AD05> { [	asciitilde		] };
53	// Y
54	key <AD06> { [	U2191		] }; // ↑ -- Upwards Arrow
55	// U
56	key <AD07> { [	U2193		] }; // ↓ -- Downwards Arrow
57	// I
58	key <AD08> { [	U2373	] }; // ⍳ -- APL Functional Symbol Iota
59	// O
60	key <AD09> { [	U25CB	] }; // ○ -- White Circle
61	// P
62	key <AD10> { [	U22C6	] }; // ⋆ -- Should this be a plain asterisk, or the star operator???
63	// [
64	key <AD11> { [	U2190	] }; // ← -- Leftwards Arrow
65
66	// A
67	key <AC01> { [	U237A	] }; // ⍺ -- APL Functional Symbol Alpha
68	// S
69	key <AC02> { [	U2308	] }; // ⌈ -- Left Ceiling
70	// D
71	key <AC03> { [	U230A	] }; // ⌊ -- Left Floor
72	// F
73	key <AC04> { [	underscore	] };
74	// G
75	key <AC05> { [	U2207	] }; // ∇ -- Nabla
76	// H
77	key <AC06> { [	U2206	] }; // ∆ -- Increment
78	// J
79	key <AC07> { [	U2218	] }; // ∘ -- Ring Operator
80	// K
81	key <AC08> { [	apostrophe ] };
82	// L
83	key <AC09> { [	U2395	] }; // ⎕ -- APL Functional Symbol Quad
84
85	// Z
86	key <AB01> { [	U2282	] }; // ⊂ -- Subset Of
87	// X
88	key <AB02> { [	U2283	] }; // ⊃ -- Superset Of
89	// C
90	key <AB03> { [	U2229	] }; // ∩ -- Intersection
91	// V
92	key <AB04> { [	U222A	] }; // ∪ -- Union
93	// B
94	key <AB05> { [	U22A5	] }; // ⊥ -- Up Tack
95	// N
96	key <AB06> { [	U22A4	] }; // ⊤ -- Down Tack
97	// M
98	key <AB07> { [	U007C	] }; // | -- Vertical Line
99};
100
101// Keys common to a number of keyboards that allow normal language usage alongside APL
102partial alphanumeric_keys modifier_keys 
103xkb_symbols "unified" {
104	name[Group1]= "APL Keyboard Symbols: Unified Layout";
105
106	include "apl(common)"
107
108	// `
109	key <TLDE> { [	U22C4	] }; // ⋄ -- Diamond Operator
110	key <AE09> { [	NoSymbol,	U2371	] }; // ⍱ -- APL Functional Symbol Down Caret Tilde
111	key <AE10> { [	NoSymbol,	U2372	] }; // ⍲ -- APL Functional Symbol Up Caret Tilde
112	// -
113	key <AE11> { [	U00D7	] }; // × -- Multiplication Sign
114	// =
115	key <AE12> { [	U00F7,	U2339	] }; // ÷ ⌹ -- Division Sign / APL Functional Symbol Quad Divide
116
117	// ]
118	key <AD12> { [	U2192		] }; // → -- Rightwards Arrow
119};
120
121// Layout: http://www.wickensonline.co.uk/apl-unicomp.html
122default
123partial alphanumeric_keys modifier_keys 
124xkb_symbols "sax" {
125	name[Group1]= "APL Keyboard Symbols";
126
127	include "apl(unified)"
128
129	key <AE01> { [	NoSymbol,	U00A1	] }; // ¡ -- Inverted Exclamation Mark
130	key <AE04> { [	NoSymbol,	cent	] };
131	key <AE08> { [	NoSymbol,	U2342	] }; // ⍂ -- APL Functional Symbol Quad Backslash
132	// -
133	key <AE11> { [	NoSymbol,	U2261	] }; // ≡ -- Identical To
134
135	// Q
136	key <AD01> { [	NoSymbol,	U00BF	] }; // ¿ -- Inverted Question Mark
137	// W
138	key <AD02> { [	NoSymbol,	U233D	] }; // ⌽ -- APL Functional Symbol Circle Stile
139	// E
140	key <AD03> { [	NoSymbol,	U2377	] }; // ⍷ -- APL Functional Symbol Epsilon Underbar
141	// T
142	key <AD05> { [	NoSymbol,	U2349	] }; // ⍉ -- APL Functional Symbol Circle Backslash
143	// I
144	key <AD08> { [	NoSymbol,	U2378	] }; // ⍸ -- APL Functional Symbol Iota Underbar
145	// O
146	key <AD09> { [	NoSymbol,	U2365	] }; // ⍥ -- APL Functional Symbol Circle Diaeresis
147	// P
148	key <AD10> { [	NoSymbol,	U235F	] }; // ⍟ -- APL Functional Symbol Circle Star
149
150	// A
151	key <AC01> { [	NoSymbol,	U2296	] }; // ⊖ -- Circled Minus
152	// F
153	key <AC04> { [	NoSymbol,	U236B	] }; // ⍫ -- APL Functional Symbol Del Tilde
154	// G
155	key <AC05> { [	NoSymbol,	U2352	] }; // ∇ ⍒ -- APL Functional Symbol Del Stile
156	// H
157	key <AC06> { [	NoSymbol,	U234B	] }; // ∆ ⍋ -- APL Functional Symbol Delta Stile
158	// J
159	key <AC07> { [	NoSymbol,	U2364	] }; // ⍤ -- APL Functional Symbol Jot Diaeresis
160	// K
161	key <AC08> { [	NoSymbol,	U233B	] }; // ⌻
162	// L
163	key <AC09> { [	NoSymbol,	U235E	] }; // ⍞ -- APL Functional Symbol Quote Quad
164	// ;
165	key <AC10> { [	U22A2	] }; // ⊢ -- Right Tack
166	// '
167	key <AC11> { [	U22A3	] }; // ⊣ -- Left Tack
168
169	// C
170	key <AB03> { [	NoSymbol,	U235D	] }; // ⍝ -- APL Functional Symbol Up Shoe Jot
171	// B
172	key <AB05> { [	NoSymbol,	U234E	] }; // ⍎ -- APL Functional Symbol Down Tack Jot (Unicode got the name wrong; it should have been "Up Tack")
173	// N
174	key <AB06> { [	NoSymbol,	U2355	] }; // ⍕ -- APL Functional Symbol Up Tack Jot (Unicode got the name wrong; it should have been "Down Tack")
175	// M
176	key <AB07> { [	NoSymbol,	U2336	] }; // ⌶ -- APL Functional Symbol I-Beam
177	// ,
178	key <AB08> { [	U235E,	U236A	] }; // ⍞ ⍪ -- APL Functional Symbol Quote Quad / APL Functional Symbol Comma Bar
179	// .
180	key <AB09> { [	U234E,	U2359	] }; // ⍎ ⍙ -- [See B key] / APL Functional Symbol Delta Underbar
181	// /
182	key <AB10> { [	U2355,	U233F	] }; // ⍕ ⌿ -- [See N key] / APL Functional Symbol Slash Bar
183
184	key <BKSL> { [	U235D,	U2340	] }; // ⍝ ⍀ -- APL Functional Symbol Up Shoe Jot / APL Functional Symbol Backslash Bar
185};
186
187// Layout: http://www.wickensonline.co.uk/apl-unicomp.html
188partial alphanumeric_keys modifier_keys 
189xkb_symbols "apl2" {
190	name[Group1]= "APL Keyboard Symbols: IBM APL2";
191
192	include "apl(common)"
193
194	// The first column is NoSymbol because it inherits.  The second is NoSymbol because those keys don't do anything
195
196	// `
197	key <TLDE> { [	NoSymbol,	U233B,	U2342	] }; // ⌻ ⍂ -- 
198	key <AE01> { [	NoSymbol, NoSymbol, U2336	] }; // ⌶ -- APL Functional Symbol I-Beam
199	key <AE02> { [	NoSymbol, NoSymbol,	U236B	] }; // ⍫ -- APL Functional Symbol Del Tilde
200	key <AE03> { [	NoSymbol, NoSymbol,	U2353	] }; // ⍒ -- APL Functional Symbol Del Stile
201	key <AE04> { [	NoSymbol, NoSymbol,	U234B	] }; // ⍋ -- APL Functional Symbol Delta Stile
202	key <AE05> { [	NoSymbol, NoSymbol,	U233D	] }; // ⌽ -- APL Functional Symbol Circle Stile
203	key <AE06> { [	NoSymbol, NoSymbol,	U2349	] }; // ⍉ -- APL Functional Symbol Circle Backslash
204	key <AE07> { [	NoSymbol, NoSymbol,	U2296	] }; // ⊖ -- Circled Minus
205	key <AE08> { [	NoSymbol, NoSymbol,	U235F	] }; // ⍟ -- APL Functional Symbol Circle Star
206	key <AE09> { [	NoSymbol, NoSymbol,	U2371	] }; // ⍱ -- APL Functional Symbol Down Caret Tilde
207	key <AE10> { [	NoSymbol, NoSymbol,	U2372	] }; // ⍲ -- APL Functional Symbol Up Caret Tilde
208	// -
209	key <AE11> { [	plus,	minus,	exclam	] };
210	// =
211	key <AE12> { [	U00D7,	U00F7,	U2339	] }; // × ÷ ⌹ -- Multiplication Sign / Division Sign / APL Functional Symbol Quad Divide
212
213	// [
214	key <AD11> { [	NoSymbol,	U2192,	U235E	] }; // (←) → ⍞ -- Rightwards Arrow / APL Functional Symbol Quote Quad
215	// ]
216	key <AD12> { [	U2337,	U2378,	U2359	] }; // ⌷ ⍸ ⍙ -- APL Functional Symbol Squish Quad / APL Functional Symbol Iota Underbar / APL Functional Symbol Delta Underbar
217
218	// ;
219	key <AC10> { [	bracketleft, parenleft,	U234E	] }; // ⍎ -- [See B key in SAX layout]
220	// '
221	key <AC11> { [	bracketright, parenright, U2355	] }; // ⍕ -- [See N key in SAX layout] 
222
223	// ,
224	key <AB08> { [	comma,	semicolon, U235D ] }; // ⍝ -- APL Functional Symbol Up Shoe Jot
225	// .
226	key <AB09> { [	period,	colon,	U2340	] }; // ⍀ -- APL Functional Symbol Backslash Bar
227	// /
228	key <AB10> { [	slash,	backslash, U233F ] }; // ⌿ -- APL Functional Symbol Slash Bar
229
230	key <BKSL> { [	U2261,	U2377, U2364	] }; // ≡ ⍷ ⍤ -- Identical To / APL Functional Symbol Epsilon Underbar / APL Functional Symbol Jot Diaeresis
231};
232
233partial alphanumeric_keys modifier_keys 
234xkb_symbols "aplplusII" {
235	name[Group1]= "APL Keyboard Symbols: Manugistics APL*PLUS II";
236
237	include "apl(apl2)"
238
239	// `
240	key <TLDE> { [	dollar,	U22C4,	U236A	] }; // ⋄ ⍪ -- Diamond Operator / APL Functional Symbol Comma Bar
241	key <AE01> { [	NoSymbol, NoSymbol, U2261	] }; // ≡ -- Identical To
242
243	// [
244	key <AD11> { [	U2190,	NoSymbol,	U235E	] }; // ← ⍞ -- Leftwards Arrow / APL Functional Symbol Quote Quad
245	// ]
246	key <AD12> { [	U2192,	NoSymbol,	U236C	] }; // → ⍬ -- Rightwards Arrow / APL Functional Symbol Zilde
247
248	// ;
249	key <AC10> { [	bracketleft, parenleft,	U234E	] }; // ⍎ -- [See B key in SAX layout]
250	// '
251	key <AC11> { [	bracketright, parenright, U2355	] }; // ⍕ -- [See N key in SAX layout] 
252
253	key <BKSL> { [	U22A3,	U22A2,	U2359	] }; // ⊣ ⊢ ⍙ -- Left Tack / Right Tack / APL Functional Symbol Delta Underbar
254};
255
256
257// MicroAPL layout: http://aplwiki.com/APLXKeyboardLayouts
258// I didn't do the old-style MicroAPL layout; patches gratefully accepted
259partial alphanumeric_keys modifier_keys 
260xkb_symbols "aplx" {
261	name[Group1]= "APL Keyboard Symbols: APLX Unified APL Layout";
262
263	include "apl(unified)"
264
265	// `
266	key <TLDE> { [	NoSymbol,	U235E	] }; // ⍞ -- APL Functional Symbol Quote Quad
267	key <AE01> { [	NoSymbol,	U2336	] }; // ⌶ -- APL Functional Symbol I-Beam
268	key <AE02> { [	NoSymbol,	U236B	] }; // ⍫ -- APL Functional Symbol Del Tilde
269	key <AE03> { [	NoSymbol,	U2353	] }; // ⍒ -- APL Functional Symbol Del Stile
270	key <AE04> { [	NoSymbol,	U234B	] }; // ⍋ -- APL Functional Symbol Delta Stile
271	key <AE05> { [	NoSymbol,	U233D	] }; // ⌽ -- APL Functional Symbol Circle Stile
272	key <AE06> { [	NoSymbol,	U2349	] }; // ⍉ -- APL Functional Symbol Circle Backslash
273	key <AE07> { [	NoSymbol,	U2296	] }; // ⊖ -- Circled Minus
274	key <AE08> { [	NoSymbol,	U235F	] }; // ⍟ -- APL Functional Symbol Circle Star
275	// -
276	key <AE11> { [	NoSymbol,	exclam ] };
277
278	// [
279	key <AD11> { [	NoSymbol,	U2347	] }; // ⍇ -- Box With Left Arrow
280	// ]
281	key <AD12> { [	NoSymbol,	U2348	] }; // ⍈ -- Box With Right Arrow
282
283	// ;
284	key <AC10> { [	U234E,	U2261	] }; // ⍎ ≡ -- [See B key in SAX layout] / Identical To
285	// '
286	key <AC11> { [	U2355,	U2262	] }; // ⍕ ≢ -- [See N key in SAX layout] / Not Identical To
287
288	// ,
289	key <AB08> { [	U235D,	U236A	] }; // ⍝ ⍪ -- APL Functional Symbol Up Shoe Jot / APL Functional Symbol Comma Bar
290	// .
291	key <AB09> { [	U2340,	U2364	] }; // ⍀ ⍤ -- APL Functional Symbol Backslash Bar / APL Functional Symbol Jot Diaeresis
292	// /
293	key <AB10> { [	U233F ] }; // ⌿ -- APL Functional Symbol Slash Bar
294
295	key <BKSL> { [	U22A3,	U22A3	] }; // ⊣ ⊢ -- Left Tack / Right Tack
296};
297