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