├── Enclosure ├── readme.md ├── Keyboard layer base.svg ├── Keyboard layer top.svg ├── Keyboard layer base.dxf ├── Keyboard layer middle.svg └── Keyboard layer KeyCaps.svg ├── README.md └── RC2014_Keyboard.ino /Enclosure/readme.md: -------------------------------------------------------------------------------- 1 | DXF and SVG files 2 | 3 | Created in Inkscape. Designed to be cut from 2mm or 3mm acrylic or wood. KeyCaps layer to be printed, and ideally laminated too. 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RC2014-Keyboard 2 | 3 | Arduino sketch for RC2014 Mini Keyboard 4 | 5 | The program is derived from code written by and copyright Dave Curran of Tynemouth Software (http://blog.tynemouthsoftware.co.uk/2012/02/arduino-based-zx81-usb-keyboard.html) and subsequently modified by SmittyTone (https://github.com/smittytone/ZX81Alt) before being further modified by me. 6 | 7 | This code allows the use of 2 modifier keys, shift and symbol shift so that each key has 3 values - typically lower case, upper case and a symbol. 8 | 9 | It runs on a standard Arduino Uno (ATMEGA328) with serial output at 115200 baud, although the USB keyboard commands can be uncommented to use through a Leonardo or similar. 10 | 11 | The layout is a cross between ZX81, ZX Spectrum and whatever I felt fitted with the RC2014 12 | 13 | The keyboard is available to buy in kit form from Tindie (hyperlink to apper here soon). 14 | 15 | The .dxf and .svg files are available to cut your own case and key cover for this keyboard. For the two top layers you probably want to use 2mm acrylic, although depending on they height you mount the tactile switches, you might prefer 3mm thick middle layer. Spacers of at least 5mm should be used between the base and the keyboard PCB. 16 | -------------------------------------------------------------------------------- /Enclosure/Keyboard layer base.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 38 | 40 | 41 | 43 | image/svg+xml 44 | 46 | 47 | 48 | 49 | 50 | 55 | 59 | 64 | 69 | 74 | 79 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /RC2014_Keyboard.ino: -------------------------------------------------------------------------------- 1 | // ZX81 USB Keyboard for Leonardo 2 | // (c) Dave Curran 3 | // 2013-04-27 4 | 5 | // Modified with Function keys by Tony Smith 6 | // 2014-02-15 7 | 8 | // Modified for serial output by Spencer Owen 9 | // 2014-05-02 10 | 11 | #define NUM_ROWS 8 12 | #define NUM_COLS 5 13 | 14 | // keymap for normal use 15 | byte keyMap[NUM_ROWS][NUM_COLS] = { 16 | { '5', '4', '3', '2', '1' }, 17 | { 't', 'r', 'e', 'w', 'q' }, 18 | { '6', '7', '8', '9', '0' }, 19 | { 'g', 'f', 'd', 's', 'a' }, 20 | { 'y', 'u', 'i', 'o', 'p' }, 21 | { 'v', 'c', 'x', 'z', 0 }, 22 | { 'h', 'j', 'k', 'l', 13 }, 23 | { 'b', 'n', 'm', 0, ' ' } 24 | }; 25 | 26 | // keymap if Caps Shift is pressed 27 | // # gives £, \\ gives # 28 | byte keyMapShifted[NUM_ROWS][NUM_COLS] = { 29 | { 'L', '$', '\\', '@', 27 }, 30 | { 'T', 'R', 'E', 'W', 'Q' }, 31 | { 'D', 'U', 'R', '!', 127 }, 32 | { 'G', 'F', 'D', 'S', 'A' }, 33 | { 'Y', 'U', 'I', 'O', 'P' }, 34 | { 'V', 'C', 'X', 'Z', 0 }, 35 | { 'H', 'J', 'K', 'L', 13 }, 36 | { 'B', 'N', 'M', 0, 3 } 37 | }; 38 | 39 | // keymap if Symbol Shift is pressed 40 | byte keyMapAlt[NUM_ROWS][NUM_COLS] = { 41 | {'%' , '$' , '#' , '@' , '!'}, 42 | {'>' , '<' , '>' , '=' , '<'}, 43 | {'&', '\'', '(', ')', '_'}, 44 | {'}' , '{' , '\\' , '|' , '_'}, 45 | {'[', ']', '#', ';', '\"'}, 46 | {'/', '?', '£', ':', 0}, 47 | {'^', '-', '+', '=', 13}, 48 | {'*', ',', '.', 0, ' '} 49 | }; 50 | 51 | 52 | // Global variables 53 | 54 | int debounceCount[NUM_ROWS][NUM_COLS]; 55 | //int altKeyFlag; 56 | //int ctrlKeyFlag; 57 | 58 | // define the row and column pins 59 | byte colPins[NUM_COLS] = { 60 | 6, 5, 4, 3, 2 61 | }; 62 | byte rowPins[NUM_ROWS] = { 63 | 7, 8, 16, 11, 15, 9, 10, 14 64 | }; 65 | 66 | // where is the shift key 67 | #define SHIFT_COL 4 68 | #define SHIFT_ROW 5 69 | 70 | #define SS_COL 3 71 | #define SS_ROW 7 72 | 73 | // how many times does a key need to register as pressed? 74 | #define DEBOUNCE_VALUE 200 75 | #define REPEAT_DELAY 400 76 | 77 | /* */ 78 | /* setup */ 79 | /* */ 80 | void setup() 81 | { 82 | Serial.begin(115200); // RC2014 runs at 115,200 baud 83 | // set all pins as inputs and activate pullups 84 | for (byte c = 0; c < NUM_COLS; c++) 85 | { 86 | pinMode(colPins[c], INPUT); 87 | digitalWrite(colPins[c], HIGH); 88 | 89 | // clear debounce counts 90 | for (byte r = 0; r < NUM_ROWS; r++) 91 | { 92 | debounceCount[r][c] = 0; 93 | } 94 | } 95 | 96 | // set all pins as inputs 97 | for (byte r = 0; r < NUM_ROWS; r++) 98 | { 99 | pinMode(rowPins[r], INPUT); 100 | } 101 | // initialize control over the keyboard: 102 | //Keyboard.begin(); 103 | } 104 | 105 | /* */ 106 | /* loop */ 107 | /* */ 108 | void loop() 109 | { 110 | 111 | 112 | bool shifted = false; 113 | bool keyPressed = false; 114 | bool ss = false; 115 | 116 | // Check for Caps Shift 117 | 118 | pinMode(rowPins[SHIFT_ROW], OUTPUT); 119 | 120 | if (digitalRead(colPins[SHIFT_COL]) == LOW) 121 | { 122 | shifted = true; 123 | } 124 | // Check for Symbol Shift 125 | 126 | pinMode(rowPins[SHIFT_ROW], INPUT); 127 | 128 | pinMode(rowPins[SS_ROW], OUTPUT); 129 | 130 | if (digitalRead(colPins[SS_COL]) == LOW) 131 | { 132 | ss = true; 133 | } 134 | pinMode(rowPins[SS_ROW], INPUT); 135 | 136 | //if (shifted == true && altKeyFlag == 255) 137 | if (shifted == true && 0 == 255) 138 | { 139 | // NOP in order to prevent Function selection from auto-repeating 140 | } 141 | 142 | //if (ss == true && altKeyFlag == 255) 143 | if (ss == true && 0 == 255) 144 | { 145 | // NOP in order to prevent Function selection from auto-repeating 146 | } 147 | 148 | 149 | else 150 | { 151 | pinMode(rowPins[SHIFT_ROW], INPUT); 152 | 153 | // For each row 154 | 155 | for (byte r = 0 ; r < NUM_ROWS ; r++) 156 | { 157 | // Turn the row on 158 | 159 | pinMode(rowPins[r], OUTPUT); 160 | digitalWrite(rowPins[r], LOW); 161 | 162 | for (byte c = 0 ; c < NUM_COLS ; c++) 163 | { 164 | if (digitalRead(colPins[c]) == LOW) 165 | { 166 | // Increase the debounce count 167 | 168 | debounceCount[r][c]++; 169 | 170 | // Has the switch been pressed continually for long enough? 171 | 172 | int count = debounceCount[r][c]; 173 | if (count == DEBOUNCE_VALUE) 174 | { 175 | // First press 176 | 177 | keyPressed = true; 178 | pressKey(r, c, shifted, ss); 179 | } 180 | else if (count > DEBOUNCE_VALUE) 181 | { 182 | // Check for repeats 183 | 184 | count -= DEBOUNCE_VALUE; 185 | if (count % REPEAT_DELAY == 0) 186 | { 187 | // Send repeat press 188 | 189 | keyPressed = true; 190 | pressKey(r, c, shifted, ss); 191 | } 192 | } 193 | } 194 | else 195 | { 196 | // No key pressed, so reset debounce count 197 | 198 | debounceCount[r][c] = 0; 199 | } 200 | } 201 | 202 | // Turn the row back off 203 | 204 | pinMode(rowPins[r], INPUT); 205 | } 206 | 207 | digitalWrite(rowPins[SHIFT_ROW], LOW); 208 | } 209 | } 210 | 211 | void pressKey(byte r, byte c, bool shifted, bool ss) 212 | { 213 | byte key = 0; 214 | 215 | if (shifted == true) { 216 | key = keyMapShifted[r][c]; 217 | } 218 | 219 | if (ss == true) { 220 | key = keyMapAlt[r][c]; 221 | } 222 | 223 | if (ss == false && shifted == false) { 224 | key = keyMap[r][c]; 225 | } 226 | if (key > 0) 227 | { 228 | // send the key 229 | //Keyboard.write(key); 230 | Serial.write(key); 231 | } 232 | } 233 | -------------------------------------------------------------------------------- /Enclosure/Keyboard layer top.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 38 | 40 | 41 | 43 | image/svg+xml 44 | 46 | 47 | 48 | 49 | 50 | 55 | 59 | 64 | 69 | 74 | 79 | 83 | 87 | 91 | 95 | 99 | 103 | 107 | 111 | 115 | 119 | 123 | 127 | 131 | 135 | 139 | 143 | 147 | 151 | 155 | 159 | 163 | 167 | 171 | 175 | 179 | 183 | 187 | 191 | 195 | 199 | 203 | 207 | 211 | 215 | 219 | 223 | 227 | 231 | 235 | 239 | 240 | 241 | -------------------------------------------------------------------------------- /Enclosure/Keyboard layer base.dxf: -------------------------------------------------------------------------------- 1 | 0 2 | SECTION 3 | 2 4 | HEADER 5 | 9 6 | $ACADVER 7 | 1 8 | AC1014 9 | 9 10 | $HANDSEED 11 | 5 12 | FFFF 13 | 9 14 | $MEASUREMENT 15 | 70 16 | 1 17 | 0 18 | ENDSEC 19 | 0 20 | SECTION 21 | 2 22 | TABLES 23 | 0 24 | TABLE 25 | 2 26 | VPORT 27 | 5 28 | 8 29 | 330 30 | 0 31 | 100 32 | AcDbSymbolTable 33 | 70 34 | 4 35 | 0 36 | VPORT 37 | 5 38 | 2E 39 | 330 40 | 8 41 | 100 42 | AcDbSymbolTableRecord 43 | 100 44 | AcDbViewportTableRecord 45 | 2 46 | *ACTIVE 47 | 70 48 | 0 49 | 10 50 | 0.0 51 | 20 52 | 0.0 53 | 11 54 | 1.0 55 | 21 56 | 1.0 57 | 12 58 | 210.0 59 | 22 60 | 148.5 61 | 13 62 | 0.0 63 | 23 64 | 0.0 65 | 14 66 | 10.0 67 | 24 68 | 10.0 69 | 15 70 | 10.0 71 | 25 72 | 10.0 73 | 16 74 | 0.0 75 | 26 76 | 0.0 77 | 36 78 | 1.0 79 | 17 80 | 0.0 81 | 27 82 | 0.0 83 | 37 84 | 0.0 85 | 40 86 | 341.0 87 | 41 88 | 1.24 89 | 42 90 | 50.0 91 | 43 92 | 0.0 93 | 44 94 | 0.0 95 | 50 96 | 0.0 97 | 51 98 | 0.0 99 | 71 100 | 0 101 | 72 102 | 100 103 | 73 104 | 1 105 | 74 106 | 3 107 | 75 108 | 0 109 | 76 110 | 0 111 | 77 112 | 0 113 | 78 114 | 0 115 | 0 116 | ENDTAB 117 | 0 118 | TABLE 119 | 2 120 | LTYPE 121 | 5 122 | 5 123 | 330 124 | 0 125 | 100 126 | AcDbSymbolTable 127 | 70 128 | 1 129 | 0 130 | LTYPE 131 | 5 132 | 14 133 | 330 134 | 5 135 | 100 136 | AcDbSymbolTableRecord 137 | 100 138 | AcDbLinetypeTableRecord 139 | 2 140 | BYBLOCK 141 | 70 142 | 0 143 | 3 144 | 145 | 72 146 | 65 147 | 73 148 | 0 149 | 40 150 | 0.0 151 | 0 152 | LTYPE 153 | 5 154 | 15 155 | 330 156 | 5 157 | 100 158 | AcDbSymbolTableRecord 159 | 100 160 | AcDbLinetypeTableRecord 161 | 2 162 | BYLAYER 163 | 70 164 | 0 165 | 3 166 | 167 | 72 168 | 65 169 | 73 170 | 0 171 | 40 172 | 0.0 173 | 0 174 | LTYPE 175 | 5 176 | 16 177 | 330 178 | 5 179 | 100 180 | AcDbSymbolTableRecord 181 | 100 182 | AcDbLinetypeTableRecord 183 | 2 184 | CONTINUOUS 185 | 70 186 | 0 187 | 3 188 | Solid line 189 | 72 190 | 65 191 | 73 192 | 0 193 | 40 194 | 0.0 195 | 0 196 | ENDTAB 197 | 0 198 | TABLE 199 | 2 200 | LAYER 201 | 5 202 | 2 203 | 100 204 | AcDbSymbolTable 205 | 70 206 | 2 207 | 0 208 | LAYER 209 | 5 210 | 50 211 | 100 212 | AcDbSymbolTableRecord 213 | 100 214 | AcDbLayerTableRecord 215 | 2 216 | 0 217 | 70 218 | 0 219 | 6 220 | CONTINUOUS 221 | 0 222 | LAYER 223 | 5 224 | 51 225 | 100 226 | AcDbSymbolTableRecord 227 | 100 228 | AcDbLayerTableRecord 229 | 2 230 | Base 231 | 70 232 | 0 233 | 6 234 | CONTINUOUS 235 | 0 236 | ENDTAB 237 | 0 238 | TABLE 239 | 2 240 | STYLE 241 | 5 242 | 3 243 | 330 244 | 0 245 | 100 246 | AcDbSymbolTable 247 | 70 248 | 1 249 | 0 250 | STYLE 251 | 5 252 | 11 253 | 330 254 | 3 255 | 100 256 | AcDbSymbolTableRecord 257 | 100 258 | AcDbTextStyleTableRecord 259 | 2 260 | STANDARD 261 | 70 262 | 0 263 | 40 264 | 0.0 265 | 41 266 | 1.0 267 | 50 268 | 0.0 269 | 71 270 | 0 271 | 42 272 | 2.5 273 | 3 274 | txt 275 | 4 276 | 277 | 0 278 | ENDTAB 279 | 0 280 | TABLE 281 | 2 282 | VIEW 283 | 5 284 | 6 285 | 330 286 | 0 287 | 100 288 | AcDbSymbolTable 289 | 70 290 | 0 291 | 0 292 | ENDTAB 293 | 0 294 | TABLE 295 | 2 296 | UCS 297 | 5 298 | 7 299 | 330 300 | 0 301 | 100 302 | AcDbSymbolTable 303 | 70 304 | 0 305 | 0 306 | ENDTAB 307 | 0 308 | TABLE 309 | 2 310 | APPID 311 | 5 312 | 9 313 | 330 314 | 0 315 | 100 316 | AcDbSymbolTable 317 | 70 318 | 2 319 | 0 320 | APPID 321 | 5 322 | 12 323 | 330 324 | 9 325 | 100 326 | AcDbSymbolTableRecord 327 | 100 328 | AcDbRegAppTableRecord 329 | 2 330 | ACAD 331 | 70 332 | 0 333 | 0 334 | ENDTAB 335 | 0 336 | TABLE 337 | 2 338 | DIMSTYLE 339 | 5 340 | A 341 | 330 342 | 0 343 | 100 344 | AcDbSymbolTable 345 | 70 346 | 1 347 | 0 348 | DIMSTYLE 349 | 105 350 | 27 351 | 330 352 | A 353 | 100 354 | AcDbSymbolTableRecord 355 | 100 356 | AcDbDimStyleTableRecord 357 | 2 358 | ISO-25 359 | 70 360 | 0 361 | 3 362 | 363 | 4 364 | 365 | 5 366 | 367 | 6 368 | 369 | 7 370 | 371 | 40 372 | 1.0 373 | 41 374 | 2.5 375 | 42 376 | 0.625 377 | 43 378 | 3.75 379 | 44 380 | 1.25 381 | 45 382 | 0.0 383 | 46 384 | 0.0 385 | 47 386 | 0.0 387 | 48 388 | 0.0 389 | 140 390 | 2.5 391 | 141 392 | 2.5 393 | 142 394 | 0.0 395 | 143 396 | 0.03937007874016 397 | 144 398 | 1.0 399 | 145 400 | 0.0 401 | 146 402 | 1.0 403 | 147 404 | 0.625 405 | 71 406 | 0 407 | 72 408 | 0 409 | 73 410 | 0 411 | 74 412 | 0 413 | 75 414 | 0 415 | 76 416 | 0 417 | 77 418 | 1 419 | 78 420 | 8 421 | 170 422 | 0 423 | 171 424 | 3 425 | 172 426 | 1 427 | 173 428 | 0 429 | 174 430 | 0 431 | 175 432 | 0 433 | 176 434 | 0 435 | 177 436 | 0 437 | 178 438 | 0 439 | 270 440 | 2 441 | 271 442 | 2 443 | 272 444 | 2 445 | 273 446 | 2 447 | 274 448 | 3 449 | 340 450 | 11 451 | 275 452 | 0 453 | 280 454 | 0 455 | 281 456 | 0 457 | 282 458 | 0 459 | 283 460 | 0 461 | 284 462 | 8 463 | 285 464 | 0 465 | 286 466 | 0 467 | 287 468 | 3 469 | 288 470 | 0 471 | 0 472 | ENDTAB 473 | 0 474 | TABLE 475 | 2 476 | BLOCK_RECORD 477 | 5 478 | 1 479 | 330 480 | 0 481 | 100 482 | AcDbSymbolTable 483 | 70 484 | 1 485 | 0 486 | BLOCK_RECORD 487 | 5 488 | 1F 489 | 330 490 | 1 491 | 100 492 | AcDbSymbolTableRecord 493 | 100 494 | AcDbBlockTableRecord 495 | 2 496 | *MODEL_SPACE 497 | 0 498 | BLOCK_RECORD 499 | 5 500 | 1B 501 | 330 502 | 1 503 | 100 504 | AcDbSymbolTableRecord 505 | 100 506 | AcDbBlockTableRecord 507 | 2 508 | *PAPER_SPACE 509 | 0 510 | ENDTAB 511 | 0 512 | ENDSEC 513 | 0 514 | SECTION 515 | 2 516 | BLOCKS 517 | 0 518 | BLOCK 519 | 5 520 | 20 521 | 330 522 | 1F 523 | 100 524 | AcDbEntity 525 | 8 526 | 0 527 | 100 528 | AcDbBlockBegin 529 | 2 530 | *MODEL_SPACE 531 | 70 532 | 0 533 | 10 534 | 0.0 535 | 20 536 | 0.0 537 | 30 538 | 0.0 539 | 3 540 | *MODEL_SPACE 541 | 1 542 | 543 | 0 544 | ENDBLK 545 | 5 546 | 21 547 | 330 548 | 1F 549 | 100 550 | AcDbEntity 551 | 8 552 | 0 553 | 100 554 | AcDbBlockEnd 555 | 0 556 | BLOCK 557 | 5 558 | 1C 559 | 330 560 | 1B 561 | 100 562 | AcDbEntity 563 | 67 564 | 1 565 | 8 566 | 0 567 | 100 568 | AcDbBlockBegin 569 | 2 570 | *PAPER_SPACE 571 | 1 572 | 573 | 0 574 | ENDBLK 575 | 5 576 | 1D 577 | 330 578 | 1B 579 | 100 580 | AcDbEntity 581 | 67 582 | 1 583 | 8 584 | 0 585 | 100 586 | AcDbBlockEnd 587 | 0 588 | ENDSEC 589 | 0 590 | SECTION 591 | 2 592 | ENTITIES 593 | 0 594 | LINE 595 | 5 596 | 100 597 | 100 598 | AcDbEntity 599 | 8 600 | Base 601 | 62 602 | 1 603 | 100 604 | AcDbLine 605 | 10 606 | 54.184894 607 | 20 608 | 281.549384 609 | 30 610 | 0.0 611 | 11 612 | 168.933306 613 | 21 614 | 281.549384 615 | 31 616 | 0.0 617 | 0 618 | SPLINE 619 | 5 620 | 101 621 | 100 622 | AcDbEntity 623 | 8 624 | Base 625 | 62 626 | 1 627 | 100 628 | AcDbSpline 629 | 70 630 | 8 631 | 71 632 | 3 633 | 72 634 | 8 635 | 73 636 | 4 637 | 74 638 | 0 639 | 40 640 | 0 641 | 40 642 | 0 643 | 40 644 | 0 645 | 40 646 | 0 647 | 40 648 | 1 649 | 40 650 | 1 651 | 40 652 | 1 653 | 40 654 | 1 655 | 10 656 | 168.933306 657 | 20 658 | 281.549384 659 | 30 660 | 0.0 661 | 10 662 | 172.336220 663 | 20 664 | 281.549384 665 | 30 666 | 0.0 667 | 10 668 | 175.075751 669 | 20 670 | 278.809853 671 | 30 672 | 0.0 673 | 10 674 | 175.075751 675 | 20 676 | 275.406937 677 | 30 678 | 0.0 679 | 0 680 | LINE 681 | 5 682 | 102 683 | 100 684 | AcDbEntity 685 | 8 686 | Base 687 | 62 688 | 1 689 | 100 690 | AcDbLine 691 | 10 692 | 175.075751 693 | 20 694 | 275.406937 695 | 30 696 | 0.0 697 | 11 698 | 175.075751 699 | 21 700 | 217.837722 701 | 31 702 | 0.0 703 | 0 704 | SPLINE 705 | 5 706 | 103 707 | 100 708 | AcDbEntity 709 | 8 710 | Base 711 | 62 712 | 1 713 | 100 714 | AcDbSpline 715 | 70 716 | 8 717 | 71 718 | 3 719 | 72 720 | 8 721 | 73 722 | 4 723 | 74 724 | 0 725 | 40 726 | 0 727 | 40 728 | 0 729 | 40 730 | 0 731 | 40 732 | 0 733 | 40 734 | 1 735 | 40 736 | 1 737 | 40 738 | 1 739 | 40 740 | 1 741 | 10 742 | 175.075751 743 | 20 744 | 217.837722 745 | 30 746 | 0.0 747 | 10 748 | 175.075751 749 | 20 750 | 214.434808 751 | 30 752 | 0.0 753 | 10 754 | 172.336220 755 | 20 756 | 211.695277 757 | 30 758 | 0.0 759 | 10 760 | 168.933306 761 | 20 762 | 211.695277 763 | 30 764 | 0.0 765 | 0 766 | LINE 767 | 5 768 | 104 769 | 100 770 | AcDbEntity 771 | 8 772 | Base 773 | 62 774 | 1 775 | 100 776 | AcDbLine 777 | 10 778 | 168.933306 779 | 20 780 | 211.695277 781 | 30 782 | 0.0 783 | 11 784 | 54.184894 785 | 21 786 | 211.695277 787 | 31 788 | 0.0 789 | 0 790 | SPLINE 791 | 5 792 | 105 793 | 100 794 | AcDbEntity 795 | 8 796 | Base 797 | 62 798 | 1 799 | 100 800 | AcDbSpline 801 | 70 802 | 8 803 | 71 804 | 3 805 | 72 806 | 8 807 | 73 808 | 4 809 | 74 810 | 0 811 | 40 812 | 0 813 | 40 814 | 0 815 | 40 816 | 0 817 | 40 818 | 0 819 | 40 820 | 1 821 | 40 822 | 1 823 | 40 824 | 1 825 | 40 826 | 1 827 | 10 828 | 54.184894 829 | 20 830 | 211.695277 831 | 30 832 | 0.0 833 | 10 834 | 50.781977 835 | 20 836 | 211.695277 837 | 30 838 | 0.0 839 | 10 840 | 48.042446 841 | 20 842 | 214.434808 843 | 30 844 | 0.0 845 | 10 846 | 48.042446 847 | 20 848 | 217.837722 849 | 30 850 | 0.0 851 | 0 852 | LINE 853 | 5 854 | 106 855 | 100 856 | AcDbEntity 857 | 8 858 | Base 859 | 62 860 | 1 861 | 100 862 | AcDbLine 863 | 10 864 | 48.042446 865 | 20 866 | 217.837722 867 | 30 868 | 0.0 869 | 11 870 | 48.042446 871 | 21 872 | 275.406937 873 | 31 874 | 0.0 875 | 0 876 | SPLINE 877 | 5 878 | 107 879 | 100 880 | AcDbEntity 881 | 8 882 | Base 883 | 62 884 | 1 885 | 100 886 | AcDbSpline 887 | 70 888 | 8 889 | 71 890 | 3 891 | 72 892 | 8 893 | 73 894 | 4 895 | 74 896 | 0 897 | 40 898 | 0 899 | 40 900 | 0 901 | 40 902 | 0 903 | 40 904 | 0 905 | 40 906 | 1 907 | 40 908 | 1 909 | 40 910 | 1 911 | 40 912 | 1 913 | 10 914 | 48.042446 915 | 20 916 | 275.406937 917 | 30 918 | 0.0 919 | 10 920 | 48.042446 921 | 20 922 | 278.809853 923 | 30 924 | 0.0 925 | 10 926 | 50.781977 927 | 20 928 | 281.549384 929 | 30 930 | 0.0 931 | 10 932 | 54.184894 933 | 20 934 | 281.549384 935 | 30 936 | 0.0 937 | 0 938 | LINE 939 | 5 940 | 108 941 | 100 942 | AcDbEntity 943 | 8 944 | Base 945 | 62 946 | 1 947 | 100 948 | AcDbLine 949 | 10 950 | 54.184894 951 | 20 952 | 281.549384 953 | 30 954 | 0.0 955 | 11 956 | 54.184894 957 | 21 958 | 281.549384 959 | 31 960 | 0.0 961 | 0 962 | SPLINE 963 | 5 964 | 109 965 | 100 966 | AcDbEntity 967 | 8 968 | Base 969 | 62 970 | 1 971 | 100 972 | AcDbSpline 973 | 70 974 | 8 975 | 71 976 | 3 977 | 72 978 | 8 979 | 73 980 | 4 981 | 74 982 | 0 983 | 40 984 | 0 985 | 40 986 | 0 987 | 40 988 | 0 989 | 40 990 | 0 991 | 40 992 | 1 993 | 40 994 | 1 995 | 40 996 | 1 997 | 40 998 | 1 999 | 10 1000 | 55.921576 1001 | 20 1002 | 275.567439 1003 | 30 1004 | 0.0 1005 | 10 1006 | 55.921576 1007 | 20 1008 | 274.506290 1009 | 30 1010 | 0.0 1011 | 10 1012 | 55.061346 1013 | 20 1014 | 273.646060 1015 | 30 1016 | 0.0 1017 | 10 1018 | 54.000199 1019 | 20 1020 | 273.646060 1021 | 30 1022 | 0.0 1023 | 0 1024 | SPLINE 1025 | 5 1026 | 10a 1027 | 100 1028 | AcDbEntity 1029 | 8 1030 | Base 1031 | 62 1032 | 1 1033 | 100 1034 | AcDbSpline 1035 | 70 1036 | 8 1037 | 71 1038 | 3 1039 | 72 1040 | 8 1041 | 73 1042 | 4 1043 | 74 1044 | 0 1045 | 40 1046 | 0 1047 | 40 1048 | 0 1049 | 40 1050 | 0 1051 | 40 1052 | 0 1053 | 40 1054 | 1 1055 | 40 1056 | 1 1057 | 40 1058 | 1 1059 | 40 1060 | 1 1061 | 10 1062 | 54.000199 1063 | 20 1064 | 273.646060 1065 | 30 1066 | 0.0 1067 | 10 1068 | 52.939049 1069 | 20 1070 | 273.646060 1071 | 30 1072 | 0.0 1073 | 10 1074 | 52.078819 1075 | 20 1076 | 274.506290 1077 | 30 1078 | 0.0 1079 | 10 1080 | 52.078819 1081 | 20 1082 | 275.567439 1083 | 30 1084 | 0.0 1085 | 0 1086 | SPLINE 1087 | 5 1088 | 10b 1089 | 100 1090 | AcDbEntity 1091 | 8 1092 | Base 1093 | 62 1094 | 1 1095 | 100 1096 | AcDbSpline 1097 | 70 1098 | 8 1099 | 71 1100 | 3 1101 | 72 1102 | 8 1103 | 73 1104 | 4 1105 | 74 1106 | 0 1107 | 40 1108 | 0 1109 | 40 1110 | 0 1111 | 40 1112 | 0 1113 | 40 1114 | 0 1115 | 40 1116 | 1 1117 | 40 1118 | 1 1119 | 40 1120 | 1 1121 | 40 1122 | 1 1123 | 10 1124 | 52.078819 1125 | 20 1126 | 275.567439 1127 | 30 1128 | 0.0 1129 | 10 1130 | 52.078819 1131 | 20 1132 | 276.628587 1133 | 30 1134 | 0.0 1135 | 10 1136 | 52.939049 1137 | 20 1138 | 277.488818 1139 | 30 1140 | 0.0 1141 | 10 1142 | 54.000199 1143 | 20 1144 | 277.488818 1145 | 30 1146 | 0.0 1147 | 0 1148 | SPLINE 1149 | 5 1150 | 10c 1151 | 100 1152 | AcDbEntity 1153 | 8 1154 | Base 1155 | 62 1156 | 1 1157 | 100 1158 | AcDbSpline 1159 | 70 1160 | 8 1161 | 71 1162 | 3 1163 | 72 1164 | 8 1165 | 73 1166 | 4 1167 | 74 1168 | 0 1169 | 40 1170 | 0 1171 | 40 1172 | 0 1173 | 40 1174 | 0 1175 | 40 1176 | 0 1177 | 40 1178 | 1 1179 | 40 1180 | 1 1181 | 40 1182 | 1 1183 | 40 1184 | 1 1185 | 10 1186 | 54.000199 1187 | 20 1188 | 277.488818 1189 | 30 1190 | 0.0 1191 | 10 1192 | 55.061346 1193 | 20 1194 | 277.488818 1195 | 30 1196 | 0.0 1197 | 10 1198 | 55.921576 1199 | 20 1200 | 276.628587 1201 | 30 1202 | 0.0 1203 | 10 1204 | 55.921576 1205 | 20 1206 | 275.567439 1207 | 30 1208 | 0.0 1209 | 0 1210 | LINE 1211 | 5 1212 | 10d 1213 | 100 1214 | AcDbEntity 1215 | 8 1216 | Base 1217 | 62 1218 | 1 1219 | 100 1220 | AcDbLine 1221 | 10 1222 | 55.921576 1223 | 20 1224 | 275.567439 1225 | 30 1226 | 0.0 1227 | 11 1228 | 55.921576 1229 | 21 1230 | 275.567439 1231 | 31 1232 | 0.0 1233 | 0 1234 | SPLINE 1235 | 5 1236 | 10e 1237 | 100 1238 | AcDbEntity 1239 | 8 1240 | Base 1241 | 62 1242 | 1 1243 | 100 1244 | AcDbSpline 1245 | 70 1246 | 8 1247 | 71 1248 | 3 1249 | 72 1250 | 8 1251 | 73 1252 | 4 1253 | 74 1254 | 0 1255 | 40 1256 | 0 1257 | 40 1258 | 0 1259 | 40 1260 | 0 1261 | 40 1262 | 0 1263 | 40 1264 | 1 1265 | 40 1266 | 1 1267 | 40 1268 | 1 1269 | 40 1270 | 1 1271 | 10 1272 | 55.984572 1273 | 20 1274 | 217.594602 1275 | 30 1276 | 0.0 1277 | 10 1278 | 55.984572 1279 | 20 1280 | 216.533454 1281 | 30 1282 | 0.0 1283 | 10 1284 | 55.124342 1285 | 20 1286 | 215.673223 1287 | 30 1288 | 0.0 1289 | 10 1290 | 54.063195 1291 | 20 1292 | 215.673223 1293 | 30 1294 | 0.0 1295 | 0 1296 | SPLINE 1297 | 5 1298 | 10f 1299 | 100 1300 | AcDbEntity 1301 | 8 1302 | Base 1303 | 62 1304 | 1 1305 | 100 1306 | AcDbSpline 1307 | 70 1308 | 8 1309 | 71 1310 | 3 1311 | 72 1312 | 8 1313 | 73 1314 | 4 1315 | 74 1316 | 0 1317 | 40 1318 | 0 1319 | 40 1320 | 0 1321 | 40 1322 | 0 1323 | 40 1324 | 0 1325 | 40 1326 | 1 1327 | 40 1328 | 1 1329 | 40 1330 | 1 1331 | 40 1332 | 1 1333 | 10 1334 | 54.063195 1335 | 20 1336 | 215.673223 1337 | 30 1338 | 0.0 1339 | 10 1340 | 53.002045 1341 | 20 1342 | 215.673223 1343 | 30 1344 | 0.0 1345 | 10 1346 | 52.141815 1347 | 20 1348 | 216.533454 1349 | 30 1350 | 0.0 1351 | 10 1352 | 52.141815 1353 | 20 1354 | 217.594602 1355 | 30 1356 | 0.0 1357 | 0 1358 | SPLINE 1359 | 5 1360 | 110 1361 | 100 1362 | AcDbEntity 1363 | 8 1364 | Base 1365 | 62 1366 | 1 1367 | 100 1368 | AcDbSpline 1369 | 70 1370 | 8 1371 | 71 1372 | 3 1373 | 72 1374 | 8 1375 | 73 1376 | 4 1377 | 74 1378 | 0 1379 | 40 1380 | 0 1381 | 40 1382 | 0 1383 | 40 1384 | 0 1385 | 40 1386 | 0 1387 | 40 1388 | 1 1389 | 40 1390 | 1 1391 | 40 1392 | 1 1393 | 40 1394 | 1 1395 | 10 1396 | 52.141815 1397 | 20 1398 | 217.594602 1399 | 30 1400 | 0.0 1401 | 10 1402 | 52.141815 1403 | 20 1404 | 218.655750 1405 | 30 1406 | 0.0 1407 | 10 1408 | 53.002045 1409 | 20 1410 | 219.515981 1411 | 30 1412 | 0.0 1413 | 10 1414 | 54.063195 1415 | 20 1416 | 219.515981 1417 | 30 1418 | 0.0 1419 | 0 1420 | SPLINE 1421 | 5 1422 | 111 1423 | 100 1424 | AcDbEntity 1425 | 8 1426 | Base 1427 | 62 1428 | 1 1429 | 100 1430 | AcDbSpline 1431 | 70 1432 | 8 1433 | 71 1434 | 3 1435 | 72 1436 | 8 1437 | 73 1438 | 4 1439 | 74 1440 | 0 1441 | 40 1442 | 0 1443 | 40 1444 | 0 1445 | 40 1446 | 0 1447 | 40 1448 | 0 1449 | 40 1450 | 1 1451 | 40 1452 | 1 1453 | 40 1454 | 1 1455 | 40 1456 | 1 1457 | 10 1458 | 54.063195 1459 | 20 1460 | 219.515981 1461 | 30 1462 | 0.0 1463 | 10 1464 | 55.124342 1465 | 20 1466 | 219.515981 1467 | 30 1468 | 0.0 1469 | 10 1470 | 55.984572 1471 | 20 1472 | 218.655750 1473 | 30 1474 | 0.0 1475 | 10 1476 | 55.984572 1477 | 20 1478 | 217.594602 1479 | 30 1480 | 0.0 1481 | 0 1482 | LINE 1483 | 5 1484 | 112 1485 | 100 1486 | AcDbEntity 1487 | 8 1488 | Base 1489 | 62 1490 | 1 1491 | 100 1492 | AcDbLine 1493 | 10 1494 | 55.984572 1495 | 20 1496 | 217.594602 1497 | 30 1498 | 0.0 1499 | 11 1500 | 55.984572 1501 | 21 1502 | 217.594602 1503 | 31 1504 | 0.0 1505 | 0 1506 | SPLINE 1507 | 5 1508 | 113 1509 | 100 1510 | AcDbEntity 1511 | 8 1512 | Base 1513 | 62 1514 | 1 1515 | 100 1516 | AcDbSpline 1517 | 70 1518 | 8 1519 | 71 1520 | 3 1521 | 72 1522 | 8 1523 | 73 1524 | 4 1525 | 74 1526 | 0 1527 | 40 1528 | 0 1529 | 40 1530 | 0 1531 | 40 1532 | 0 1533 | 40 1534 | 0 1535 | 40 1536 | 1 1537 | 40 1538 | 1 1539 | 40 1540 | 1 1541 | 40 1542 | 1 1543 | 10 1544 | 171.097222 1545 | 20 1546 | 217.582001 1547 | 30 1548 | 0.0 1549 | 10 1550 | 171.097222 1551 | 20 1552 | 216.520853 1553 | 30 1554 | 0.0 1555 | 10 1556 | 170.236992 1557 | 20 1558 | 215.660622 1559 | 30 1560 | 0.0 1561 | 10 1562 | 169.175845 1563 | 20 1564 | 215.660622 1565 | 30 1566 | 0.0 1567 | 0 1568 | SPLINE 1569 | 5 1570 | 114 1571 | 100 1572 | AcDbEntity 1573 | 8 1574 | Base 1575 | 62 1576 | 1 1577 | 100 1578 | AcDbSpline 1579 | 70 1580 | 8 1581 | 71 1582 | 3 1583 | 72 1584 | 8 1585 | 73 1586 | 4 1587 | 74 1588 | 0 1589 | 40 1590 | 0 1591 | 40 1592 | 0 1593 | 40 1594 | 0 1595 | 40 1596 | 0 1597 | 40 1598 | 1 1599 | 40 1600 | 1 1601 | 40 1602 | 1 1603 | 40 1604 | 1 1605 | 10 1606 | 169.175845 1607 | 20 1608 | 215.660622 1609 | 30 1610 | 0.0 1611 | 10 1612 | 168.114695 1613 | 20 1614 | 215.660622 1615 | 30 1616 | 0.0 1617 | 10 1618 | 167.254465 1619 | 20 1620 | 216.520853 1621 | 30 1622 | 0.0 1623 | 10 1624 | 167.254465 1625 | 20 1626 | 217.582001 1627 | 30 1628 | 0.0 1629 | 0 1630 | SPLINE 1631 | 5 1632 | 115 1633 | 100 1634 | AcDbEntity 1635 | 8 1636 | Base 1637 | 62 1638 | 1 1639 | 100 1640 | AcDbSpline 1641 | 70 1642 | 8 1643 | 71 1644 | 3 1645 | 72 1646 | 8 1647 | 73 1648 | 4 1649 | 74 1650 | 0 1651 | 40 1652 | 0 1653 | 40 1654 | 0 1655 | 40 1656 | 0 1657 | 40 1658 | 0 1659 | 40 1660 | 1 1661 | 40 1662 | 1 1663 | 40 1664 | 1 1665 | 40 1666 | 1 1667 | 10 1668 | 167.254465 1669 | 20 1670 | 217.582001 1671 | 30 1672 | 0.0 1673 | 10 1674 | 167.254465 1675 | 20 1676 | 218.643149 1677 | 30 1678 | 0.0 1679 | 10 1680 | 168.114695 1681 | 20 1682 | 219.503380 1683 | 30 1684 | 0.0 1685 | 10 1686 | 169.175845 1687 | 20 1688 | 219.503380 1689 | 30 1690 | 0.0 1691 | 0 1692 | SPLINE 1693 | 5 1694 | 116 1695 | 100 1696 | AcDbEntity 1697 | 8 1698 | Base 1699 | 62 1700 | 1 1701 | 100 1702 | AcDbSpline 1703 | 70 1704 | 8 1705 | 71 1706 | 3 1707 | 72 1708 | 8 1709 | 73 1710 | 4 1711 | 74 1712 | 0 1713 | 40 1714 | 0 1715 | 40 1716 | 0 1717 | 40 1718 | 0 1719 | 40 1720 | 0 1721 | 40 1722 | 1 1723 | 40 1724 | 1 1725 | 40 1726 | 1 1727 | 40 1728 | 1 1729 | 10 1730 | 169.175845 1731 | 20 1732 | 219.503380 1733 | 30 1734 | 0.0 1735 | 10 1736 | 170.236992 1737 | 20 1738 | 219.503380 1739 | 30 1740 | 0.0 1741 | 10 1742 | 171.097222 1743 | 20 1744 | 218.643149 1745 | 30 1746 | 0.0 1747 | 10 1748 | 171.097222 1749 | 20 1750 | 217.582001 1751 | 30 1752 | 0.0 1753 | 0 1754 | LINE 1755 | 5 1756 | 117 1757 | 100 1758 | AcDbEntity 1759 | 8 1760 | Base 1761 | 62 1762 | 1 1763 | 100 1764 | AcDbLine 1765 | 10 1766 | 171.097222 1767 | 20 1768 | 217.582001 1769 | 30 1770 | 0.0 1771 | 11 1772 | 171.097222 1773 | 21 1774 | 217.582001 1775 | 31 1776 | 0.0 1777 | 0 1778 | SPLINE 1779 | 5 1780 | 118 1781 | 100 1782 | AcDbEntity 1783 | 8 1784 | Base 1785 | 62 1786 | 1 1787 | 100 1788 | AcDbSpline 1789 | 70 1790 | 8 1791 | 71 1792 | 3 1793 | 72 1794 | 8 1795 | 73 1796 | 4 1797 | 74 1798 | 0 1799 | 40 1800 | 0 1801 | 40 1802 | 0 1803 | 40 1804 | 0 1805 | 40 1806 | 0 1807 | 40 1808 | 1 1809 | 40 1810 | 1 1811 | 40 1812 | 1 1813 | 40 1814 | 1 1815 | 10 1816 | 171.015327 1817 | 20 1818 | 275.567439 1819 | 30 1820 | 0.0 1821 | 10 1822 | 171.015327 1823 | 20 1824 | 274.506290 1825 | 30 1826 | 0.0 1827 | 10 1828 | 170.155097 1829 | 20 1830 | 273.646060 1831 | 30 1832 | 0.0 1833 | 10 1834 | 169.093950 1835 | 20 1836 | 273.646060 1837 | 30 1838 | 0.0 1839 | 0 1840 | SPLINE 1841 | 5 1842 | 119 1843 | 100 1844 | AcDbEntity 1845 | 8 1846 | Base 1847 | 62 1848 | 1 1849 | 100 1850 | AcDbSpline 1851 | 70 1852 | 8 1853 | 71 1854 | 3 1855 | 72 1856 | 8 1857 | 73 1858 | 4 1859 | 74 1860 | 0 1861 | 40 1862 | 0 1863 | 40 1864 | 0 1865 | 40 1866 | 0 1867 | 40 1868 | 0 1869 | 40 1870 | 1 1871 | 40 1872 | 1 1873 | 40 1874 | 1 1875 | 40 1876 | 1 1877 | 10 1878 | 169.093950 1879 | 20 1880 | 273.646060 1881 | 30 1882 | 0.0 1883 | 10 1884 | 168.032800 1885 | 20 1886 | 273.646060 1887 | 30 1888 | 0.0 1889 | 10 1890 | 167.172569 1891 | 20 1892 | 274.506290 1893 | 30 1894 | 0.0 1895 | 10 1896 | 167.172569 1897 | 20 1898 | 275.567439 1899 | 30 1900 | 0.0 1901 | 0 1902 | SPLINE 1903 | 5 1904 | 11a 1905 | 100 1906 | AcDbEntity 1907 | 8 1908 | Base 1909 | 62 1910 | 1 1911 | 100 1912 | AcDbSpline 1913 | 70 1914 | 8 1915 | 71 1916 | 3 1917 | 72 1918 | 8 1919 | 73 1920 | 4 1921 | 74 1922 | 0 1923 | 40 1924 | 0 1925 | 40 1926 | 0 1927 | 40 1928 | 0 1929 | 40 1930 | 0 1931 | 40 1932 | 1 1933 | 40 1934 | 1 1935 | 40 1936 | 1 1937 | 40 1938 | 1 1939 | 10 1940 | 167.172569 1941 | 20 1942 | 275.567439 1943 | 30 1944 | 0.0 1945 | 10 1946 | 167.172569 1947 | 20 1948 | 276.628587 1949 | 30 1950 | 0.0 1951 | 10 1952 | 168.032800 1953 | 20 1954 | 277.488818 1955 | 30 1956 | 0.0 1957 | 10 1958 | 169.093950 1959 | 20 1960 | 277.488818 1961 | 30 1962 | 0.0 1963 | 0 1964 | SPLINE 1965 | 5 1966 | 11b 1967 | 100 1968 | AcDbEntity 1969 | 8 1970 | Base 1971 | 62 1972 | 1 1973 | 100 1974 | AcDbSpline 1975 | 70 1976 | 8 1977 | 71 1978 | 3 1979 | 72 1980 | 8 1981 | 73 1982 | 4 1983 | 74 1984 | 0 1985 | 40 1986 | 0 1987 | 40 1988 | 0 1989 | 40 1990 | 0 1991 | 40 1992 | 0 1993 | 40 1994 | 1 1995 | 40 1996 | 1 1997 | 40 1998 | 1 1999 | 40 2000 | 1 2001 | 10 2002 | 169.093950 2003 | 20 2004 | 277.488818 2005 | 30 2006 | 0.0 2007 | 10 2008 | 170.155097 2009 | 20 2010 | 277.488818 2011 | 30 2012 | 0.0 2013 | 10 2014 | 171.015327 2015 | 20 2016 | 276.628587 2017 | 30 2018 | 0.0 2019 | 10 2020 | 171.015327 2021 | 20 2022 | 275.567439 2023 | 30 2024 | 0.0 2025 | 0 2026 | LINE 2027 | 5 2028 | 11c 2029 | 100 2030 | AcDbEntity 2031 | 8 2032 | Base 2033 | 62 2034 | 1 2035 | 100 2036 | AcDbLine 2037 | 10 2038 | 171.015327 2039 | 20 2040 | 275.567439 2041 | 30 2042 | 0.0 2043 | 11 2044 | 171.015327 2045 | 21 2046 | 275.567439 2047 | 31 2048 | 0.0 2049 | 0 2050 | SPLINE 2051 | 5 2052 | 11d 2053 | 100 2054 | AcDbEntity 2055 | 8 2056 | Base 2057 | 62 2058 | 1 2059 | 100 2060 | AcDbSpline 2061 | 70 2062 | 8 2063 | 71 2064 | 3 2065 | 72 2066 | 8 2067 | 73 2068 | 4 2069 | 74 2070 | 0 2071 | 40 2072 | 0 2073 | 40 2074 | 0 2075 | 40 2076 | 0 2077 | 40 2078 | 0 2079 | 40 2080 | 1 2081 | 40 2082 | 1 2083 | 40 2084 | 1 2085 | 40 2086 | 1 2087 | 10 2088 | 56.142063 2089 | 20 2090 | 243.215088 2091 | 30 2092 | 0.0 2093 | 10 2094 | 56.142063 2095 | 20 2096 | 242.324420 2097 | 30 2098 | 0.0 2099 | 10 2100 | 55.420031 2101 | 20 2102 | 241.602388 2103 | 30 2104 | 0.0 2105 | 10 2106 | 54.529363 2107 | 20 2108 | 241.602388 2109 | 30 2110 | 0.0 2111 | 0 2112 | SPLINE 2113 | 5 2114 | 11e 2115 | 100 2116 | AcDbEntity 2117 | 8 2118 | Base 2119 | 62 2120 | 1 2121 | 100 2122 | AcDbSpline 2123 | 70 2124 | 8 2125 | 71 2126 | 3 2127 | 72 2128 | 8 2129 | 73 2130 | 4 2131 | 74 2132 | 0 2133 | 40 2134 | 0 2135 | 40 2136 | 0 2137 | 40 2138 | 0 2139 | 40 2140 | 0 2141 | 40 2142 | 1 2143 | 40 2144 | 1 2145 | 40 2146 | 1 2147 | 40 2148 | 1 2149 | 10 2150 | 54.529363 2151 | 20 2152 | 241.602388 2153 | 30 2154 | 0.0 2155 | 10 2156 | 53.638696 2157 | 20 2158 | 241.602388 2159 | 30 2160 | 0.0 2161 | 10 2162 | 52.916664 2163 | 20 2164 | 242.324420 2165 | 30 2166 | 0.0 2167 | 10 2168 | 52.916664 2169 | 20 2170 | 243.215088 2171 | 30 2172 | 0.0 2173 | 0 2174 | SPLINE 2175 | 5 2176 | 11f 2177 | 100 2178 | AcDbEntity 2179 | 8 2180 | Base 2181 | 62 2182 | 1 2183 | 100 2184 | AcDbSpline 2185 | 70 2186 | 8 2187 | 71 2188 | 3 2189 | 72 2190 | 8 2191 | 73 2192 | 4 2193 | 74 2194 | 0 2195 | 40 2196 | 0 2197 | 40 2198 | 0 2199 | 40 2200 | 0 2201 | 40 2202 | 0 2203 | 40 2204 | 1 2205 | 40 2206 | 1 2207 | 40 2208 | 1 2209 | 40 2210 | 1 2211 | 10 2212 | 52.916664 2213 | 20 2214 | 243.215088 2215 | 30 2216 | 0.0 2217 | 10 2218 | 52.916664 2219 | 20 2220 | 244.105756 2221 | 30 2222 | 0.0 2223 | 10 2224 | 53.638696 2225 | 20 2226 | 244.827785 2227 | 30 2228 | 0.0 2229 | 10 2230 | 54.529363 2231 | 20 2232 | 244.827785 2233 | 30 2234 | 0.0 2235 | 0 2236 | SPLINE 2237 | 5 2238 | 120 2239 | 100 2240 | AcDbEntity 2241 | 8 2242 | Base 2243 | 62 2244 | 1 2245 | 100 2246 | AcDbSpline 2247 | 70 2248 | 8 2249 | 71 2250 | 3 2251 | 72 2252 | 8 2253 | 73 2254 | 4 2255 | 74 2256 | 0 2257 | 40 2258 | 0 2259 | 40 2260 | 0 2261 | 40 2262 | 0 2263 | 40 2264 | 0 2265 | 40 2266 | 1 2267 | 40 2268 | 1 2269 | 40 2270 | 1 2271 | 40 2272 | 1 2273 | 10 2274 | 54.529363 2275 | 20 2276 | 244.827785 2277 | 30 2278 | 0.0 2279 | 10 2280 | 55.420031 2281 | 20 2282 | 244.827785 2283 | 30 2284 | 0.0 2285 | 10 2286 | 56.142063 2287 | 20 2288 | 244.105756 2289 | 30 2290 | 0.0 2291 | 10 2292 | 56.142063 2293 | 20 2294 | 243.215088 2295 | 30 2296 | 0.0 2297 | 0 2298 | LINE 2299 | 5 2300 | 121 2301 | 100 2302 | AcDbEntity 2303 | 8 2304 | Base 2305 | 62 2306 | 1 2307 | 100 2308 | AcDbLine 2309 | 10 2310 | 56.142063 2311 | 20 2312 | 243.215088 2313 | 30 2314 | 0.0 2315 | 11 2316 | 56.142063 2317 | 21 2318 | 243.215088 2319 | 31 2320 | 0.0 2321 | 0 2322 | ENDSEC 2323 | 0 2324 | SECTION 2325 | 2 2326 | OBJECTS 2327 | 0 2328 | DICTIONARY 2329 | 5 2330 | C 2331 | 330 2332 | 0 2333 | 100 2334 | AcDbDictionary 2335 | 3 2336 | ACAD_GROUP 2337 | 350 2338 | D 2339 | 3 2340 | ACAD_MLINESTYLE 2341 | 350 2342 | 17 2343 | 0 2344 | DICTIONARY 2345 | 5 2346 | D 2347 | 330 2348 | C 2349 | 100 2350 | AcDbDictionary 2351 | 0 2352 | DICTIONARY 2353 | 5 2354 | 1A 2355 | 330 2356 | C 2357 | 100 2358 | AcDbDictionary 2359 | 0 2360 | DICTIONARY 2361 | 5 2362 | 17 2363 | 330 2364 | C 2365 | 100 2366 | AcDbDictionary 2367 | 3 2368 | STANDARD 2369 | 350 2370 | 18 2371 | 0 2372 | DICTIONARY 2373 | 5 2374 | 19 2375 | 330 2376 | C 2377 | 100 2378 | AcDbDictionary 2379 | 0 2380 | ENDSEC 2381 | 0 2382 | EOF 2383 | -------------------------------------------------------------------------------- /Enclosure/Keyboard layer middle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 38 | 40 | 41 | 43 | image/svg+xml 44 | 46 | 47 | 48 | 49 | 50 | 55 | 59 | 64 | 69 | 74 | 79 | 83 | 87 | 91 | 95 | 99 | 103 | 107 | 111 | 115 | 119 | 123 | 127 | 131 | 135 | 139 | 143 | 147 | 151 | 155 | 159 | 163 | 167 | 171 | 175 | 179 | 183 | 187 | 191 | 195 | 199 | 203 | 207 | 211 | 215 | 219 | 223 | 227 | 231 | 235 | 239 | 243 | 247 | 251 | 255 | 259 | 263 | 267 | 271 | 275 | 279 | 283 | 287 | 291 | 295 | 299 | 303 | 307 | 308 | 309 | -------------------------------------------------------------------------------- /Enclosure/Keyboard layer KeyCaps.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 38 | 40 | 41 | 43 | image/svg+xml 44 | 46 | 47 | 48 | 49 | 50 | 56 | 60 | 63 | 66 | 69 | 72 | 75 | 78 | 81 | 84 | 87 | 90 | 93 | 96 | 99 | 102 | 105 | 108 | 111 | 114 | 117 | 120 | 123 | 126 | 129 | 132 | 135 | 138 | 141 | 144 | 147 | 150 | 153 | 156 | 159 | 162 | 165 | 168 | 171 | 174 | 177 | 180 | 183 | 186 | 189 | 192 | 195 | 198 | 201 | 204 | 207 | 210 | 213 | 216 | 219 | 222 | 225 | 229 | 234 | 239 | 244 | 249 | 254 | 259 | 264 | 265 | 268 | 271 | 274 | 277 | 280 | 283 | 286 | 289 | 292 | 295 | 298 | 301 | 304 | 307 | 310 | 313 | 316 | 319 | 322 | 325 | 328 | 331 | 334 | 337 | 340 | 343 | 346 | 349 | 352 | 355 | 358 | 361 | 364 | 367 | 370 | 373 | 376 | 379 | 382 | 385 | 388 | 391 | 394 | 397 | 400 | 403 | 406 | 409 | 412 | 415 | 418 | 421 | 424 | 427 | 430 | 433 | 436 | 439 | 442 | 445 | 448 | 451 | 454 | 457 | 460 | 463 | 466 | 469 | 472 | 475 | 478 | 481 | 484 | 487 | 490 | 493 | 496 | 499 | 502 | 505 | 508 | 511 | 514 | 517 | 520 | 523 | 526 | 529 | 532 | 535 | 538 | 541 | 544 | 547 | 550 | 553 | 556 | 559 | 562 | 565 | 568 | 571 | 574 | 577 | 580 | 583 | 586 | 589 | 592 | 595 | 598 | 601 | 604 | 607 | 610 | 613 | 616 | 619 | 622 | 625 | 628 | 631 | 634 | 637 | 640 | 643 | 646 | 649 | 652 | 655 | 658 | 661 | 664 | 667 | 670 | 673 | 676 | 679 | 682 | 685 | 688 | 691 | 694 | 697 | 700 | 703 | 706 | 709 | 712 | 715 | 718 | 721 | 724 | 727 | 730 | 733 | 736 | 739 | 742 | 745 | 748 | 751 | 754 | 757 | 760 | 763 | 776 | 777 | 778 | 783 | 791 | 801 | 811 | 821 | 831 | 839 | 847 | 855 | 863 | 871 | 879 | 887 | 895 | 903 | 911 | 919 | 927 | 935 | 943 | 951 | 959 | 967 | 975 | 983 | 991 | 999 | 1007 | 1015 | 1023 | 1031 | 1039 | 1047 | 1055 | 1063 | 1071 | 1079 | 1087 | 1095 | 1103 | 1111 | 1119 | 1127 | 1135 | 1143 | 1151 | 1152 | 1158 | 1 1169 | 2 1180 | 3 1191 | 4 1202 | 5 1213 | 6 1224 | 7 1235 | 8 1246 | 9 1257 | 0 1268 | 1279 | Q 1290 | W 1301 | E 1312 | R 1323 | T 1334 | Y 1345 | U 1356 | I 1367 | O 1378 | P 1389 | A 1400 | S 1411 | D 1422 | F 1433 | G 1444 | H 1455 | J 1466 | K 1477 | L 1488 | Z 1499 | X 1510 | C 1521 | V 1532 | B 1543 | N 1554 | M 1565 | 1592 | 1597 | 1603 | 1608 | CapShift 1626 | SymShift 1644 | BreakSpace 1660 | Enter 1672 | ! 1684 | @ 1696 | # 1707 | $ 1719 | % 1730 | & 1741 | ' 1752 | ( 1763 | ) 1774 | _ 1785 | < 1796 | > 1807 | - 1818 | + 1829 | = 1840 | : 1851 | £ 1862 | ? 1873 | / 1884 | * 1895 | , 1906 | . 1917 | ; 1939 | " 1950 | ~ 1961 | ^ 1972 | | 1983 | \ 1994 | { 2005 | } 2016 | [ 2027 | ] 2038 | <= 2049 | <> 2060 | >= 2071 | 2089 | 2100 | 2118 | 2126 | 2144 | 2153 | 2171 | 2180 | 2198 | 2207 | 2208 | 2209 | --------------------------------------------------------------------------------