├── .gitignore ├── README.md ├── cad ├── Case_3D_left.stl ├── Case_3D_right.stl ├── Case_3d.stl └── keyboard_plate.dxf ├── hub_keyboard.jpg ├── pcb ├── gerber │ ├── hub_keyboard.GBL │ ├── hub_keyboard.GBO │ ├── hub_keyboard.GBP │ ├── hub_keyboard.GBS │ ├── hub_keyboard.GML │ ├── hub_keyboard.GTL │ ├── hub_keyboard.GTO │ ├── hub_keyboard.GTP │ ├── hub_keyboard.GTS │ ├── hub_keyboard.TXT │ └── hub_keyboard.xln ├── hub_keyboard.brd ├── hub_keyboard.sch └── jlc │ ├── hub_keyboard_bom.csv │ └── hub_keyboard_cpl.csv ├── pcb_back.jpg ├── pcb_front.jpg └── qmk_config ├── config.h ├── hub_keyboard.c ├── hub_keyboard.h ├── keymaps ├── default │ └── keymap.c └── keymap_german.h ├── readme.md ├── rules.mk └── v1 ├── config.h ├── rules.mk ├── v1.c └── v1.h /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | pcb/misc 3 | 4 | *.b#* 5 | *.s#* 6 | *.CAT* 7 | *.zip 8 | *.mnb 9 | *.mnt -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HUB Keyboard 2 | 3 | A custom built 80% keyboard with an OLED and an integrated USB hub. 4 | 5 | ![HUB Keyboard with Numpad attached via USB](hub_keyboard.jpg) 6 | 7 | (The ![Numpad](https://github.com/konstantinwerner/numpad) can be found here.) 8 | 9 | ## Circuit Board 10 | 11 | ![Populated Circit Board - Bottom Side](pcb_back.jpg) 12 | 13 | ![Populated Circit Board - Top Side](pcb_front.jpg) 14 | 15 | The circuit board is designed in Eagle. 16 | For easy manufacturing, the gerber-files and SMT production files are included. 17 | 18 | The BOM and SMT placement file (CPL) are formatted for use with JLCPCB. 19 | 20 | Apart from the keys, display, and the USB-connector all parts can be populated by JLCPCB. 21 | The schematic contains the LCSC partnumbers in the attributes of each part. 22 | 23 | ### JLCPCB Configuration 24 | 25 | If you want to order PCBs from JLC-PCB with the provided gerber-files, 26 | use the following settings after uploading the zipped gerber folder: 27 | 28 | * Layers: 2 29 | * Dimension: 362mm x 128.5mm 30 | * PCB Color: Choose what you want 31 | * PCB Thickness: 1.6 32 | * Impedance: no 33 | * Surface Finish: HASL(with lead) (ENIG is also OK) 34 | * Copper Weight: 1 35 | * Gold Fingers: No 36 | * Material Details: FR4-Standard Tg 130-140C 37 | * Panel By JLCPCB: No 38 | * Flying Probe Test: Fully Test 39 | * Castellated Holes: no 40 | * Different Design: 1 41 | * Remove Order Number: Choose what you want 42 | 43 | 5 PCBs without assembly cost about 17.35€ or $19.60. 44 | 45 | If you want to have the SMT parts populated, choose "SMT Assembly" and select "Bottom Layer". 46 | 47 | When asked for the BOM and CPL file, upload the provided files. 48 | 49 | Assembly and parts for 5 PCBs costs about 45.50€ or $55.90. 50 | 51 | 52 | ### Keys 53 | 54 | All keys compatible with Cherry MX 2 or 3 pin should fit the board. 55 | There a mounting holes for the US-layout (with 2.25U Left Shift) and the EU-layout (with <> next to 1.25U Left Shift). 56 | The Spacebar can also be replaced by up 5 individual keys. 57 | 58 | ### Display 59 | 60 | The display is an 0.91" 128x32 SPI OLED module like [this](https://www.ebay.com/itm/312892164528). They are all over ebay and aliexpress. 61 | 62 | ### Misc Parts 63 | 64 | The USB Connectors can be found on Digikey, but you can substitute others with the same pad layout.# 65 | 66 | * USB-C : [Digikey](https://www.digikey.com/short/zm17vb) 67 | * USB-A : [Digikey](https://www.digikey.com/short/zm1tcc) 68 | 69 | 70 | ## QMK Configuration 71 | 72 | The folder qmk_config contains the configuration and code to build QMK for the HUB-Keyboard. 73 | Just put this folder in qmk/keyboards and run 74 | 75 | ``` 76 | make hub_keyboard/v1:default 77 | ``` 78 | 79 | ## Plate & Case 80 | 81 | Plate and Case are available as DXF and STL files. The Case also comes in two halves for easier printing. The DXF contains lines for both layout options at the left shift key. Delete what you don't need before cutting. 82 | -------------------------------------------------------------------------------- /hub_keyboard.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stdlogicvector/hub_keyboard/0db691f648629007bd047f1dca911355f2a167ee/hub_keyboard.jpg -------------------------------------------------------------------------------- /pcb/gerber/hub_keyboard.TXT: -------------------------------------------------------------------------------- 1 | M48 2 | ;GenerationSoftware,Autodesk,EAGLE,9.2.1*% 3 | ;CreationDate,2020-05-13T20:51:31Z*% 4 | FMAT,2 5 | ICI,OFF 6 | METRIC,TZ,000.000 7 | T12C0.300 8 | T11C0.650 9 | T10C0.813 10 | T9C1.016 11 | T8C1.092 12 | T7C1.707 13 | T6C1.753 14 | T5C2.311 15 | T4C3.048 16 | T3C3.200 17 | T2C3.988 18 | T1C4.089 19 | % 20 | G90 21 | M71 22 | T1 23 | X90487Y90487 24 | X195262Y114300 25 | X219075Y52387 26 | X347663Y71438 27 | X109537Y114300 28 | X238125Y52387 29 | X223837Y114300 30 | X276225Y71438 31 | X269088Y52387 32 | X52387Y114300 33 | X242887Y114300 34 | X26200Y33338 35 | X21438Y52387 36 | X347663Y14287 37 | X57150Y33338 38 | X261937Y114300 39 | X40488Y14287 40 | X76200Y33338 41 | X71438Y114300 42 | X280988Y114300 43 | X14287Y90487 44 | X95250Y33338 45 | X47625Y52387 46 | X33338Y90487 47 | X66675Y52387 48 | X114300Y33338 49 | X52387Y90487 50 | X90487Y114300 51 | X347663Y114300 52 | X71438Y90487 53 | X133350Y33338 54 | X309563Y90487 55 | X85725Y52387 56 | X104775Y52387 57 | X152400Y33338 58 | X109537Y90487 59 | X38100Y33338 60 | X309563Y71438 61 | X128587Y90487 62 | X171450Y33338 63 | X123825Y52387 64 | X147638Y90487 65 | X138113Y114300 66 | X190500Y33338 67 | X166688Y90487 68 | X309563Y14287 69 | X142875Y52387 70 | X185737Y90487 71 | X209550Y33338 72 | X157163Y114300 73 | X204787Y90487 74 | X309563Y114300 75 | X228600Y33338 76 | X223837Y90487 77 | X161925Y52387 78 | X16675Y33338 79 | X242887Y90487 80 | X264325Y33338 81 | X328613Y90487 82 | X271463Y90487 83 | X180975Y52387 84 | X16675Y14287 85 | X19050Y71438 86 | X176212Y114300 87 | X328613Y71438 88 | X42863Y71438 89 | X200025Y52387 90 | X61912Y71438 91 | X64300Y14287 92 | X80963Y71438 93 | X328613Y33338 94 | X100012Y71438 95 | X135738Y14287 96 | X119062Y71438 97 | X328613Y14287 98 | X230988Y14287 99 | X138113Y71438 100 | X157163Y71438 101 | X254800Y14287 102 | X328613Y114300 103 | X176212Y71438 104 | X183363Y14287 105 | X278613Y14287 106 | X195262Y71438 107 | X159550Y14287 108 | X347663Y90487 109 | X214312Y71438 110 | X207175Y14287 111 | X111925Y14287 112 | X233362Y71438 113 | X88113Y14287 114 | X14287Y114300 115 | X252412Y71438 116 | T2 117 | X259524Y82233 118 | X283401Y82233 119 | X14262Y25082 120 | X38138Y25082 121 | X276263Y25082 122 | X257150Y44132 123 | X252387Y25082 124 | X281026Y44132 125 | X186538Y6032 126 | X84938Y6032 127 | T3 128 | X291000Y33000 129 | X5000Y64000 130 | X291000Y91000 131 | X291000Y33000 132 | X357000Y123500 133 | X5000Y64000 134 | X357000Y5000 135 | X5000Y123500 136 | X5000Y5000 137 | X5000Y123500 138 | X5000Y5000 139 | X357000Y5000 140 | X357000Y123500 141 | X291000Y91000 142 | T4 143 | X276263Y40323 144 | X38138Y40323 145 | X252387Y40323 146 | X84938Y21273 147 | X259524Y97472 148 | X283401Y97472 149 | X281026Y59372 150 | X186538Y21273 151 | X14262Y40323 152 | X257150Y59372 153 | T5 154 | X117434Y119000 155 | X44566Y119000 156 | X31434Y119000 157 | X130566Y119000 158 | X203434Y119000 159 | X216566Y119000 160 | T6 161 | X183515Y57467 162 | X196215Y54927 163 | X202565Y57467 164 | X215265Y54927 165 | X221615Y57467 166 | X234315Y54927 167 | X240665Y57467 168 | X265278Y54927 169 | X271628Y57467 170 | X22390Y35878 171 | X28740Y38418 172 | X53340Y35878 173 | X59690Y38418 174 | X72390Y35878 175 | X78740Y38418 176 | X91440Y35878 177 | X97790Y38418 178 | X110490Y35878 179 | X116840Y38418 180 | X129540Y35878 181 | X135890Y38418 182 | X148590Y35878 183 | X154940Y38418 184 | X167640Y35878 185 | X173990Y38418 186 | X186690Y35878 187 | X193040Y38418 188 | X205740Y35878 189 | X212090Y38418 190 | X224790Y35878 191 | X231140Y38418 192 | X260515Y35878 193 | X266865Y38418 194 | X12865Y16828 195 | X19215Y19368 196 | X36678Y16828 197 | X43028Y19368 198 | X60490Y16828 199 | X66840Y19368 200 | X131928Y16828 201 | X138278Y19368 202 | X227178Y16828 203 | X233528Y19368 204 | X250990Y16828 205 | X257340Y19368 206 | X274803Y16828 207 | X281153Y19368 208 | X203365Y16828 209 | X209715Y19368 210 | X10478Y116840 211 | X16828Y119380 212 | X48577Y116840 213 | X54927Y119380 214 | X67628Y116840 215 | X73978Y119380 216 | X86678Y116840 217 | X93027Y119380 218 | X105727Y116840 219 | X112077Y119380 220 | X134303Y116840 221 | X140653Y119380 222 | X153353Y116840 223 | X159703Y119380 224 | X172403Y116840 225 | X178752Y119380 226 | X191452Y116840 227 | X197802Y119380 228 | X220027Y116840 229 | X226377Y119380 230 | X239077Y116840 231 | X245427Y119380 232 | X258127Y116840 233 | X264478Y119380 234 | X277178Y116840 235 | X283528Y119380 236 | X305753Y93027 237 | X312103Y95567 238 | X305753Y73978 239 | X312103Y76518 240 | X305753Y16828 241 | X312103Y19368 242 | X305753Y116840 243 | X312103Y119380 244 | X324803Y93027 245 | X331153Y95567 246 | X324803Y73978 247 | X331153Y76518 248 | X324803Y35878 249 | X331153Y38418 250 | X324803Y16828 251 | X331153Y19368 252 | X324803Y116840 253 | X331153Y119380 254 | X343853Y93027 255 | X350202Y95567 256 | X343853Y73978 257 | X350202Y76518 258 | X343853Y16828 259 | X350202Y19368 260 | X343853Y116840 261 | X350202Y119380 262 | X34290Y35878 263 | X40640Y38418 264 | X12865Y35878 265 | X19215Y38418 266 | X84303Y16828 267 | X90653Y19368 268 | X108115Y16828 269 | X114465Y19368 270 | X155740Y16828 271 | X162090Y19368 272 | X179553Y16828 273 | X185903Y19368 274 | X10478Y93027 275 | X16828Y95567 276 | X29527Y93027 277 | X35878Y95567 278 | X48577Y93027 279 | X54927Y95567 280 | X67628Y93027 281 | X73978Y95567 282 | X86678Y93027 283 | X93027Y95567 284 | X105727Y93027 285 | X112077Y95567 286 | X124777Y93027 287 | X131128Y95567 288 | X143828Y93027 289 | X150178Y95567 290 | X162878Y93027 291 | X169228Y95567 292 | X181927Y93027 293 | X188277Y95567 294 | X200977Y93027 295 | X207327Y95567 296 | X220027Y93027 297 | X226377Y95567 298 | X239077Y93027 299 | X245427Y95567 300 | X267653Y93027 301 | X274003Y95567 302 | X15240Y73978 303 | X21590Y76518 304 | X39053Y73978 305 | X45402Y76518 306 | X58102Y73978 307 | X64452Y76518 308 | X77153Y73978 309 | X83503Y76518 310 | X96202Y73978 311 | X102552Y76518 312 | X115252Y73978 313 | X121602Y76518 314 | X134303Y73978 315 | X140653Y76518 316 | X153353Y73978 317 | X159703Y76518 318 | X172403Y73978 319 | X178752Y76518 320 | X191452Y73978 321 | X197802Y76518 322 | X210502Y73978 323 | X216852Y76518 324 | X229552Y73978 325 | X235902Y76518 326 | X248602Y73978 327 | X254952Y76518 328 | X272415Y73978 329 | X278765Y76518 330 | X17628Y54927 331 | X23978Y57467 332 | X43815Y54927 333 | X50165Y57467 334 | X62865Y54927 335 | X69215Y57467 336 | X81915Y54927 337 | X88265Y57467 338 | X100965Y54927 339 | X107315Y57467 340 | X120015Y54927 341 | X126365Y57467 342 | X139065Y54927 343 | X145415Y57467 344 | X158115Y54927 345 | X164465Y57467 346 | X177165Y54927 347 | T7 348 | X133033Y71438 349 | X75883Y71438 350 | X86043Y71438 351 | X94932Y71438 352 | X105092Y71438 353 | X113982Y71438 354 | X124142Y71438 355 | X202095Y14287 356 | X143193Y71438 357 | X152083Y71438 358 | X162243Y71438 359 | X171133Y71438 360 | X181292Y71438 361 | X190182Y71438 362 | X200342Y71438 363 | X209232Y71438 364 | X219392Y71438 365 | X228282Y71438 366 | X238442Y71438 367 | X247332Y71438 368 | X257492Y71438 369 | X271145Y71438 370 | X281305Y71438 371 | X16358Y52387 372 | X26518Y52387 373 | X42545Y52387 374 | X52705Y52387 375 | X61595Y52387 376 | X71755Y52387 377 | X80645Y52387 378 | X90805Y52387 379 | X99695Y52387 380 | X109855Y52387 381 | X118745Y52387 382 | X128905Y52387 383 | X137795Y52387 384 | X147955Y52387 385 | X156845Y52387 386 | X167005Y52387 387 | X175895Y52387 388 | X186055Y52387 389 | X194945Y52387 390 | X205105Y52387 391 | X213995Y52387 392 | X224155Y52387 393 | X233045Y52387 394 | X243205Y52387 395 | X264008Y52387 396 | X274168Y52387 397 | X21120Y33338 398 | X31280Y33338 399 | X52070Y33338 400 | X62230Y33338 401 | X71120Y33338 402 | X81280Y33338 403 | X90170Y33338 404 | X100330Y33338 405 | X109220Y33338 406 | X119380Y33338 407 | X128270Y33338 408 | X138430Y33338 409 | X147320Y33338 410 | X157480Y33338 411 | X166370Y33338 412 | X176530Y33338 413 | X185420Y33338 414 | X195580Y33338 415 | X283693Y14287 416 | X204470Y33338 417 | X214630Y33338 418 | X223520Y33338 419 | X233680Y33338 420 | X259245Y33338 421 | X269405Y33338 422 | X11595Y14287 423 | X21755Y14287 424 | X35408Y14287 425 | X45568Y14287 426 | X59220Y14287 427 | X69380Y14287 428 | X130658Y14287 429 | X140818Y14287 430 | X225908Y14287 431 | X236068Y14287 432 | X249720Y14287 433 | X259880Y14287 434 | X273533Y14287 435 | X323533Y14287 436 | X333693Y14287 437 | X275908Y114300 438 | X286068Y114300 439 | X188443Y14287 440 | X304483Y90487 441 | X314643Y90487 442 | X304483Y71438 443 | X178283Y14287 444 | X323533Y114300 445 | X164630Y14287 446 | X154470Y14287 447 | X333693Y114300 448 | X117005Y14287 449 | X106845Y14287 450 | X314643Y71438 451 | X304483Y14287 452 | X314643Y14287 453 | X304483Y114300 454 | X314643Y114300 455 | X323533Y90487 456 | X342583Y90487 457 | X93193Y14287 458 | X83033Y14287 459 | X352742Y90487 460 | X342583Y71438 461 | X352742Y71438 462 | X342583Y14287 463 | X352742Y14287 464 | X342583Y114300 465 | X352742Y114300 466 | X33020Y33338 467 | X43180Y33338 468 | X11595Y33338 469 | X21755Y33338 470 | X333693Y90487 471 | X323533Y71438 472 | X333693Y71438 473 | X323533Y33338 474 | X333693Y33338 475 | X267018Y114300 476 | X256857Y114300 477 | X247967Y114300 478 | X237807Y114300 479 | X228917Y114300 480 | X218757Y114300 481 | X200342Y114300 482 | X190182Y114300 483 | X181292Y114300 484 | X171133Y114300 485 | X162243Y114300 486 | X152083Y114300 487 | X143193Y114300 488 | X133033Y114300 489 | X114617Y114300 490 | X104457Y114300 491 | X95567Y114300 492 | X85408Y114300 493 | X76518Y114300 494 | X66358Y114300 495 | X57467Y114300 496 | X47307Y114300 497 | X19368Y114300 498 | X9208Y114300 499 | X212255Y14287 500 | X9208Y90487 501 | X19368Y90487 502 | X28257Y90487 503 | X38418Y90487 504 | X47307Y90487 505 | X57467Y90487 506 | X66358Y90487 507 | X76518Y90487 508 | X85408Y90487 509 | X95567Y90487 510 | X104457Y90487 511 | X114617Y90487 512 | X123507Y90487 513 | X133668Y90487 514 | X142558Y90487 515 | X152718Y90487 516 | X161608Y90487 517 | X171768Y90487 518 | X180657Y90487 519 | X190817Y90487 520 | X199707Y90487 521 | X209867Y90487 522 | X218757Y90487 523 | X228917Y90487 524 | X237807Y90487 525 | X247967Y90487 526 | X266383Y90487 527 | X276543Y90487 528 | X13970Y71438 529 | X24130Y71438 530 | X37783Y71438 531 | X47942Y71438 532 | X56832Y71438 533 | X66993Y71438 534 | T8 535 | X177482Y109220 536 | X127317Y85408 537 | X274955Y66358 538 | X193992Y109220 539 | X196532Y109220 540 | X277495Y66358 541 | X129857Y85408 542 | X222567Y109220 543 | X225107Y109220 544 | X20168Y47307 545 | X241617Y109220 546 | X244157Y109220 547 | X22708Y47307 548 | X260667Y109220 549 | X263208Y109220 550 | X146368Y85408 551 | X46355Y47307 552 | X279718Y109220 553 | X48895Y47307 554 | X148908Y85408 555 | X308293Y85408 556 | X310833Y85408 557 | X65405Y47307 558 | X308293Y66358 559 | X310833Y66358 560 | X67945Y47307 561 | X308293Y9208 562 | X310833Y9208 563 | X165418Y85408 564 | X84455Y47307 565 | X308293Y109220 566 | X310833Y109220 567 | X86995Y47307 568 | X167958Y85408 569 | X327343Y85408 570 | X329883Y85408 571 | X103505Y47307 572 | X327343Y66358 573 | X329883Y66358 574 | X106045Y47307 575 | X327343Y28257 576 | X329883Y28257 577 | X184467Y85408 578 | X122555Y47307 579 | X327343Y9208 580 | X329883Y9208 581 | X125095Y47307 582 | X327343Y109220 583 | X329883Y109220 584 | X141605Y47307 585 | X346393Y85408 586 | X348933Y85408 587 | X144145Y47307 588 | X346393Y66358 589 | X348933Y66358 590 | X203517Y85408 591 | X160655Y47307 592 | X346393Y9208 593 | X348933Y9208 594 | X163195Y47307 595 | X206057Y85408 596 | X346393Y109220 597 | X348933Y109220 598 | X179705Y47307 599 | X36830Y28257 600 | X39370Y28257 601 | X182245Y47307 602 | X15405Y28257 603 | X17945Y28257 604 | X222567Y85408 605 | X198755Y47307 606 | X86843Y9208 607 | X89383Y9208 608 | X201295Y47307 609 | X225107Y85408 610 | X110655Y9208 611 | X113195Y9208 612 | X217805Y47307 613 | X158280Y9208 614 | X160820Y9208 615 | X220345Y47307 616 | X182093Y9208 617 | X184633Y9208 618 | X241617Y85408 619 | X282258Y109220 620 | X187007Y85408 621 | X236855Y47307 622 | X239395Y47307 623 | X244157Y85408 624 | X267818Y47307 625 | X270358Y47307 626 | X270193Y85408 627 | X24930Y28257 628 | X27470Y28257 629 | X272733Y85408 630 | X55880Y28257 631 | X58420Y28257 632 | X17780Y66358 633 | X74930Y28257 634 | X77470Y28257 635 | X20320Y66358 636 | X93980Y28257 637 | X96520Y28257 638 | X13017Y85408 639 | X41593Y66358 640 | X113030Y28257 641 | X115570Y28257 642 | X44132Y66358 643 | X15557Y85408 644 | X132080Y28257 645 | X134620Y28257 646 | X60642Y66358 647 | X151130Y28257 648 | X153670Y28257 649 | X63182Y66358 650 | X170180Y28257 651 | X172720Y28257 652 | X32067Y85408 653 | X79693Y66358 654 | X189230Y28257 655 | X191770Y28257 656 | X82233Y66358 657 | X34608Y85408 658 | X208280Y28257 659 | X210820Y28257 660 | X98742Y66358 661 | X227330Y28257 662 | X229870Y28257 663 | X101282Y66358 664 | X263055Y28257 665 | X265595Y28257 666 | X51117Y85408 667 | X117792Y66358 668 | X15405Y9208 669 | X17945Y9208 670 | X120332Y66358 671 | X53657Y85408 672 | X39218Y9208 673 | X41758Y9208 674 | X136843Y66358 675 | X63030Y9208 676 | X65570Y9208 677 | X139383Y66358 678 | X134468Y9208 679 | X137008Y9208 680 | X70168Y85408 681 | X155893Y66358 682 | X229718Y9208 683 | X232258Y9208 684 | X158433Y66358 685 | X72708Y85408 686 | X253530Y9208 687 | X256070Y9208 688 | X174942Y66358 689 | X277343Y9208 690 | X279883Y9208 691 | X177482Y66358 692 | X205905Y9208 693 | X208445Y9208 694 | X89217Y85408 695 | X193992Y66358 696 | X13017Y109220 697 | X15557Y109220 698 | X196532Y66358 699 | X91757Y85408 700 | X51117Y109220 701 | X53657Y109220 702 | X213042Y66358 703 | X70168Y109220 704 | X72708Y109220 705 | X215582Y66358 706 | X89217Y109220 707 | X91757Y109220 708 | X108267Y85408 709 | X232092Y66358 710 | X108267Y109220 711 | X110807Y109220 712 | X234632Y66358 713 | X110807Y85408 714 | X136843Y109220 715 | X139383Y109220 716 | X251142Y66358 717 | X155893Y109220 718 | X158433Y109220 719 | X253682Y66358 720 | X174942Y109220 721 | T9 722 | X311300Y47890 723 | X311300Y50430 724 | X311300Y52970 725 | X311300Y55510 726 | T10 727 | X306730Y38000 728 | X313730Y38000 729 | X316270Y38000 730 | X311730Y33500 731 | X314270Y33500 732 | X309730Y29000 733 | X312270Y29000 734 | X309270Y38000 735 | X304730Y33500 736 | X307270Y33500 737 | X302730Y29000 738 | X305270Y29000 739 | T11 740 | X292110Y123345 741 | X297890Y123345 742 | T12 743 | X353000Y48000 744 | X349000Y42000 745 | X209000Y104000 746 | X123000Y103000 747 | X39000Y103000 748 | X125000Y104000 749 | X211000Y105000 750 | X287500Y116000 751 | X301900Y113000 752 | X303000Y110000 753 | X303000Y108800 754 | X303000Y106000 755 | X291000Y108000 756 | X289000Y127000 757 | X301000Y127000 758 | X303000Y104800 759 | X287500Y113300 760 | X41500Y112500 761 | X44500Y110000 762 | X31500Y110000 763 | X41500Y117000 764 | X34000Y105000 765 | X35000Y105000 766 | X127500Y112500 767 | X130500Y110000 768 | X117500Y110000 769 | X127500Y117000 770 | X120000Y105000 771 | X121000Y105000 772 | X213500Y112500 773 | X216500Y110000 774 | X203500Y110000 775 | X213500Y117000 776 | X206000Y105000 777 | X207000Y105000 778 | X294300Y45300 779 | X296000Y47000 780 | X294000Y61000 781 | X296000Y63000 782 | X294000Y80000 783 | X296000Y82000 784 | X294000Y96000 785 | X296000Y96000 786 | X294000Y110000 787 | X316500Y45000 788 | X316500Y47000 789 | X321500Y45000 790 | X321500Y47000 791 | X233000Y105000 792 | X233000Y101000 793 | X100000Y103000 794 | X100000Y101000 795 | X81000Y103000 796 | X81000Y101000 797 | X62000Y103000 798 | X62000Y101000 799 | X147000Y104000 800 | X147000Y101000 801 | X166000Y104000 802 | X166000Y101000 803 | X185000Y104000 804 | X185000Y101000 805 | X252000Y105000 806 | X252000Y101000 807 | X271000Y105000 808 | X271000Y101000 809 | X344600Y47000 810 | X37000Y102000 811 | X345800Y56500 812 | X349500Y46500 813 | X357000Y41000 814 | X343000Y50500 815 | X291000Y111600 816 | X356000Y56000 817 | X39000Y109900 818 | X318300Y104000 819 | X317500Y104500 820 | X300500Y49000 821 | X294900Y45900 822 | X357000Y56000 823 | X347600Y47000 824 | X301000Y50000 825 | X300000Y50000 826 | X351000Y47000 827 | X355200Y51400 828 | X211000Y101000 829 | X349500Y39500 830 | X353300Y49500 831 | X307000Y56000 832 | X287500Y117500 833 | X303000Y107400 834 | X352486Y49514 835 | X291000Y109100 836 | X303000Y56000 837 | X351000Y41000 838 | X299000Y105800 839 | X350100Y45900 840 | X294000Y112000 841 | X37000Y109900 842 | X352500Y54500 843 | X356000Y48000 844 | X358000Y56000 845 | X350000Y38000 846 | X356000Y26000 847 | X286100Y106000 848 | X355000Y48000 849 | X285900Y108000 850 | X183000Y6000 851 | X292500Y117000 852 | X357000Y43000 853 | X359000Y56000 854 | X350500Y36500 855 | X295400Y46500 856 | X290500Y109700 857 | X297500Y117000 858 | X125000Y109900 859 | X290486Y110986 860 | X123000Y109900 861 | X291000Y110300 862 | X295000Y120000 863 | X298500Y120500 864 | X353000Y56000 865 | X357000Y48000 866 | X345000Y56500 867 | X342000Y49600 868 | X339100Y48300 869 | X342500Y42000 870 | X299000Y121000 871 | X291000Y121000 872 | X304000Y122000 873 | X286000Y122000 874 | X357000Y38500 875 | X291000Y105000 876 | X346000Y50000 877 | X350000Y50000 878 | X350000Y54000 879 | X346000Y54000 880 | X211000Y109900 881 | X354000Y56000 882 | X353000Y39000 883 | X290500Y112300 884 | X342500Y52600 885 | X342500Y53500 886 | X291500Y120500 887 | X354000Y48000 888 | X355000Y56000 889 | X209000Y109900 890 | X329600Y47500 891 | X342000Y54500 892 | X342500Y47500 893 | X352500Y44500 894 | X352000Y40000 895 | X342500Y44500 896 | M30 -------------------------------------------------------------------------------- /pcb/gerber/hub_keyboard.xln: -------------------------------------------------------------------------------- 1 | M48 2 | ;GenerationSoftware,Autodesk,EAGLE,9.2.1*% 3 | ;CreationDate,2020-05-13T20:51:30Z*% 4 | FMAT,2 5 | ICI,OFF 6 | METRIC,TZ,000.000 7 | T12C0.300 8 | T11C0.650 9 | T10C0.813 10 | T9C1.016 11 | T8C1.092 12 | T7C1.707 13 | T6C1.753 14 | T5C2.311 15 | T4C3.048 16 | T3C3.200 17 | T2C3.988 18 | T1C4.089 19 | % 20 | G90 21 | M71 22 | T1 23 | X90487Y90487 24 | X195262Y114300 25 | X219075Y52387 26 | X347663Y71438 27 | X109537Y114300 28 | X238125Y52387 29 | X223837Y114300 30 | X276225Y71438 31 | X269088Y52387 32 | X52387Y114300 33 | X242887Y114300 34 | X26200Y33338 35 | X21438Y52387 36 | X347663Y14287 37 | X57150Y33338 38 | X261937Y114300 39 | X40488Y14287 40 | X76200Y33338 41 | X71438Y114300 42 | X280988Y114300 43 | X14287Y90487 44 | X95250Y33338 45 | X47625Y52387 46 | X33338Y90487 47 | X66675Y52387 48 | X114300Y33338 49 | X52387Y90487 50 | X90487Y114300 51 | X347663Y114300 52 | X71438Y90487 53 | X133350Y33338 54 | X309563Y90487 55 | X85725Y52387 56 | X104775Y52387 57 | X152400Y33338 58 | X109537Y90487 59 | X38100Y33338 60 | X309563Y71438 61 | X128587Y90487 62 | X171450Y33338 63 | X123825Y52387 64 | X147638Y90487 65 | X138113Y114300 66 | X190500Y33338 67 | X166688Y90487 68 | X309563Y14287 69 | X142875Y52387 70 | X185737Y90487 71 | X209550Y33338 72 | X157163Y114300 73 | X204787Y90487 74 | X309563Y114300 75 | X228600Y33338 76 | X223837Y90487 77 | X161925Y52387 78 | X16675Y33338 79 | X242887Y90487 80 | X264325Y33338 81 | X328613Y90487 82 | X271463Y90487 83 | X180975Y52387 84 | X16675Y14287 85 | X19050Y71438 86 | X176212Y114300 87 | X328613Y71438 88 | X42863Y71438 89 | X200025Y52387 90 | X61912Y71438 91 | X64300Y14287 92 | X80963Y71438 93 | X328613Y33338 94 | X100012Y71438 95 | X135738Y14287 96 | X119062Y71438 97 | X328613Y14287 98 | X230988Y14287 99 | X138113Y71438 100 | X157163Y71438 101 | X254800Y14287 102 | X328613Y114300 103 | X176212Y71438 104 | X183363Y14287 105 | X278613Y14287 106 | X195262Y71438 107 | X159550Y14287 108 | X347663Y90487 109 | X214312Y71438 110 | X207175Y14287 111 | X111925Y14287 112 | X233362Y71438 113 | X88113Y14287 114 | X14287Y114300 115 | X252412Y71438 116 | T2 117 | X259524Y82233 118 | X283401Y82233 119 | X14262Y25082 120 | X38138Y25082 121 | X276263Y25082 122 | X257150Y44132 123 | X252387Y25082 124 | X281026Y44132 125 | X186538Y6032 126 | X84938Y6032 127 | T3 128 | X291000Y33000 129 | X5000Y64000 130 | X291000Y91000 131 | X291000Y33000 132 | X357000Y123500 133 | X5000Y64000 134 | X357000Y5000 135 | X5000Y123500 136 | X5000Y5000 137 | X5000Y123500 138 | X5000Y5000 139 | X357000Y5000 140 | X357000Y123500 141 | X291000Y91000 142 | T4 143 | X276263Y40323 144 | X38138Y40323 145 | X252387Y40323 146 | X84938Y21273 147 | X259524Y97472 148 | X283401Y97472 149 | X281026Y59372 150 | X186538Y21273 151 | X14262Y40323 152 | X257150Y59372 153 | T5 154 | X117434Y119000 155 | X44566Y119000 156 | X31434Y119000 157 | X130566Y119000 158 | X203434Y119000 159 | X216566Y119000 160 | T6 161 | X183515Y57467 162 | X196215Y54927 163 | X202565Y57467 164 | X215265Y54927 165 | X221615Y57467 166 | X234315Y54927 167 | X240665Y57467 168 | X265278Y54927 169 | X271628Y57467 170 | X22390Y35878 171 | X28740Y38418 172 | X53340Y35878 173 | X59690Y38418 174 | X72390Y35878 175 | X78740Y38418 176 | X91440Y35878 177 | X97790Y38418 178 | X110490Y35878 179 | X116840Y38418 180 | X129540Y35878 181 | X135890Y38418 182 | X148590Y35878 183 | X154940Y38418 184 | X167640Y35878 185 | X173990Y38418 186 | X186690Y35878 187 | X193040Y38418 188 | X205740Y35878 189 | X212090Y38418 190 | X224790Y35878 191 | X231140Y38418 192 | X260515Y35878 193 | X266865Y38418 194 | X12865Y16828 195 | X19215Y19368 196 | X36678Y16828 197 | X43028Y19368 198 | X60490Y16828 199 | X66840Y19368 200 | X131928Y16828 201 | X138278Y19368 202 | X227178Y16828 203 | X233528Y19368 204 | X250990Y16828 205 | X257340Y19368 206 | X274803Y16828 207 | X281153Y19368 208 | X203365Y16828 209 | X209715Y19368 210 | X10478Y116840 211 | X16828Y119380 212 | X48577Y116840 213 | X54927Y119380 214 | X67628Y116840 215 | X73978Y119380 216 | X86678Y116840 217 | X93027Y119380 218 | X105727Y116840 219 | X112077Y119380 220 | X134303Y116840 221 | X140653Y119380 222 | X153353Y116840 223 | X159703Y119380 224 | X172403Y116840 225 | X178752Y119380 226 | X191452Y116840 227 | X197802Y119380 228 | X220027Y116840 229 | X226377Y119380 230 | X239077Y116840 231 | X245427Y119380 232 | X258127Y116840 233 | X264478Y119380 234 | X277178Y116840 235 | X283528Y119380 236 | X305753Y93027 237 | X312103Y95567 238 | X305753Y73978 239 | X312103Y76518 240 | X305753Y16828 241 | X312103Y19368 242 | X305753Y116840 243 | X312103Y119380 244 | X324803Y93027 245 | X331153Y95567 246 | X324803Y73978 247 | X331153Y76518 248 | X324803Y35878 249 | X331153Y38418 250 | X324803Y16828 251 | X331153Y19368 252 | X324803Y116840 253 | X331153Y119380 254 | X343853Y93027 255 | X350202Y95567 256 | X343853Y73978 257 | X350202Y76518 258 | X343853Y16828 259 | X350202Y19368 260 | X343853Y116840 261 | X350202Y119380 262 | X34290Y35878 263 | X40640Y38418 264 | X12865Y35878 265 | X19215Y38418 266 | X84303Y16828 267 | X90653Y19368 268 | X108115Y16828 269 | X114465Y19368 270 | X155740Y16828 271 | X162090Y19368 272 | X179553Y16828 273 | X185903Y19368 274 | X10478Y93027 275 | X16828Y95567 276 | X29527Y93027 277 | X35878Y95567 278 | X48577Y93027 279 | X54927Y95567 280 | X67628Y93027 281 | X73978Y95567 282 | X86678Y93027 283 | X93027Y95567 284 | X105727Y93027 285 | X112077Y95567 286 | X124777Y93027 287 | X131128Y95567 288 | X143828Y93027 289 | X150178Y95567 290 | X162878Y93027 291 | X169228Y95567 292 | X181927Y93027 293 | X188277Y95567 294 | X200977Y93027 295 | X207327Y95567 296 | X220027Y93027 297 | X226377Y95567 298 | X239077Y93027 299 | X245427Y95567 300 | X267653Y93027 301 | X274003Y95567 302 | X15240Y73978 303 | X21590Y76518 304 | X39053Y73978 305 | X45402Y76518 306 | X58102Y73978 307 | X64452Y76518 308 | X77153Y73978 309 | X83503Y76518 310 | X96202Y73978 311 | X102552Y76518 312 | X115252Y73978 313 | X121602Y76518 314 | X134303Y73978 315 | X140653Y76518 316 | X153353Y73978 317 | X159703Y76518 318 | X172403Y73978 319 | X178752Y76518 320 | X191452Y73978 321 | X197802Y76518 322 | X210502Y73978 323 | X216852Y76518 324 | X229552Y73978 325 | X235902Y76518 326 | X248602Y73978 327 | X254952Y76518 328 | X272415Y73978 329 | X278765Y76518 330 | X17628Y54927 331 | X23978Y57467 332 | X43815Y54927 333 | X50165Y57467 334 | X62865Y54927 335 | X69215Y57467 336 | X81915Y54927 337 | X88265Y57467 338 | X100965Y54927 339 | X107315Y57467 340 | X120015Y54927 341 | X126365Y57467 342 | X139065Y54927 343 | X145415Y57467 344 | X158115Y54927 345 | X164465Y57467 346 | X177165Y54927 347 | T7 348 | X133033Y71438 349 | X75883Y71438 350 | X86043Y71438 351 | X94932Y71438 352 | X105092Y71438 353 | X113982Y71438 354 | X124142Y71438 355 | X202095Y14287 356 | X143193Y71438 357 | X152083Y71438 358 | X162243Y71438 359 | X171133Y71438 360 | X181292Y71438 361 | X190182Y71438 362 | X200342Y71438 363 | X209232Y71438 364 | X219392Y71438 365 | X228282Y71438 366 | X238442Y71438 367 | X247332Y71438 368 | X257492Y71438 369 | X271145Y71438 370 | X281305Y71438 371 | X16358Y52387 372 | X26518Y52387 373 | X42545Y52387 374 | X52705Y52387 375 | X61595Y52387 376 | X71755Y52387 377 | X80645Y52387 378 | X90805Y52387 379 | X99695Y52387 380 | X109855Y52387 381 | X118745Y52387 382 | X128905Y52387 383 | X137795Y52387 384 | X147955Y52387 385 | X156845Y52387 386 | X167005Y52387 387 | X175895Y52387 388 | X186055Y52387 389 | X194945Y52387 390 | X205105Y52387 391 | X213995Y52387 392 | X224155Y52387 393 | X233045Y52387 394 | X243205Y52387 395 | X264008Y52387 396 | X274168Y52387 397 | X21120Y33338 398 | X31280Y33338 399 | X52070Y33338 400 | X62230Y33338 401 | X71120Y33338 402 | X81280Y33338 403 | X90170Y33338 404 | X100330Y33338 405 | X109220Y33338 406 | X119380Y33338 407 | X128270Y33338 408 | X138430Y33338 409 | X147320Y33338 410 | X157480Y33338 411 | X166370Y33338 412 | X176530Y33338 413 | X185420Y33338 414 | X195580Y33338 415 | X283693Y14287 416 | X204470Y33338 417 | X214630Y33338 418 | X223520Y33338 419 | X233680Y33338 420 | X259245Y33338 421 | X269405Y33338 422 | X11595Y14287 423 | X21755Y14287 424 | X35408Y14287 425 | X45568Y14287 426 | X59220Y14287 427 | X69380Y14287 428 | X130658Y14287 429 | X140818Y14287 430 | X225908Y14287 431 | X236068Y14287 432 | X249720Y14287 433 | X259880Y14287 434 | X273533Y14287 435 | X323533Y14287 436 | X333693Y14287 437 | X275908Y114300 438 | X286068Y114300 439 | X188443Y14287 440 | X304483Y90487 441 | X314643Y90487 442 | X304483Y71438 443 | X178283Y14287 444 | X323533Y114300 445 | X164630Y14287 446 | X154470Y14287 447 | X333693Y114300 448 | X117005Y14287 449 | X106845Y14287 450 | X314643Y71438 451 | X304483Y14287 452 | X314643Y14287 453 | X304483Y114300 454 | X314643Y114300 455 | X323533Y90487 456 | X342583Y90487 457 | X93193Y14287 458 | X83033Y14287 459 | X352742Y90487 460 | X342583Y71438 461 | X352742Y71438 462 | X342583Y14287 463 | X352742Y14287 464 | X342583Y114300 465 | X352742Y114300 466 | X33020Y33338 467 | X43180Y33338 468 | X11595Y33338 469 | X21755Y33338 470 | X333693Y90487 471 | X323533Y71438 472 | X333693Y71438 473 | X323533Y33338 474 | X333693Y33338 475 | X267018Y114300 476 | X256857Y114300 477 | X247967Y114300 478 | X237807Y114300 479 | X228917Y114300 480 | X218757Y114300 481 | X200342Y114300 482 | X190182Y114300 483 | X181292Y114300 484 | X171133Y114300 485 | X162243Y114300 486 | X152083Y114300 487 | X143193Y114300 488 | X133033Y114300 489 | X114617Y114300 490 | X104457Y114300 491 | X95567Y114300 492 | X85408Y114300 493 | X76518Y114300 494 | X66358Y114300 495 | X57467Y114300 496 | X47307Y114300 497 | X19368Y114300 498 | X9208Y114300 499 | X212255Y14287 500 | X9208Y90487 501 | X19368Y90487 502 | X28257Y90487 503 | X38418Y90487 504 | X47307Y90487 505 | X57467Y90487 506 | X66358Y90487 507 | X76518Y90487 508 | X85408Y90487 509 | X95567Y90487 510 | X104457Y90487 511 | X114617Y90487 512 | X123507Y90487 513 | X133668Y90487 514 | X142558Y90487 515 | X152718Y90487 516 | X161608Y90487 517 | X171768Y90487 518 | X180657Y90487 519 | X190817Y90487 520 | X199707Y90487 521 | X209867Y90487 522 | X218757Y90487 523 | X228917Y90487 524 | X237807Y90487 525 | X247967Y90487 526 | X266383Y90487 527 | X276543Y90487 528 | X13970Y71438 529 | X24130Y71438 530 | X37783Y71438 531 | X47942Y71438 532 | X56832Y71438 533 | X66993Y71438 534 | T8 535 | X177482Y109220 536 | X127317Y85408 537 | X274955Y66358 538 | X193992Y109220 539 | X196532Y109220 540 | X277495Y66358 541 | X129857Y85408 542 | X222567Y109220 543 | X225107Y109220 544 | X20168Y47307 545 | X241617Y109220 546 | X244157Y109220 547 | X22708Y47307 548 | X260667Y109220 549 | X263208Y109220 550 | X146368Y85408 551 | X46355Y47307 552 | X279718Y109220 553 | X48895Y47307 554 | X148908Y85408 555 | X308293Y85408 556 | X310833Y85408 557 | X65405Y47307 558 | X308293Y66358 559 | X310833Y66358 560 | X67945Y47307 561 | X308293Y9208 562 | X310833Y9208 563 | X165418Y85408 564 | X84455Y47307 565 | X308293Y109220 566 | X310833Y109220 567 | X86995Y47307 568 | X167958Y85408 569 | X327343Y85408 570 | X329883Y85408 571 | X103505Y47307 572 | X327343Y66358 573 | X329883Y66358 574 | X106045Y47307 575 | X327343Y28257 576 | X329883Y28257 577 | X184467Y85408 578 | X122555Y47307 579 | X327343Y9208 580 | X329883Y9208 581 | X125095Y47307 582 | X327343Y109220 583 | X329883Y109220 584 | X141605Y47307 585 | X346393Y85408 586 | X348933Y85408 587 | X144145Y47307 588 | X346393Y66358 589 | X348933Y66358 590 | X203517Y85408 591 | X160655Y47307 592 | X346393Y9208 593 | X348933Y9208 594 | X163195Y47307 595 | X206057Y85408 596 | X346393Y109220 597 | X348933Y109220 598 | X179705Y47307 599 | X36830Y28257 600 | X39370Y28257 601 | X182245Y47307 602 | X15405Y28257 603 | X17945Y28257 604 | X222567Y85408 605 | X198755Y47307 606 | X86843Y9208 607 | X89383Y9208 608 | X201295Y47307 609 | X225107Y85408 610 | X110655Y9208 611 | X113195Y9208 612 | X217805Y47307 613 | X158280Y9208 614 | X160820Y9208 615 | X220345Y47307 616 | X182093Y9208 617 | X184633Y9208 618 | X241617Y85408 619 | X282258Y109220 620 | X187007Y85408 621 | X236855Y47307 622 | X239395Y47307 623 | X244157Y85408 624 | X267818Y47307 625 | X270358Y47307 626 | X270193Y85408 627 | X24930Y28257 628 | X27470Y28257 629 | X272733Y85408 630 | X55880Y28257 631 | X58420Y28257 632 | X17780Y66358 633 | X74930Y28257 634 | X77470Y28257 635 | X20320Y66358 636 | X93980Y28257 637 | X96520Y28257 638 | X13017Y85408 639 | X41593Y66358 640 | X113030Y28257 641 | X115570Y28257 642 | X44132Y66358 643 | X15557Y85408 644 | X132080Y28257 645 | X134620Y28257 646 | X60642Y66358 647 | X151130Y28257 648 | X153670Y28257 649 | X63182Y66358 650 | X170180Y28257 651 | X172720Y28257 652 | X32067Y85408 653 | X79693Y66358 654 | X189230Y28257 655 | X191770Y28257 656 | X82233Y66358 657 | X34608Y85408 658 | X208280Y28257 659 | X210820Y28257 660 | X98742Y66358 661 | X227330Y28257 662 | X229870Y28257 663 | X101282Y66358 664 | X263055Y28257 665 | X265595Y28257 666 | X51117Y85408 667 | X117792Y66358 668 | X15405Y9208 669 | X17945Y9208 670 | X120332Y66358 671 | X53657Y85408 672 | X39218Y9208 673 | X41758Y9208 674 | X136843Y66358 675 | X63030Y9208 676 | X65570Y9208 677 | X139383Y66358 678 | X134468Y9208 679 | X137008Y9208 680 | X70168Y85408 681 | X155893Y66358 682 | X229718Y9208 683 | X232258Y9208 684 | X158433Y66358 685 | X72708Y85408 686 | X253530Y9208 687 | X256070Y9208 688 | X174942Y66358 689 | X277343Y9208 690 | X279883Y9208 691 | X177482Y66358 692 | X205905Y9208 693 | X208445Y9208 694 | X89217Y85408 695 | X193992Y66358 696 | X13017Y109220 697 | X15557Y109220 698 | X196532Y66358 699 | X91757Y85408 700 | X51117Y109220 701 | X53657Y109220 702 | X213042Y66358 703 | X70168Y109220 704 | X72708Y109220 705 | X215582Y66358 706 | X89217Y109220 707 | X91757Y109220 708 | X108267Y85408 709 | X232092Y66358 710 | X108267Y109220 711 | X110807Y109220 712 | X234632Y66358 713 | X110807Y85408 714 | X136843Y109220 715 | X139383Y109220 716 | X251142Y66358 717 | X155893Y109220 718 | X158433Y109220 719 | X253682Y66358 720 | X174942Y109220 721 | T9 722 | X311300Y47890 723 | X311300Y50430 724 | X311300Y52970 725 | X311300Y55510 726 | T10 727 | X306730Y38000 728 | X313730Y38000 729 | X316270Y38000 730 | X311730Y33500 731 | X314270Y33500 732 | X309730Y29000 733 | X312270Y29000 734 | X309270Y38000 735 | X304730Y33500 736 | X307270Y33500 737 | X302730Y29000 738 | X305270Y29000 739 | T11 740 | X292110Y123345 741 | X297890Y123345 742 | T12 743 | X353000Y48000 744 | X349000Y42000 745 | X209000Y104000 746 | X123000Y103000 747 | X39000Y103000 748 | X125000Y104000 749 | X211000Y105000 750 | X287500Y116000 751 | X301900Y113000 752 | X303000Y110000 753 | X303000Y108800 754 | X303000Y106000 755 | X291000Y108000 756 | X289000Y127000 757 | X301000Y127000 758 | X303000Y104800 759 | X287500Y113300 760 | X41500Y112500 761 | X44500Y110000 762 | X31500Y110000 763 | X41500Y117000 764 | X34000Y105000 765 | X35000Y105000 766 | X127500Y112500 767 | X130500Y110000 768 | X117500Y110000 769 | X127500Y117000 770 | X120000Y105000 771 | X121000Y105000 772 | X213500Y112500 773 | X216500Y110000 774 | X203500Y110000 775 | X213500Y117000 776 | X206000Y105000 777 | X207000Y105000 778 | X294300Y45300 779 | X296000Y47000 780 | X294000Y61000 781 | X296000Y63000 782 | X294000Y80000 783 | X296000Y82000 784 | X294000Y96000 785 | X296000Y96000 786 | X294000Y110000 787 | X316500Y45000 788 | X316500Y47000 789 | X321500Y45000 790 | X321500Y47000 791 | X233000Y105000 792 | X233000Y101000 793 | X100000Y103000 794 | X100000Y101000 795 | X81000Y103000 796 | X81000Y101000 797 | X62000Y103000 798 | X62000Y101000 799 | X147000Y104000 800 | X147000Y101000 801 | X166000Y104000 802 | X166000Y101000 803 | X185000Y104000 804 | X185000Y101000 805 | X252000Y105000 806 | X252000Y101000 807 | X271000Y105000 808 | X271000Y101000 809 | X344600Y47000 810 | X37000Y102000 811 | X345800Y56500 812 | X349500Y46500 813 | X357000Y41000 814 | X343000Y50500 815 | X291000Y111600 816 | X356000Y56000 817 | X39000Y109900 818 | X318300Y104000 819 | X317500Y104500 820 | X300500Y49000 821 | X294900Y45900 822 | X357000Y56000 823 | X347600Y47000 824 | X301000Y50000 825 | X300000Y50000 826 | X351000Y47000 827 | X355200Y51400 828 | X211000Y101000 829 | X349500Y39500 830 | X353300Y49500 831 | X307000Y56000 832 | X287500Y117500 833 | X303000Y107400 834 | X352486Y49514 835 | X291000Y109100 836 | X303000Y56000 837 | X351000Y41000 838 | X299000Y105800 839 | X350100Y45900 840 | X294000Y112000 841 | X37000Y109900 842 | X352500Y54500 843 | X356000Y48000 844 | X358000Y56000 845 | X350000Y38000 846 | X356000Y26000 847 | X286100Y106000 848 | X355000Y48000 849 | X285900Y108000 850 | X183000Y6000 851 | X292500Y117000 852 | X357000Y43000 853 | X359000Y56000 854 | X350500Y36500 855 | X295400Y46500 856 | X290500Y109700 857 | X297500Y117000 858 | X125000Y109900 859 | X290486Y110986 860 | X123000Y109900 861 | X291000Y110300 862 | X295000Y120000 863 | X298500Y120500 864 | X353000Y56000 865 | X357000Y48000 866 | X345000Y56500 867 | X342000Y49600 868 | X339100Y48300 869 | X342500Y42000 870 | X299000Y121000 871 | X291000Y121000 872 | X304000Y122000 873 | X286000Y122000 874 | X357000Y38500 875 | X291000Y105000 876 | X346000Y50000 877 | X350000Y50000 878 | X350000Y54000 879 | X346000Y54000 880 | X211000Y109900 881 | X354000Y56000 882 | X353000Y39000 883 | X290500Y112300 884 | X342500Y52600 885 | X342500Y53500 886 | X291500Y120500 887 | X354000Y48000 888 | X355000Y56000 889 | X209000Y109900 890 | X329600Y47500 891 | X342000Y54500 892 | X342500Y47500 893 | X352500Y44500 894 | X352000Y40000 895 | X342500Y44500 896 | M30 -------------------------------------------------------------------------------- /pcb/jlc/hub_keyboard_bom.csv: -------------------------------------------------------------------------------- 1 | Comment,Designator,Footprint,LCSC 2 | 1.1A,F1,1210,C70100 3 | 1M,"R8, R10, R13, R16",0603,C22935 4 | 1N4148,"D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D15, D17, D19, D20, D21, D22, D23, D24, D25, D26, D27, D28, D29, D30, D31, D32, D33, D34, D35, D36, D37, D38, D39, D40, D41, D42, D43, D44, D45, D46, D47, D48, D49, D50, D51, D52, D53, D54, D55, D56, D57, D58, D59, D60, D61, D62, D63, D64, D65, D66, D67, D68, D69, D70, D71, D72, D73, D74, D75, D76, D77, D78, D79, D80, D81, D82, D83, D84, D85, D86, D87, D88, D89, D90, D91, D92, D93, D94, D95",SOD123,C81598 5 | 1k,"R22, R23, R26, R27, R28, R29, R30, R31, R32",0603,C21190 6 | 1u,C20,0603,C15849 7 | 2k7,R1,0603,C13167 8 | 5k1,"R2, R6",0603,C23186 9 | 10k,"R7, R20, R21, R33",0603,C25804 10 | 10n,C14,0603,C57112 11 | 10n,"C1, C4, C6, C8",0603,C84709 12 | 10u,"C11, C12, C13",0603,C19702 13 | 12MHz,X1,SMD-3225_4P,C9002 14 | 12pF,"C9, C16, C17, C18",0603,C38523 15 | 16MHz,X2,SMD-3225_4P,C13738 16 | 20k,"R5, R24, R25",0603,C4184 17 | 22R,"R3, R4, R11, R12, R14, R15, R17, R18",0603,C23345 18 | 100k,R19,0603,C25803 19 | 100nF,"C2, C10, C15, C19",0603,C14663 20 | 100uF,"C3, C5, C7",3528,C16133 21 | FE1.1S,IC1,SSOP-28,C9359 22 | Ferrite,R9,0805,C44361 23 | PCF8574APWR,IC3,TSSOP-20,C94361 24 | PRTR5V0U2X,"D14, D16, D18",SOT-143,C384891 25 | ATMEGA32U4-MU,IC4,QFN-44_EP_7x7x0.5P,C112161 26 | SPST-SMD-5.2,RESET,SMD-5.2,C318884 27 | 24LC024SN,IC2,24LC024SN,C184083 28 | -------------------------------------------------------------------------------- /pcb/jlc/hub_keyboard_cpl.csv: -------------------------------------------------------------------------------- 1 | Designator,MidX,MidY,Layer,Rotation 2 | C1,288,122,Bottom,180 3 | C2,301,115.3,Bottom,0 4 | C3,34.5,108,Bottom,90 5 | C4,44.5,112,Bottom,90 6 | C5,120.5,108,Bottom,90 7 | C6,130.5,112,Bottom,90 8 | C7,206.5,108,Bottom,90 9 | C8,216.5,112,Bottom,90 10 | C9,288.5,109,Bottom,180 11 | C10,289.5,114.6,Bottom,180 12 | C11,289.5,113.3,Bottom,180 13 | C12,301,110.1,Bottom,0 14 | C13,301,108.8,Bottom,0 15 | C14,301,106.1,Bottom,0 16 | C15,301,104.8,Bottom,0 17 | C16,288.5,104,Bottom,0 18 | C17,339.5,54.4,Bottom,180 19 | C18,339.5,49.5,Bottom,0 20 | C19,357,50.5,Bottom,90 21 | C20,348.5,45,Bottom,90 22 | D1,24,119,Bottom,0 23 | D2,62,119,Bottom,0 24 | D3,81,119,Bottom,0 25 | D4,100,119,Bottom,0 26 | D5,148,119,Bottom,0 27 | D6,167,119,Bottom,0 28 | D7,186,119,Bottom,0 29 | D8,233,119,Bottom,0 30 | D9,252,119,Bottom,0 31 | D10,271,119,Bottom,0 32 | D11,318,119,Bottom,0 33 | D12,337,119,Bottom,0 34 | D13,356,119,Bottom,0 35 | D14,38,108,Bottom,0 36 | D15,110,106,Bottom,180 37 | D16,124,108,Bottom,0 38 | D17,195.5,106.1,Bottom,180 39 | D18,210,108,Bottom,0 40 | D19,281,106,Bottom,180 41 | D20,24,95,Bottom,0 42 | D21,43,95,Bottom,0 43 | D22,62,95,Bottom,0 44 | D23,81,95,Bottom,0 45 | D24,100,95,Bottom,0 46 | D25,119,95,Bottom,0 47 | D26,138,95,Bottom,0 48 | D27,157,95,Bottom,0 49 | D28,176,95,Bottom,0 50 | D29,195,95,Bottom,0 51 | D30,214,95,Bottom,0 52 | D31,233,95,Bottom,0 53 | D32,252,95,Bottom,0 54 | D33,279,95,Bottom,0 55 | D34,318,95,Bottom,0 56 | D35,337,95,Bottom,0 57 | D36,356,95,Bottom,0 58 | D37,28,76,Bottom,0 59 | D38,52,76,Bottom,0 60 | D39,71,76,Bottom,0 61 | D40,90,76,Bottom,0 62 | D41,109,76,Bottom,0 63 | D42,128,76,Bottom,0 64 | D43,147,76,Bottom,0 65 | D44,166,76,Bottom,0 66 | D45,185,76,Bottom,0 67 | D46,204,76,Bottom,0 68 | D47,223,76,Bottom,0 69 | D48,242,76,Bottom,0 70 | D49,261,76,Bottom,0 71 | D50,285,76,Bottom,0 72 | D51,318,76,Bottom,0 73 | D52,337,76,Bottom,0 74 | D53,356,76,Bottom,0 75 | D54,31,57,Bottom,0 76 | D55,57,57,Bottom,0 77 | D56,76,57,Bottom,0 78 | D57,95,57,Bottom,0 79 | D58,114,57,Bottom,0 80 | D59,133,57,Bottom,0 81 | D60,152,57,Bottom,0 82 | D61,171,57,Bottom,0 83 | D62,190,57,Bottom,0 84 | D63,209,57,Bottom,0 85 | D64,228,57,Bottom,0 86 | D65,247,57,Bottom,0 87 | D66,278,55.9,Bottom,0 88 | D67,33,41,Bottom,0 89 | D68,47,38,Bottom,0 90 | D69,67,38,Bottom,0 91 | D70,86,38,Bottom,0 92 | D71,105,38,Bottom,0 93 | D72,124,38,Bottom,0 94 | D73,143,38,Bottom,0 95 | D74,162,38,Bottom,0 96 | D75,181,38,Bottom,0 97 | D76,200,38,Bottom,0 98 | D77,219,38,Bottom,0 99 | D78,238,38,Bottom,0 100 | D79,273,37,Bottom,0 101 | D80,329,43,Bottom,90 102 | D81,26,19,Bottom,0 103 | D82,50,19,Bottom,0 104 | D83,73,19,Bottom,0 105 | D84,97,19,Bottom,0 106 | D85,121,19,Bottom,0 107 | D86,145,19,Bottom,0 108 | D87,168,19,Bottom,0 109 | D88,192,19,Bottom,0 110 | D89,216,19,Bottom,0 111 | D90,240,19,Bottom,0 112 | D91,264,19,Bottom,0 113 | D92,288,19,Bottom,0 114 | D93,314,24,Bottom,90 115 | D94,323.9,24,Bottom,90 116 | D95,352.5,24,Bottom,90 117 | F1,280,125,Bottom,180 118 | IC1,295,110,Bottom,90 119 | IC2,295,101,Bottom,90 120 | IC3,306,52,Bottom,0 121 | IC4,348,52,Bottom,90 122 | R1,289.5,116,Bottom,180 123 | R2,290.5,119.5,Bottom,180 124 | R3,295,119,Bottom,0 125 | R4,295,117.6,Bottom,0 126 | R5,295,116,Bottom,180 127 | R6,299.5,119.5,Bottom,0 128 | R7,301,116.6,Bottom,180 129 | R8,302,122,Bottom,180 130 | R9,305,125,Bottom,0 131 | R10,31.5,112,Bottom,270 132 | R11,37,111.7,Bottom,90 133 | R12,39,111.7,Bottom,90 134 | R13,117.5,112,Bottom,270 135 | R14,123,111.7,Bottom,90 136 | R15,125,111.7,Bottom,90 137 | R16,203.5,112,Bottom,270 138 | R17,209,111.7,Bottom,90 139 | R18,211,111.7,Bottom,90 140 | R19,301,114,Bottom,0 141 | R20,301,112,Bottom,180 142 | R21,301,107.4,Bottom,180 143 | R22,300,52,Bottom,90 144 | R23,307,59.5,Bottom,0 145 | R24,315.5,51.5,Bottom,90 146 | R25,317.5,51.5,Bottom,90 147 | R26,351.5,58,Bottom,270 148 | R27,305.5,41,Bottom,270 149 | R28,308,41,Bottom,270 150 | R29,309.5,41,Bottom,270 151 | R30,312.6,41,Bottom,270 152 | R31,315,41,Bottom,270 153 | R32,316.5,41,Bottom,270 154 | R33,355,45.5,Bottom,180 155 | RESET,326,52,Bottom,0 156 | X1,288.5,106.5,Bottom,180 157 | X2,339.5,52,Bottom,180 158 | -------------------------------------------------------------------------------- /pcb_back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stdlogicvector/hub_keyboard/0db691f648629007bd047f1dca911355f2a167ee/pcb_back.jpg -------------------------------------------------------------------------------- /pcb_front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stdlogicvector/hub_keyboard/0db691f648629007bd047f1dca911355f2a167ee/pcb_front.jpg -------------------------------------------------------------------------------- /qmk_config/config.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 KW 3 | 4 | This program is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 2 of the License, or 7 | (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with this program. If not, see . 16 | */ 17 | 18 | #ifndef CONFIG_H 19 | #define CONFIG_H 20 | 21 | #include "config_common.h" 22 | 23 | /* USB Device descriptor parameter */ 24 | #define VENDOR_ID 0xFEED 25 | #define PRODUCT_ID 0x9002 26 | #define MANUFACTURER KW 27 | #define PRODUCT HUB-Keyboard 28 | #define DESCRIPTION Keyboard with USB HUB 29 | #define USB_MAX_POWER_CONSUMPTION 100 30 | 31 | /* key matrix size */ 32 | #define MATRIX_ROWS 6 33 | #define MATRIX_COLS 17 34 | 35 | /* define if matrix has ghost */ 36 | //#define MATRIX_HAS_GHOST 37 | 38 | /* Set 0 if debouncing isn't needed */ 39 | #define DEBOUNCE 5 40 | 41 | /* Combo */ 42 | #define TAPPING_TERM 200 43 | 44 | /* I2C Speed */ 45 | /* Limited to 100kHz by PCF8574 */ 46 | #define F_SCL 100000UL 47 | 48 | /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 49 | //#define LOCKING_SUPPORT_ENABLE 50 | /* Locking resynchronize hack */ 51 | //#define LOCKING_RESYNC_ENABLE 52 | 53 | #ifdef SUBPROJECT_v1 54 | #include "v1/config.h" 55 | #endif 56 | 57 | #endif 58 | 59 | -------------------------------------------------------------------------------- /qmk_config/hub_keyboard.c: -------------------------------------------------------------------------------- 1 | #include "hub_keyboard.h" 2 | 3 | void suspend_power_down_kb(void) 4 | { 5 | 6 | } 7 | 8 | void suspend_wakeup_init_kb(void) 9 | { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /qmk_config/hub_keyboard.h: -------------------------------------------------------------------------------- 1 | #ifndef HUB_KEYBOARD_H 2 | #define HUB_KEYBOARD_H 3 | 4 | #ifdef KEYBOARD_hub_keyboard_v1 5 | #include "v1.h" 6 | #endif 7 | 8 | #include "quantum.h" 9 | 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /qmk_config/keymaps/default/keymap.c: -------------------------------------------------------------------------------- 1 | #include QMK_KEYBOARD_H 2 | #include "keymap_german.h" 3 | #include "i2c_master.h" 4 | 5 | extern keymap_config_t keymap_config; 6 | 7 | // Keymap Layers 8 | 9 | #define _BASE 0 10 | #define _LAYER_1 1 11 | 12 | // Defines for task-manager etc. 13 | #define CALTDEL LCTL(LALT(KC_DEL)) 14 | #define TSKMGR LCTL(LSFT(KC_ESC)) 15 | 16 | 17 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 18 | 19 | /* Base 20 | * ,----------------------------------------------------------------------------------------------------------------------. 21 | * | ESC | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | PRNT | ROLL | BRK | 22 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| 23 | * | ^ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | ß | ´ | BKSP | INS | HOME | PGUP | 24 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| 25 | * | TAB | q | w | e | r | t | z | u | i | o | p | ü | + | # | DEL | END | PGDN | 26 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| 27 | * | CAPS | a | s | d | f | g | h | j | k | l | ö | ä | | RET | | | | 28 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| 29 | * |LSHIFT| < | y | x | c | v | b | n | m | , | . | - | |RSHIFT| | UP | | 30 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| 31 | * |LCTRL | LCMD | LALT | | | | SPACE| | | RALT | RCMD | | MENU | RCTRL| LEFT | DOWN | RIGHT| 32 | * `----------------------------------------------------------------------------------------------------------------------' 33 | */ 34 | [_BASE] = LAYOUT( \ 35 | KC_ESC, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_BRK, \ 36 | DE_CIRC, DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, DE_7, DE_8, DE_9, DE_0, DE_SS, DE_ACUT, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \ 37 | KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_UE, DE_PLUS, DE_HASH, KC_DEL, KC_END, KC_PGDN, \ 38 | KC_CAPS, DE_A, DE_S, DE_D, DE_F, DE_G, DE_H, DE_J, DE_K, DE_L, DE_OE, DE_AE, KC_NO, KC_ENT, KC_NO, KC_NO, KC_NO, \ 39 | KC_LSFT, DE_LESS, DE_Y, DE_X, DE_C, DE_V, DE_B, DE_N, DE_M, DE_COMM, DE_DOT, DE_MINS, KC_NO, KC_RSFT, KC_NO, KC_UP, KC_NO, \ 40 | KC_LCTL, KC_LCMD, KC_LALT, KC_NO, KC_NO, KC_NO, KC_SPACE, KC_NO, KC_NO, KC_RALT, KC_RCMD, KC_NO, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT \ 41 | ), 42 | 43 | /* Layer 1 44 | * ,----------------------------------------------------------------------------------------------------------------------. 45 | * | ESC | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | PRNT | ROLL | BRK | 46 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| 47 | * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BKSP | INS | HOME | PGUP | 48 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| 49 | * | TAB | q | w | e | r | t | y | u | i | o | p | [ | ] | \ | DEL | END | PGDN | 50 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| 51 | * | CAPS | a | s | d | f | g | h | j | k | l | ; | ' | | RET | | | | 52 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| 53 | * |LSHIFT|LSHIFT| z | x | c | v | b | n | m | , | . | / | |RSHIFT| | UP | | 54 | * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| 55 | * |LCTRL | LCMD | LALT | | | | SPACE| | | RALT | RCMD | | MENU | RCTRL| LEFT | DOWN | RIGHT| 56 | * `----------------------------------------------------------------------------------------------------------------------' 57 | */ 58 | [_LAYER_1] = LAYOUT( \ 59 | KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ 60 | KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ 61 | KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_TRNS, KC_TRNS, KC_TRNS, \ 62 | KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, \ 63 | KC_TRNS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_TRNS, KC_NO, KC_TRNS, KC_NO, \ 64 | KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ 65 | ) 66 | 67 | }; 68 | 69 | // Combos 70 | 71 | enum combos { 72 | CMB_RESET, 73 | CMB_LED, 74 | CMB_LAYER_0, 75 | CMB_LAYER_1 76 | }; 77 | 78 | const uint16_t PROGMEM combo_reset[] = {KC_LCTL, KC_BRK, COMBO_END}; 79 | const uint16_t PROGMEM combo_led[] = {KC_RCTL, KC_UP, COMBO_END}; 80 | const uint16_t PROGMEM combo_layer_0[] = {KC_LCTL, KC_F1, COMBO_END}; 81 | const uint16_t PROGMEM combo_layer_1[] = {KC_LCTL, KC_F2, COMBO_END}; 82 | 83 | 84 | combo_t key_combos[COMBO_COUNT] = { 85 | [CMB_RESET] = COMBO_ACTION(combo_reset), 86 | [CMB_LED] = COMBO_ACTION(combo_led), 87 | [CMB_LAYER_0] = COMBO_ACTION(combo_layer_0), 88 | [CMB_LAYER_1] = COMBO_ACTION(combo_layer_1), 89 | }; 90 | 91 | // User Functions 92 | 93 | // Runs just one time when the keyboard initializes. 94 | void matrix_init_user(void) 95 | { 96 | static uint8_t s_init = 0; 97 | if (!s_init) { 98 | i2c_init(); 99 | 100 | s_init = 1; 101 | } 102 | } 103 | 104 | uint8_t new_leds = 0xFF; 105 | uint8_t leds[2] = { 0xFF, 0xFF }; 106 | 107 | // Runs constantly in the background, in a loop. 108 | void matrix_scan_user(void) 109 | { 110 | if (leds[0] != new_leds) 111 | { 112 | leds[0] = new_leds; 113 | leds[1] = new_leds; 114 | 115 | i2c_transmit(0x70, leds, 2, 100); //PCF8574A = 0x70, PCF8574 = 0x40 116 | } 117 | } 118 | 119 | void process_combo_event(uint8_t combo_index, bool pressed) 120 | { 121 | static uint8_t led = 0; 122 | 123 | switch(combo_index) { 124 | case CMB_RESET: 125 | if (pressed) { 126 | reset_keyboard(); 127 | } 128 | break; 129 | 130 | case CMB_LED: 131 | if (pressed) { 132 | new_leds |= 0xD8; 133 | 134 | switch(led) 135 | { 136 | case 0: new_leds &=~0x08; led++; break; 137 | case 1: new_leds &=~0x10; led++; break; 138 | case 2: new_leds &=~0x40; led++; break; 139 | case 3: new_leds &=~0x80; led=0; break; 140 | } 141 | } 142 | break; 143 | 144 | case CMB_LAYER_0: 145 | if (pressed) { 146 | layer_move(_BASE); 147 | } 148 | break; 149 | 150 | case CMB_LAYER_1: 151 | if (pressed) { 152 | layer_move(_LAYER_1); 153 | } 154 | break; 155 | } 156 | } 157 | 158 | /* LEDs 159 | 0x01 = ScrollLock 160 | 0x02 = CapsLock 161 | 162 | 0x20 0x04 163 | 0x40 0x08 164 | 0x80 0x10 165 | */ 166 | 167 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { 168 | switch (keycode) 169 | { 170 | } 171 | return true; 172 | }; 173 | 174 | void led_set_user(uint8_t usb_led) 175 | { 176 | if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) { 177 | new_leds &=~0x01; 178 | } else 179 | { 180 | new_leds |= 0x01; 181 | } 182 | if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) { 183 | new_leds &=~0x02; 184 | } else 185 | { 186 | new_leds |= 0x02; 187 | } 188 | 189 | } 190 | 191 | #ifdef OLED_DRIVER_ENABLE 192 | void oled_task_user(void) 193 | { 194 | // Host Keyboard Layer Status 195 | oled_write_P(PSTR("Layer: "), false); 196 | 197 | switch (get_highest_layer(layer_state)) { 198 | case _BASE: 199 | oled_write_P(PSTR("Default\n"), false); 200 | new_leds &=~0x04; 201 | new_leds |= 0x20; 202 | break; 203 | case _LAYER_1: 204 | oled_write_P(PSTR("Layer 1\n"), false); 205 | new_leds &=~0x20; 206 | new_leds |= 0x04; 207 | break; 208 | default: 209 | oled_write_ln_P(PSTR("Undefined"), false); 210 | } 211 | 212 | // Host Keyboard LED Status 213 | uint8_t led_usb_state = host_keyboard_leds(); 214 | oled_write_P(led_usb_state & (1<. 15 | */ 16 | 17 | #ifndef KEYMAP_GERMAN 18 | #define KEYMAP_GERMAN 19 | 20 | #include "keymap.h" 21 | 22 | // normal characters 23 | #define DE_Z KC_Y 24 | #define DE_Y KC_Z 25 | 26 | #define DE_A KC_A 27 | #define DE_B KC_B 28 | #define DE_C KC_C 29 | #define DE_D KC_D 30 | #define DE_E KC_E 31 | #define DE_F KC_F 32 | #define DE_G KC_G 33 | #define DE_H KC_H 34 | #define DE_I KC_I 35 | #define DE_J KC_J 36 | #define DE_K KC_K 37 | #define DE_L KC_L 38 | #define DE_M KC_M 39 | #define DE_N KC_N 40 | #define DE_O KC_O 41 | #define DE_P KC_P 42 | #define DE_Q KC_Q 43 | #define DE_R KC_R 44 | #define DE_S KC_S 45 | #define DE_T KC_T 46 | #define DE_U KC_U 47 | #define DE_V KC_V 48 | #define DE_W KC_W 49 | #define DE_X KC_X 50 | 51 | #define DE_0 KC_0 52 | #define DE_1 KC_1 53 | #define DE_2 KC_2 54 | #define DE_3 KC_3 55 | #define DE_4 KC_4 56 | #define DE_5 KC_5 57 | #define DE_6 KC_6 58 | #define DE_7 KC_7 59 | #define DE_8 KC_8 60 | #define DE_9 KC_9 61 | 62 | #define DE_DOT KC_DOT 63 | #define DE_COMM KC_COMM 64 | 65 | #define DE_SS KC_MINS 66 | #define DE_AE KC_QUOT 67 | #define DE_UE KC_LBRC 68 | #define DE_OE KC_SCLN 69 | 70 | #define DE_CIRC KC_GRAVE // accent circumflex ^ and ring ° 71 | #define DE_ACUT KC_EQL // accent acute ´ and grave ` 72 | #define DE_PLUS KC_RBRC // + and * and ~ 73 | #define DE_HASH KC_BSLS // # and ' 74 | #define DE_LESS KC_NUBS // < and > and | 75 | #define DE_MINS KC_SLSH // - and _ 76 | 77 | // shifted characters 78 | #define DE_RING LSFT(DE_CIRC) // ° 79 | #define DE_EXLM LSFT(KC_1) // ! 80 | #define DE_DQOT LSFT(KC_2) // " 81 | #define DE_PARA LSFT(KC_3) // § 82 | #define DE_DLR LSFT(KC_4) // $ 83 | #define DE_PERC LSFT(KC_5) // % 84 | #define DE_AMPR LSFT(KC_6) // & 85 | #define DE_SLSH LSFT(KC_7) // / 86 | #define DE_LPRN LSFT(KC_8) // ( 87 | #define DE_RPRN LSFT(KC_9) // ) 88 | #define DE_EQL LSFT(KC_0) // = 89 | #define DE_QST LSFT(DE_SS) // ? 90 | #define DE_GRV LSFT(DE_ACUT) // ` 91 | #define DE_ASTR LSFT(DE_PLUS) // * 92 | #define DE_QUOT LSFT(DE_HASH) // ' 93 | #define DE_MORE LSFT(DE_LESS) // > 94 | #define DE_COLN LSFT(KC_DOT) // : 95 | #define DE_SCLN LSFT(KC_COMM) // ; 96 | #define DE_UNDS LSFT(DE_MINS) // _ 97 | 98 | // Alt Gr-ed characters 99 | #define DE_SQ2 ALGR(KC_2) // ² 100 | #define DE_SQ3 ALGR(KC_3) // ³ 101 | #define DE_LCBR ALGR(KC_7) // { 102 | #define DE_LBRC ALGR(KC_8) // [ 103 | #define DE_RBRC ALGR(KC_9) // ] 104 | #define DE_RCBR ALGR(KC_0) // } 105 | #define DE_BSLS ALGR(DE_SS) // backslash 106 | #define DE_AT ALGR(KC_Q) // @ 107 | #define DE_EURO ALGR(KC_E) // € 108 | #define DE_TILD ALGR(DE_PLUS) // ~ 109 | #define DE_PIPE ALGR(DE_LESS) // | 110 | 111 | #endif 112 | -------------------------------------------------------------------------------- /qmk_config/readme.md: -------------------------------------------------------------------------------- 1 | HUB Keyboard 2 | === 3 | 4 | ![Hub Keyboard](../keyboard.png) 5 | 6 | -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 7 | 8 | TODO: Add Description 9 | 10 | -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 11 | 12 | Make example for this keyboard (after setting up your build environment): 13 | 14 | make hub_keyboard/v1:default 15 | 16 | See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. 17 | 18 | -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 19 | -------------------------------------------------------------------------------- /qmk_config/rules.mk: -------------------------------------------------------------------------------- 1 | # MCU name 2 | MCU = atmega32u4 3 | 4 | # Bootloader selection 5 | # Teensy halfkay 6 | # Pro Micro caterina 7 | # Atmel DFU atmel-dfu 8 | # LUFA DFU lufa-dfu 9 | # QMK DFU qmk-dfu 10 | # ATmega32A bootloadHID 11 | # ATmega328P USBasp 12 | BOOTLOADER = atmel-dfu 13 | 14 | # Build Options 15 | # change to "no" to disable the options, or define them in the Makefile in 16 | # the appropriate keymap folder that will get included automatically 17 | # 18 | ENCODER_ENABLE = no # Rotary Encoders 19 | MOUSEKEY_ENABLE = no # Mouse keys(+4700) 20 | COMBO_ENABLE = yes # Key Combos 21 | OLED_DRIVER_ENABLE = yes # OLED Display 22 | BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) 23 | KEY_LOCK_ENABLE = yes # Key Lock 24 | LED_MATRIX_ENABLE = no # LED Matrix Controller (IS31FL3731) 25 | EXTRAKEY_ENABLE = no # Audio control and System control(+450) 26 | CONSOLE_ENABLE = no # Console for debug(+400) 27 | COMMAND_ENABLE = no # Commands for debug and configuration 28 | NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 29 | BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality 30 | MIDI_ENABLE = no # MIDI controls 31 | AUDIO_ENABLE = no # Audio output on port C6 32 | UNICODE_ENABLE = no # Unicode 33 | BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID 34 | RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. 35 | API_SYSEX_ENABLE = no 36 | 37 | # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE 38 | SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend 39 | 40 | DEFAULT_FOLDER = hub_keyboard/v1 41 | -------------------------------------------------------------------------------- /qmk_config/v1/config.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 KW 3 | 4 | This program is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 2 of the License, or 7 | (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with this program. If not, see . 16 | */ 17 | 18 | #ifndef V1_CONFIG_H 19 | #define V1_CONFIG_H 20 | 21 | #include "../config.h" 22 | 23 | #define DEVICE_VER 0x0001 24 | 25 | #define MATRIX_ROW_PINS { F4, F5, F6, F7, F0, F1 } 26 | #define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, E6 } 27 | #define UNUSED_PINS 28 | 29 | #define DIODE_DIRECTION COL2ROW 30 | 31 | #define COMBO_COUNT 4 32 | 33 | #endif -------------------------------------------------------------------------------- /qmk_config/v1/rules.mk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stdlogicvector/hub_keyboard/0db691f648629007bd047f1dca911355f2a167ee/qmk_config/v1/rules.mk -------------------------------------------------------------------------------- /qmk_config/v1/v1.c: -------------------------------------------------------------------------------- 1 | #include "hub_keyboard.h" 2 | 3 | void matrix_init_kb(void) 4 | { 5 | matrix_init_user(); 6 | }; 7 | 8 | void matrix_scan_kb(void) { 9 | // put your looping keyboard code here 10 | // runs every cycle (a lot) 11 | 12 | matrix_scan_user(); 13 | } 14 | 15 | bool process_record_kb(uint16_t keycode, keyrecord_t *record) { 16 | // put your per-action keyboard code here 17 | // runs for every action, just before processing by the firmware 18 | 19 | return process_record_user(keycode, record); 20 | } 21 | 22 | void led_set_kb(uint8_t usb_led) { 23 | // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here 24 | 25 | led_set_user(usb_led); 26 | } 27 | -------------------------------------------------------------------------------- /qmk_config/v1/v1.h: -------------------------------------------------------------------------------- 1 | #ifndef V1_H 2 | #define V1_H 3 | 4 | #include "../hub_keyboard.h" 5 | 6 | #include "quantum.h" 7 | 8 | #define LAYOUT( \ 9 | K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \ 10 | K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \ 11 | K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \ 12 | K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, \ 13 | K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, \ 14 | K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ 15 | ) \ 16 | { \ 17 | { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, }, \ 18 | { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, }, \ 19 | { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, }, \ 20 | { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, }, \ 21 | { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, }, \ 22 | { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, K5G, } \ 23 | } 24 | 25 | #endif 26 | 27 | --------------------------------------------------------------------------------