• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// -*- indent-tabs-mode: nil -*-
2
3// Created by Alexander Pohoyda <alexander.pohoyda@gmx.net>
4// Geometry specification for IBM ThinkPad keyboard.
5// Compatible Models: THINKPAD 560Z 2640-90U, THINKPAD 560Z 2640-91U,
6//    THINKPAD 560Z 2640-B0U, THINKPAD 560Z 2640-B1U, THINKPAD 560Z 2640-RR3,
7//    THINKPAD 600 2645-31U, THINKPAD 600 2645-35U, THINKPAD 600 2645-41U,
8//    THINKPAD 600 2645-42U, THINKPAD 600 2645-45U, THINKPAD 600 2645-48U,
9//    THINKPAD 600 2645-51U, THINKPAD 600 2645-85U, THINKPAD 600 2645-A1U,
10//    THINKPAD 600 2645-RR1, THINKPAD 600 2645-RR2, THINKPAD 600E 2645-3AU,
11//    THINKPAD 600E 2645-4AU, THINKPAD 600E 2645-4BU, THINKPAD 600E 2645-55U,
12//    THINKPAD 600E 2645-5AU, THINKPAD 600E 2645-5BU, THINKPAD 600E 2645-5JU,
13//    THINKPAD 600E 2645-8AO, THINKPAD 600E 2645-8AU, THINKPAD 600E 2645-8BU,
14//    THINKPAD 600E 2645-AAU, THINKPAD 600E 2645-RRB, THINKPAD 600E 2645-RRD,
15//    THINKPAD 600E 2645-RRF, THINKPAD 600E 2645-RRS, THINKPAD A22E 2645-45U
16
17xkb_geometry "common" {
18    width = 290;
19    height = 150;
20    baseColor = "grey80";
21    labelColor = "white";
22
23    shape "FN0"  { cornerRadius = 1, { [17, 12] }, { [2, 0], [15, 10] } };
24    shape "NORM" { cornerRadius = 1, { [18, 18] }, { [2.5, 0], [15.5, 14] } };
25    shape "BKSP" { cornerRadius = 1, { [37, 18] }, { [2.5, 0], [34.5, 14] } };
26    shape "TABK" { cornerRadius = 1, { [27, 18] }, { [2.5, 0], [24.5, 14] } };
27    shape "CAPS" { cornerRadius = 1, { [31, 18] }, { [1, 0], [30, 16] },
28				                   { [1, 0], [26, 16] },
29				                   { [2.5, 0], [24.5, 14] } };
30    shape "RTSH" { cornerRadius = 1, { [50, 18] }, { [2.5, 0], [46.5, 14] } };
31    shape "MODK" { cornerRadius = 1, { [27.5, 18] }, { [2.5, 0], [25, 14] } };
32    shape "SPCE" { cornerRadius = 1, { [100, 18] }, { [2.5, 0], [97.5, 14] } };
33    shape "ARRS" { cornerRadius = 1, { [16, 13] }, { [1.5, 0], [14.5, 11] } };
34
35    shape "LED"  { cornerRadius = 2, { [3, 3] } };
36
37    shape "KEYS" { cornerRadius = 2,
38                   { [0, 0], [19, 0], [19, 13], [172, 13],
39	             [172, 0], [286, 0], [286, 138], [216, 138],
40	             [216, 124], [0, 124] } };
41
42    solid "KeyPanel" {
43	shape = "KEYS";
44	left = 2;
45	top = 5;
46	color = "black";
47    };
48
49    shape "NULL1" { cornerRadius = 1,
50                    { [0, 0], [50, 0], [50, 18], [34, 18], [34, 4],
51		      [16, 4], [16, 18], [0, 18] } };
52
53    solid "NullPanel1" {
54	shape = "NULL1";
55	left = 237;
56	top = 110;
57	color = "grey80";
58    };
59
60    shape "NULL2" { cornerRadius = 1, { [17, 13] } };
61
62    solid "NullPanel2" {
63	shape = "NULL2";
64	left = 219;
65	top = 129;
66	color = "grey80";
67    };
68
69    shape "NULL3" { cornerRadius = 1,
70                    { [0, 26],
71		      [72, 26], [72, 13], [76, 13], [76, 26],
72		      [149, 26], [149, 13], [153, 13], [153, 26],
73		      [226, 26], [226, 0], [230, 0], [230, 26],
74		      [284, 26], [285, 27],
75		      [0, 27] } };
76
77    solid "NullPanel3" {
78	shape = "NULL3";
79	left = 3;
80	top = 6;
81	color = "grey80";
82    };
83
84    indicator.onColor = "green";
85    indicator.offColor = "grey10";
86    indicator.top = 4;
87    indicator.shape = "LED";
88    indicator "HDDActivity" { onColor = "red"; left = 100; };
89    indicator "Num Lock"     { left = 108; };
90    indicator "Caps Lock"    { left = 114; };
91    indicator "Scroll Lock"  { left = 120; };
92    indicator "Power"	     { left = 128; };
93
94    key.gap = 1;
95    key.color = "grey60";
96
97    section "Function" {
98	left = 2;
99	top = 5;
100	key.shape = "FN0";
101	row {
102	    top = 1;
103	    keys {  <ESC>, { <PRSC>, 155 }, <SCLK>, <PAUS> };
104	};
105	row {
106	    top = 14;
107	    keys {  <FK01>, <FK02>, <FK03>, <FK04>,
108		    { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
109		    { <FK09>, 6 }, <FK10>, <FK11>, <FK12>
110	    };
111	};
112    }; // End of "Function" section
113
114    section "Control" {
115	left= 2;
116	top = 109;
117	key.shape = "MODK";
118	row {
119	    top = 1;
120	    keys { { <FN>, "NORM" }, <LCTL>, <LALT>,
121		   { <SPCE>, "SPCE" }, <RALT>, <RCTL>
122	    };
123	};
124    }; // End of "Control" section
125
126    section "Editing" {
127	top = 5;
128	left = 233;
129        key.shape = "FN0";
130	row {
131	    top = 1;
132	    keys { <INS>, <HOME>, <PGUP> };
133	};
134        row {
135	    top = 14;
136	    keys { <DELE>, <END>, <PGDN> };
137	};
138    }; // End of "Editing" section
139
140    section "Navigation" {
141	top = 114;
142	left = 236;
143	key.shape = "ARRS";
144	row {
145	    top = 1;
146	    left = 17;
147	    keys { <UP> };
148	};
149	row {
150	    top = 15;
151	    keys { <LEFT>, <DOWN>, <RGHT> };
152	};
153    }; // End of "Navigation" section
154
155    shape "STIK" { cornerRadius = 4, { [7, 7] } };
156
157    solid "STIK" {
158	priority = 255;
159	color = "red";
160	shape = "STIK";
161	top = 85;
162	left = 126;
163    };
164};
165
166// 85 keys
167// US/English (FRU 02K4785).
168xkb_geometry "us" {
169    include "thinkpad(common)"
170    description = "IBM ThinkPad 560Z/600/600E/A22E, US";
171
172    shape "RTRN" { cornerRadius = 1, { [43, 18] }, { [2.5, 0], [40.5, 14] } };
173    shape "LFSH" { cornerRadius = 1, { [43, 18] }, { [2.5, 0], [40.5, 14] } };
174    shape "BKSL" { cornerRadius = 1, { [28, 18] }, { [2.5, 0], [25.5, 14] } };
175
176    section "Alpha" {
177	left = 2;
178	top = 33;
179	key.gap = 1;
180	key.color = "grey60";
181	key.shape = "NORM";
182	row {
183	    top = 1;
184	    keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
185		   <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
186		   <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
187	    };
188	};
189	row {
190	    top = 20;
191	    keys { { <TAB>, "TABK" },
192		   <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
193		   <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
194		   <AD11>, <AD12>, { <BKSL>, "BKSL" }
195	    };
196	};
197	row {
198	    top = 39;
199	    keys { { <CAPS>, "CAPS" },
200		   <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
201		   <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
202		   <AC11>, { <RTRN>, "RTRN" }
203	    };
204	};
205	row {
206	    top = 58;
207	    keys { { <LFSH>, "LFSH" },
208		   <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
209		   <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
210		   { <RTSH>, "RTSH" }
211	    };
212	};
213    }; // End of "Alpha" section
214};
215
216// 86 keys
217// Tested on: DE/German, UK/English (FRU 02K4787).
218xkb_geometry "intl" {
219    include "thinkpad(common)"
220    description = "IBM ThinkPad 560Z/600/600E/A22E, Intl";
221
222    shape "RTRN" { cornerRadius = 1, { [28, 0], [28, 37], [4, 37], [4, 18],
223                                       [0, 18], [0, 0] },
224                                     { [25.5, 0], [25.5, 33], [6.5, 33],
225				       [6.5, 14], [2.5, 14], [2.5, 0] } };
226    shape "LFSH" { cornerRadius = 1, { [24, 18] }, { [2.5, 0], [21.5, 14] } };
227
228    section "Alpha" {
229	left = 2;
230	top = 33;
231	key.gap = 1;
232	key.color = "grey60";
233	key.shape = "NORM";
234	row {
235	    top = 1;
236	    keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
237		   <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
238		   <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
239	    };
240	};
241	row {
242	    top = 20;
243	    keys { { <TAB>, "TABK" },
244		   <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
245		   <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
246		   <AD11>, <AD12>, { <RTRN>, "RTRN" }
247	    };
248	};
249	row {
250	    top = 39;
251	    keys { { <CAPS>, "CAPS" },
252		   <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
253		   <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
254		   <AC11>, <AC12>
255	    };
256	};
257	row {
258	    top = 58;
259	    keys { { <LFSH>, "LFSH" }, <AB00>,
260		   <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
261		   <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
262		   { <RTSH>, "RTSH" }
263	    };
264	};
265    }; // End of "Alpha" section
266};
267
268xkb_geometry "60" {
269    width = 290;
270    height = 140;
271    baseColor = "grey80";
272    labelColor = "white";
273
274    shape "NORM" { cornerRadius = 1, { [18,   18] }, { [2, 0], [16, 16] } };
275
276    shape "ESC"  { cornerRadius = 1, { [17,   13] }, { [1.5, 0], [15.5, 12] } };
277    shape "FN0"  { cornerRadius = 1, { [17,   11] }, { [1.5, 0], [15.5, 10] } };
278
279    shape "BKSP" { cornerRadius = 1, { [37,   18] }, { [2, 0], [35, 16] } };
280
281    shape "TABK" { cornerRadius = 1, { [27.5, 18] }, { [2, 0], [25.5, 16] } };
282    shape "BKSL" { cornerRadius = 1, { [27.5, 18] }, { [2, 0], [25.5, 16] } };
283
284    shape "CAPS" { cornerRadius = 1, { [30.5, 18] }, { [2, 0], [28.5, 16] } };
285    shape "RTRN" { cornerRadius = 1, { [43.5, 18] }, { [2, 0], [41.5, 16] } };
286
287    shape "LFSH" { cornerRadius = 1, { [40,   18] }, { [2, 0], [38, 16] } };
288    shape "RTSH" { cornerRadius = 1, { [53,   18] }, { [2, 0], [51, 16] } };
289
290    shape "LCTL" { cornerRadius = 1, { [21,   18] }, { [2, 0], [19, 16] } };
291    shape "LWIN" { cornerRadius = 1, { [15,   18] }, { [1.5, 0], [13.5, 16] } };
292
293    shape "SPCE" { cornerRadius = 1, { [97,   18] }, { [2, 0], [95, 16] } };
294
295    shape "ARR1" { cornerRadius = 1, { [17,   13] }, { [1.5, 0], [15.5, 12] } };
296    shape "ARR2" { cornerRadius = 1, { [17,   11] }, { [1.5, 0], [15.5, 10] } };
297
298    shape "VOL"  { cornerRadius = 2.5, { [5, 5] } };
299    shape "TVTG" { cornerRadius = 0.5, { [0, 1], [17, 1], [17, 4], [0, 4] } };
300
301    shape "KEYS" { cornerRadius = 2,
302                   { [0, 0], [19, 0], [19, 16], [172, 16],
303	             [172, 4], [286, 4], [286, 133], [231, 133],
304	             [231, 126], [0, 126] } };
305
306    solid "KeyPanel" {
307	shape = "KEYS";
308	left = 2;
309	top = 3;
310	color = "black";
311    };
312
313    shape "NULL0" { cornerRadius = 0.5,
314                    { [0, 26],
315		      [72, 26], [72, 14], [76, 14], [76, 26],
316		      [149, 26], [149, 14], [153, 14], [153, 26],
317		      [226, 26], [226, 2], [230, 2], [230, 26],
318		      [284, 26], [284, 27],
319		      [0, 27] } };
320
321    solid "NullPanel0" {
322	shape = "NULL0";
323	left = 3;
324	top = 6;
325	color = "grey80";
326    };
327
328    shape "NULL1" { cornerRadius = 0.5, { [0, 12], [17, 12], [17, 13], [0, 13] } };
329
330    solid "NullPanel1" {
331	shape = "NULL1";
332	left = 3;
333	top = 6;
334	color = "grey80";
335    };
336
337    shape "MEDIA" { cornerRadius = 0.5, { [0, 0], [55, 0], [55, 10], [0, 10] } };
338
339    solid "MediaPanel" {
340	shape = "MEDIA";
341	left = 25.5;
342	top = 6;
343	color = "black";
344    };
345
346    section "Volume" {
347	left = 22;
348	top = 8.5;
349	key.shape = "VOL";
350	key.gap = 6;
351	key.color = "grey20";
352
353	row {
354	    keys { <MUTE>, <VOL->, <VOL+>, {<I1F>, "TVTG", color = "blue"} };
355	};
356    };
357
358    key.gap = 1;
359    key.color = "grey60";
360
361    section "Function" {
362	left = 2;
363	top = 3;
364	key.shape = "FN0";
365	row {
366	    key.shape = "ESC";
367	    top = 1;
368	    keys {  <ESC> };
369	};
370	row {
371	    top = 5;
372	    keys { { <PRSC>, 173 }, <SCLK>, <PAUS> };
373	};
374	row {
375	    top = 17;
376	    keys {  <FK01>, <FK02>, <FK03>, <FK04>,
377		    { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
378		    { <FK09>, 6 }, <FK10>, <FK11>, <FK12>
379	    };
380	};
381    }; // End of "Function" section
382
383    section "Control" {
384	left = 2;
385	top = 109;
386	key.shape = "NORM";
387	row {
388	    top = 1;
389	    keys { <FN>, { <LCTL>, "LCTL" }, { <LWIN>, "LWIN" }, <LALT>,
390		   { <SPCE>, "SPCE" }, <RALT>, <MENU>, <RCTL>
391	    };
392	};
393    }; // End of "Control" section
394
395    section "Editing" {
396	top = 7;
397	left = 233;
398        key.shape = "FN0";
399	row {
400	    top = 1;
401	    keys { <INS>, <HOME>, <PGUP> };
402	};
403        row {
404	    top = 13;
405	    keys { <DELE>, <END>, <PGDN> };
406	};
407    }; // End of "Editing" section
408
409    section "Navigation" {
410	top = 109;
411	left = 233;
412	row {
413	    key.shape = "ARR1";
414	    top = 1;
415	    keys { <I6A>, <UP>, <I69> };
416	};
417	row {
418	    key.shape = "ARR2";
419	    top = 15;
420	    keys { <LEFT>, <DOWN>, <RGHT> };
421	};
422    }; // End of "Navigation" section
423
424    shape "STIK" { cornerRadius = 3.5, { [7, 7] } };
425
426    solid "STIK" {
427	priority = 255;
428	color = "red";
429	shape = "STIK";
430	top = 85.5;
431	left = 125.5;
432    };
433
434    section "Alpha" {
435	left = 2;
436	top = 33;
437	key.shape = "NORM";
438	row {
439	    top = 1;
440	    keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
441		   <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
442		   <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
443	    };
444	};
445	row {
446	    top = 20;
447	    keys { { <TAB>, "TABK" },
448		   <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
449		   <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
450		   <AD11>, <AD12>, { <BKSL>, "BKSL" }
451	    };
452	};
453	row {
454	    top = 39;
455	    keys { { <CAPS>, "CAPS" },
456		   <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
457		   <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
458		   <AC11>, { <RTRN>, "RTRN", color = "blue" }
459	    };
460	};
461	row {
462	    top = 58;
463	    keys { { <LFSH>, "LFSH" },
464		   <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
465		   <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
466		   { <RTSH>, "RTSH" }
467	    };
468	};
469    }; // End of "Alpha" section
470};
471