├── 25 ├── 25.png ├── 25.zip └── readme.md ├── 12x4.pdf ├── 16mm ├── 30 16mm bot.zip ├── 30 16mm top.zip ├── 30 16mm.zip ├── pcb.png ├── readme.md └── top.png ├── 2pack ├── 2pack.ino ├── 2pack.png ├── 2pack.zip ├── logo │ ├── Osu_bw.bmp │ └── readme.md └── readme.md ├── 4pack ├── 4pack.ino ├── 4pack.png ├── 4pack.zip ├── logo │ ├── Osu_bw.bmp │ └── readme.md └── readme.md ├── 4x4 ├── 4x4 top.zip ├── 4x4.zip ├── 4x4back.png ├── 4x4front.png ├── 4x4pinout.png ├── 4x4schematic.png ├── json │ ├── 4x4.json │ └── 4x4x4.json └── readme.md ├── 4x4S ├── 4x4S.rar ├── 4x4sBack.png ├── 4x4sFront.png ├── itsyschemastic.jpg └── readme.md ├── 4x4_X ├── 4x4_X.png ├── 4x4_X.zip └── readme.md ├── 5x5 ├── 5x5.zip ├── 5x5back.png ├── 5x5front.png ├── 5x5plate.png ├── 5x5plate.zip ├── 5x5schematic.png ├── 5x5test.json ├── pinout.txt └── readme.md ├── 5x5x9 ├── 5x5x9.png ├── 5x5x9.rar ├── 5x5x9configs.png ├── 5x5x9plate.png ├── 5x5x9plate.rar └── readme.md ├── 6lit ├── 6lit.png ├── 6lit.zip └── readme.md ├── Six Pack ├── Six Pack.zip ├── _6pack.ino ├── readme.md └── sixpack.png ├── analog └── analogread.ino ├── arduino_six ├── arduino six.zip ├── arduino_six.png └── readme.md ├── basic.json ├── deathstar ├── deathstar.hex ├── deathstar.json ├── ds.zip ├── ds_back.png ├── ds_front.png └── readme.md ├── dilly_case ├── dilly_bottom.png ├── dilly_bottom.rar ├── dilly_top.png ├── dilly_top.rar └── readme.md ├── domo ├── domo.png ├── domo.zip └── readme.md ├── fml ├── FML12.ino ├── fml.png ├── fml.zip └── readme.md ├── foobar ├── foobar.png ├── foobar1_1.zip ├── foobarbottom.png ├── foobarbottom.zip ├── foobarplate.png ├── foobarplate.zip └── readme.md ├── fourtytwo ├── 42back.png ├── 42bottom.png ├── 42front.png ├── 42top.png ├── fourtytwo bottom.zip ├── fourtytwo top.zip ├── fourtytwo.zip └── readme.md ├── gherkin alps ├── gherkinalps.zip ├── gherkinalpsbottom.png ├── gherkinalpsplate.png ├── gherkinalpsplate.zip ├── gherkinalpstop.png └── readme.md ├── gherkin ml ├── ml.zip ├── mlback.png ├── mlfront.png └── readme.md ├── gherkin pack ├── 30 pack.zip ├── gherkinpack.png └── readme.md ├── gherkin plates rev2 ├── 30Bottom2.png ├── 30Bottom2.zip ├── 30TopMX2.png ├── 30TopMX2.zip └── readme.md ├── gherkin_wood_P2.eps ├── gnap plates ├── gnap_bottom.png ├── gnap_bottom.zip ├── gnap_plate.png ├── gnap_plate.zip └── readme.md ├── gnap4x4 ├── GNAP4x4L.png ├── GNAP4x4L.zip ├── GNAP4x4M.png ├── GNAP4x4M.zip ├── GNAP4x4R.png ├── GNAP4x4R.zip └── readme.md ├── gnapkin plates ├── gnapkin_bottom.png ├── gnapkin_bottom.rar ├── gnapkin_top.png ├── gnapkin_top.rar └── readme.md ├── gnapkin ├── gnapkin.png ├── gnapkin.zip ├── pinout.txt └── readme.md ├── halfhalf ├── half.zip ├── halfhalf.png └── readme.md ├── halfiota ├── half iota.zip ├── halfiotaback.png ├── halfiotafront.png └── readme.md ├── homer ├── eggs8.ino ├── homer.png ├── homer.zip └── readme.md ├── i-s-hole ├── bottom.png ├── i-s-hole.ino ├── i-s-hole.zip ├── readme.md └── top.png ├── kolea ├── case │ ├── kolea_bottom.png │ ├── kolea_bottom.rar │ ├── kolea_top.png │ ├── kolea_top.rar │ └── readme.md ├── kolea.zip ├── koleaback.png ├── koleafront.png └── readme.md ├── kon tiki ├── kontiki.png ├── kontiki.zip └── readme.md ├── lobot ├── lobot.zip ├── lobotback.png ├── lobotfront.png └── readme.md ├── luddite plate ├── luddite_plate.png ├── luddite_plate.rar └── readme.md ├── luddite ├── luddite2.rar ├── luddite_bottom.png ├── luddite_top.png └── readme.md ├── micropad.json ├── micropadastar.hex ├── micropadastar.json ├── miuni ├── image1.JPG ├── image2.JPG ├── miuni bottom.zip ├── miuni.zip ├── plate.JPG └── readme.md ├── mlp ├── mlp middle.png ├── mlp middle.zip ├── mlp.png ├── mlp1_1.zip └── readme.md ├── nein ├── nein.json ├── nein.png ├── nein.zip ├── nein_bottom.png ├── nein_bottom.zip ├── nein_top.png ├── nein_top.zip └── readme.md ├── nori ├── nori-pcb-bottom.png ├── nori-pcb-top.png ├── nori-pcb.rar ├── nori-plate-bottom.png ├── nori-plate-bottom.rar ├── nori-plate-top.png ├── nori-plate-top.rar ├── nori.hex ├── nori.json └── readme.md ├── onigiri ├── onigiri.png ├── onigiri.zip └── readme.md ├── outrigger ├── outrigger.png ├── outrigger.zip └── readme.md ├── pico ├── 2key.ino ├── arduino-example.ino ├── pcb-front.png ├── pico.zip └── readme.md ├── planck ├── Planck Bottom 19mm.zip ├── Planck Top 19mm.zip ├── PlanckPCBBottom.png ├── PlanckPCBTop.png └── readme.md ├── quarters ├── quarters.json ├── quarters.png ├── quarters.zip ├── quarters_plate.png ├── quarters_plate.zip ├── readme.md └── schematic.png ├── rehab ├── readme.md ├── rehab.png └── rehab.zip ├── semaphore ├── readme.md ├── semaphore.png ├── semaphore.zip ├── semaphore_bottom.png ├── semaphore_bottom.zip ├── semaphore_plate.png └── semaphore_plate.zip ├── split plates ├── bottom.png ├── plate.png ├── readme.md ├── splitbottom.zip └── splitplate.zip ├── tomato ├── Tomato.png ├── Tomato.zip ├── readme.md └── schematic.png ├── tree ├── readme.md ├── tree.png └── tree.zip └── unquadquad ├── 12x12minitop.png ├── 12x12minitop.zip ├── readme.md ├── unquadquad.png └── unquadquad.zip /12x4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/12x4.pdf -------------------------------------------------------------------------------- /16mm/30 16mm bot.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/16mm/30 16mm bot.zip -------------------------------------------------------------------------------- /16mm/30 16mm top.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/16mm/30 16mm top.zip -------------------------------------------------------------------------------- /16mm/30 16mm.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/16mm/30 16mm.zip -------------------------------------------------------------------------------- /16mm/pcb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/16mm/pcb.png -------------------------------------------------------------------------------- /16mm/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/05/16mm-pcb-plates.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | ![PCB Front](pcb.png) 11 | Gerber: 30 16mm.zip 12 | 13 | 164mm Max* 52mm Max; 14 | Layers: 2; 15 | PCB Thickness: 1.6mm; 16 | PCB Qty.: 5; 17 | PCB Color: Green; 18 | Surface Finish: HASL; 19 | Copper Weight: 1; 20 | Panelized PCBs: 1 21 | 22 | Top 23 | ![top](top.png) 24 | Gerber: 30 16mm top.zip 25 | 26 | 164mm Max* 61mm Max; 27 | Layers: 2; 28 | PCB Thickness: 1.6mm; 29 | PCB Qty.: 5; 30 | PCB Color: Green; 31 | Surface Finish: HASL; 32 | Copper Weight: 1; 33 | Panelized PCBs: 1 34 | 35 | Bottom 36 | 37 | Gerber: 30 16mm bot.zip 38 | 39 | 164mm Max* 61mm Max; 40 | Layers: 2; 41 | PCB Thickness: 1.6mm; 42 | PCB Qty.: 5; 43 | PCB Color: Green; 44 | Surface Finish: HASL; 45 | Copper Weight: 1; 46 | Panelized PCBs: 1 47 | 48 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 49 | 50 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 51 | 52 | -------------------------------------------------------------------------------- /16mm/top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/16mm/top.png -------------------------------------------------------------------------------- /25/25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/25/25.png -------------------------------------------------------------------------------- /25/25.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/25/25.zip -------------------------------------------------------------------------------- /25/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/09/25.html 4 | 5 | BOM (per side) 6 | 7 | 25 1n4148 diodes 8 | 25 MX compatible PCB mount switches 9 | 1 TRRS Jack Sparkfun PRT-12639 10 | 1 Pro Micro 5v 11 | 2 12pin headers or 1 24pin machined pin wide socket 12 | 1 5.2mm SMT switch (RESET) https://lcsc.com/product-detail/Tactile-Switches_5-2mm-5-2mm_C92584.html 13 | 14 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 15 | 16 | EasyEDA ordering info: 17 | 18 | PCB 19 | 20 | ![25](25.png) 21 | 22 | Gerber: 25.zip 23 | 24 | 25 | 95.3mm Max* 95.3mm Max; 26 | Layers: 2; 27 | PCB Thickness: 1.6mm; 28 | PCB Qty.: 10; 29 | PCB Color: Green; 30 | Surface Finish: HASL; 31 | Copper Weight: 1; 32 | Panelized PCBs: 1 33 | 34 | 35 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 36 | 37 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 38 | -------------------------------------------------------------------------------- /2pack/2pack.ino: -------------------------------------------------------------------------------- 1 | #include "HID-Project.h" 2 | 3 | //debounce milliseconds 4 | const int debounce = 10; 5 | //Switch Pins 6 | const byte k[2] = { 2, 3 }; 7 | //Switch status 8 | boolean s[2] = { 0, 0 }; 9 | //LED Pins 10 | const byte l[2] = { 10, 9 }; 11 | 12 | //M for Media Key, K for Keyboard 13 | const char codetype[6] = { 'K', 'K' }; 14 | 15 | //Keycodes 16 | const ConsumerKeycode ccode[2] = { MEDIA_VOLUME_MUTE, 17 | MEDIA_PLAY_PAUSE 18 | }; 19 | 20 | const KeyboardKeycode kcode[2] = { KEY_UP_ARROW, 21 | KEY_DOWN_ARROW 22 | }; 23 | 24 | void setup() { 25 | Keyboard.begin(); 26 | Consumer.begin(); 27 | 28 | //setup inputs, turn on pullups 29 | for (int i = 0; i <= 1; i++) { 30 | pinMode(k[i], INPUT); 31 | digitalWrite(k[i], 1); 32 | pinMode(l[i], OUTPUT); 33 | } 34 | } 35 | 36 | void loop() { 37 | CheckKeys(); 38 | delay(debounce); 39 | } 40 | 41 | void CheckKeys() { 42 | for (int i = 0; i <= 1; i++) { 43 | if (codetype[i] == 'M') { 44 | if (digitalRead(k[i]) == 0) { 45 | if (s[i] == 0) { 46 | Consumer.press((ccode[i])); 47 | s[i] = 1; 48 | digitalWrite(l[i], 1); 49 | } 50 | } 51 | else { 52 | if (s[i] == 1) { 53 | s[i] = 0; 54 | digitalWrite(l[i], 0); 55 | Consumer.release((ccode[i])); 56 | } 57 | } 58 | } 59 | if (codetype[i] == 'K') { 60 | if (digitalRead(k[i]) == 0) { 61 | if (s[i] == 0) { 62 | Keyboard.press((kcode[i])); 63 | s[i] = 1; 64 | digitalWrite(l[i], 1); 65 | } 66 | } 67 | else { 68 | if (s[i] == 1) { 69 | s[i] = 0; 70 | digitalWrite(l[i], 0); 71 | Keyboard.release((kcode[i])); 72 | } 73 | } 74 | } 75 | } 76 | } 77 | 78 | -------------------------------------------------------------------------------- /2pack/2pack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/2pack/2pack.png -------------------------------------------------------------------------------- /2pack/2pack.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/2pack/2pack.zip -------------------------------------------------------------------------------- /2pack/logo/Osu_bw.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/2pack/logo/Osu_bw.bmp -------------------------------------------------------------------------------- /2pack/logo/readme.md: -------------------------------------------------------------------------------- 1 | ![osu_bw](Osu_bw.bmp) 2 | 3 | [Osu Logo](https://en.wikipedia.org/wiki/File:Osu!Logo_(2015).png) by [Dean "peppy" Herbert](https://en.wikipedia.org/wiki/Dean_Herbert_(developer)), used under CC BY SA / bw of original 4 | 5 | File released under https://creativecommons.org/licenses/by-sa/4.0/ 6 | 7 | ![Creative Commons Attribution-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png) 8 | -------------------------------------------------------------------------------- /2pack/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/06/2-pack.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![2pack](2pack.png) 12 | 13 | Gerber: 2Pack.zip 14 | 15 | 16 | 40.7mm Max* 75.6mm Max; 17 | Layers: 2; 18 | PCB Thickness: 1.6mm; 19 | PCB Qty.: 10; 20 | PCB Color: Green; 21 | Surface Finish: HASL; 22 | Copper Weight: 1; 23 | Panelized PCBs: 1 24 | 25 | 26 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 27 | 28 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 29 | -------------------------------------------------------------------------------- /4pack/4pack.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | //debounce milliseconds 6 | const int debounce = 5; 7 | //Switch Pins 8 | const byte k[4] = { 4, 5, 6, 7 }; 9 | //Switch status 10 | boolean s[4] = { 0, 0, 0, 0 }; 11 | 12 | //M for Media Key, K for Keyboard 13 | const char codetype[4] = { 'K', 'K', 'K', 'K' }; 14 | 15 | //Keycodes 16 | const ConsumerKeycode ccode[4] = { MEDIA_VOLUME_MUTE, 17 | MEDIA_VOLUME_MUTE, 18 | MEDIA_PLAY_PAUSE, 19 | MEDIA_PLAY_PAUSE 20 | }; 21 | 22 | const KeyboardKeycode kcode[4] = { KEY_LEFT_ARROW, 23 | KEY_DOWN_ARROW, 24 | KEY_UP_ARROW, 25 | KEY_RIGHT_ARROW 26 | }; 27 | byte col = 0; 28 | byte leds[2][2]; 29 | const int keyfade = 40; 30 | const char curve[] = { 31 | 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1 32 | }; 33 | const int fadecount = 2; 34 | const unsigned long breathcount = 5000; 35 | int fadecounter = 0; 36 | unsigned long breathcounter = 0; 37 | byte pass = 1; 38 | 39 | // pin[xx] on led matrix connected to nn on Arduino (-1 is dummy to make array start at pos 1) 40 | int pins[6] = { 41 | -1, 18, 19, 20, 21 42 | }; 43 | 44 | // col[xx] of leds = pin yy on led matrix 45 | int cols[2] = { 46 | pins[2], pins[1] 47 | }; 48 | 49 | // row[xx] of leds = pin yy on led matrix 50 | int rows[2] = { 51 | pins[4], pins[3] 52 | }; 53 | 54 | 55 | 56 | void setup() { 57 | Keyboard.begin(); 58 | Consumer.begin(); 59 | setupLeds(); 60 | onLeds(); 61 | //setup inputs, turn on pullups 62 | for (int i = 0; i < 4; i++) { 63 | pinMode(k[i], INPUT); 64 | digitalWrite(k[i], 1); 65 | } 66 | } 67 | 68 | void loop() { 69 | CheckKeys(); 70 | delay(debounce); 71 | 72 | fadecounter++; 73 | if (fadecounter > fadecount) { 74 | fadecounter = 0; 75 | fade(); 76 | } 77 | breathcounter++; 78 | if (breathcounter > breathcount) { 79 | breathcounter = 0; 80 | fadecounter = 0; 81 | breath(); 82 | } 83 | } 84 | 85 | void CheckKeys() { 86 | for (int i = 0; i < 4; i++) { 87 | if (codetype[i] == 'M') { 88 | if (digitalRead(k[i]) == 0) { 89 | if (s[i] == 0) { 90 | Consumer.press((ccode[i])); 91 | s[i] = 1; 92 | byte row = i / 2; 93 | byte col = i % 2; 94 | leds[col][row] = 60; 95 | breathcounter = 0; 96 | } 97 | } 98 | else { 99 | if (s[i] == 1) { 100 | s[i] = 0; 101 | Consumer.release((ccode[i])); 102 | byte row = i / 2; 103 | byte col = i % 2; 104 | leds[col][row] = 60; 105 | breathcounter = 0; 106 | } 107 | } 108 | } 109 | if (codetype[i] == 'K') { 110 | if (digitalRead(k[i]) == 0) { 111 | if (s[i] == 0) { 112 | Keyboard.press((kcode[i])); 113 | s[i] = 1; 114 | byte row = i / 2; 115 | byte col = i % 2; 116 | leds[col][row] = 60; 117 | breathcounter = 0; 118 | } 119 | } 120 | else { 121 | if (s[i] == 1) { 122 | s[i] = 0; 123 | Keyboard.release((kcode[i])); 124 | byte row = i / 2; 125 | byte col = i % 2; 126 | leds[col][row] = 60; 127 | breathcounter = 0; 128 | } 129 | } 130 | } 131 | } 132 | } 133 | 134 | void setupLeds() { 135 | // sets the pins as output 136 | for (int i = 1; i <= 4; i++) { 137 | pinMode(pins[i], OUTPUT); 138 | } 139 | 140 | // set up cols and rows 141 | for (int i = 1; i <= 2; i++) { 142 | digitalWrite(cols[i - 1], HIGH); 143 | } 144 | 145 | for (int i = 1; i <= 2; i++) { 146 | digitalWrite(rows[i - 1], LOW); 147 | } 148 | 149 | clearLeds(); 150 | 151 | // Set refresh rate (interrupt timeout period) 152 | Timer1.initialize(500); 153 | // Set interrupt routine to be called 154 | Timer1.attachInterrupt(display); 155 | } 156 | 157 | void clearLeds() { 158 | // Clear display array 159 | for (int i = 0; i < 2; i++) { 160 | for (int j = 0; j < 2; j++) { 161 | leds[i][j] = 0; 162 | } 163 | } 164 | } 165 | 166 | void onLeds() { 167 | for (int i = 0; i < 2; i++) { 168 | for (int j = 0; j < 2; j++) { 169 | leds[i][j] = keyfade; 170 | } 171 | } 172 | } 173 | 174 | void fade() { 175 | for (int i = 0; i < 2; i++) { 176 | for (int j = 0; j < 2; j++) { 177 | if (leds[i][j] > 0) { 178 | leds[i][j] = leds[i][j] - 1; 179 | } 180 | } 181 | } 182 | } 183 | 184 | void breath() { 185 | for (int i = 0; i < 2; i++) { 186 | for (int j = 0; j < 2; j++) { 187 | leds[i][j] = 60; 188 | } 189 | } 190 | } 191 | 192 | // Interrupt routine 193 | void display() { 194 | digitalWrite(cols[col], HIGH); // Turn whole previous column off 195 | col++; 196 | if (col == 2) { 197 | col = 0; 198 | pass++; 199 | if (pass > 8) { 200 | pass = 1; 201 | } 202 | } 203 | for (int row = 0; row < 2; row++) { 204 | if (curve[leds[col][row]] > pass) { 205 | digitalWrite(rows[row], HIGH); // Turn on this led 206 | } 207 | else { 208 | digitalWrite(rows[row], LOW); // Turn off this led 209 | } 210 | } 211 | digitalWrite(cols[col], LOW); // Turn whole column on at once (for equal lighting times) 212 | } 213 | 214 | -------------------------------------------------------------------------------- /4pack/4pack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/4pack/4pack.png -------------------------------------------------------------------------------- /4pack/4pack.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/4pack/4pack.zip -------------------------------------------------------------------------------- /4pack/logo/Osu_bw.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/4pack/logo/Osu_bw.bmp -------------------------------------------------------------------------------- /4pack/logo/readme.md: -------------------------------------------------------------------------------- 1 | ![osu_bw](Osu_bw.bmp) 2 | 3 | [Osu Logo](https://en.wikipedia.org/wiki/File:Osu!Logo_(2015).png) by [Dean "peppy" Herbert](https://en.wikipedia.org/wiki/Dean_Herbert_(developer)), used under CC BY SA / bw of original 4 | 5 | File released under https://creativecommons.org/licenses/by-sa/4.0/ 6 | 7 | ![Creative Commons Attribution-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png) 8 | -------------------------------------------------------------------------------- /4pack/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/07/4-pack.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![4pack](4pack.png) 12 | 13 | Gerber: 4Pack.zip 14 | 15 | 16 | 77.4mm Max* 77.4mm Max; 17 | Layers: 2; 18 | PCB Thickness: 1.6mm; 19 | PCB Qty.: 10; 20 | PCB Color: Green; 21 | Surface Finish: HASL; 22 | Copper Weight: 1; 23 | Panelized PCBs: 1 24 | 25 | 26 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 27 | 28 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 29 | -------------------------------------------------------------------------------- /4x4/4x4 top.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/4x4/4x4 top.zip -------------------------------------------------------------------------------- /4x4/4x4.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/4x4/4x4.zip -------------------------------------------------------------------------------- /4x4/4x4back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/4x4/4x4back.png -------------------------------------------------------------------------------- /4x4/4x4front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/4x4/4x4front.png -------------------------------------------------------------------------------- /4x4/4x4pinout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/4x4/4x4pinout.png -------------------------------------------------------------------------------- /4x4/4x4schematic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/4x4/4x4schematic.png -------------------------------------------------------------------------------- /4x4/json/4x4.json: -------------------------------------------------------------------------------- 1 | {"version":1,"keyboard":{"keys":[{"id":0,"legend":"0","state":{"x":0,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":0,"col":0,"keycodes":[{"id":"KC_0","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":1,"legend":"1","state":{"x":1,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":0,"col":1,"keycodes":[{"id":"KC_1","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":2,"legend":"2","state":{"x":2,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":0,"col":2,"keycodes":[{"id":"KC_2","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":3,"legend":"3","state":{"x":3,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":0,"col":3,"keycodes":[{"id":"KC_3","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":4,"legend":"4","state":{"x":0,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":1,"col":0,"keycodes":[{"id":"KC_4","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":5,"legend":"5","state":{"x":1,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":1,"col":1,"keycodes":[{"id":"KC_5","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":6,"legend":"6","state":{"x":2,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":1,"col":2,"keycodes":[{"id":"KC_6","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":7,"legend":"7","state":{"x":3,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":1,"col":3,"keycodes":[{"id":"KC_7","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":8,"legend":"8","state":{"x":0,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":2,"col":0,"keycodes":[{"id":"KC_8","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":9,"legend":"9","state":{"x":1,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":2,"col":1,"keycodes":[{"id":"KC_9","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":10,"legend":"A","state":{"x":2,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":2,"col":2,"keycodes":[{"id":"KC_A","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":11,"legend":"B","state":{"x":3,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":2,"col":3,"keycodes":[{"id":"KC_B","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":12,"legend":"C","state":{"x":0,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":3,"col":0,"keycodes":[{"id":"KC_C","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":13,"legend":"D","state":{"x":1,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":3,"col":1,"keycodes":[{"id":"KC_D","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":14,"legend":"E","state":{"x":2,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":3,"col":2,"keycodes":[{"id":"KC_E","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":15,"legend":"F","state":{"x":3,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":3,"col":3,"keycodes":[{"id":"KC_F","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]}],"controller":1,"bounds":{"min":{"x":0,"y":0},"max":{"x":4,"y":4}},"rows":4,"cols":4,"pins":{"row":["B2","D1","D0","D4"],"col":["C6","D7","E6","B4"],"num":null,"caps":null,"scroll":null,"compose":null,"kana":null,"led":null,"rgb":null},"macros":{},"quantum":"void matrix_init_user(void) {\n}\n\nvoid matrix_scan_user(void) {\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n\treturn true;\n}","settings":{"diodeDirection":0,"name":"4x4 hex","bootloaderSize":2,"rgbNum":0,"backlightLevels":3}}} 2 | -------------------------------------------------------------------------------- /4x4/json/4x4x4.json: -------------------------------------------------------------------------------- 1 | {"version":1,"keyboard":{"keys":[{"id":0,"legend":"PGDN","state":{"x":0,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":0,"keycodes":[{"id":"KC_PGDN","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":1,"legend":"PGUP","state":{"x":1,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":1,"keycodes":[{"id":"KC_PGUP","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":2,"legend":"7","state":{"x":2,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":2,"keycodes":[{"id":"KC_P7","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":3,"legend":"PGDN","state":{"x":3,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":3,"keycodes":[{"id":"KC_PGDN","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":4,"legend":"SCLK","state":{"x":4,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":4,"keycodes":[{"id":"KC_SLCK","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":5,"legend":"SCLK","state":{"x":5,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":5,"keycodes":[{"id":"KC_SLCK","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":6,"legend":"PGDN","state":{"x":6,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":6,"keycodes":[{"id":"KC_PGDN","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":7,"legend":"PGUP","state":{"x":7,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":7,"keycodes":[{"id":"KC_PGUP","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":8,"legend":"DOT","state":{"x":0,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":1,"col":0,"keycodes":[{"id":"KC_DOT","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":9,"legend":"4","state":{"x":1,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":1,"col":1,"keycodes":[{"id":"KC_P4","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":10,"legend":"7","state":{"x":2,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":1,"col":2,"keycodes":[{"id":"KC_P7","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":11,"legend":"PAUS","state":{"x":3,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":1,"col":3,"keycodes":[{"id":"KC_PAUS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":12,"legend":"F9","state":{"x":4,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":1,"col":4,"keycodes":[{"id":"KC_F9","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":13,"legend":"F2","state":{"x":5,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":1,"col":5,"keycodes":[{"id":"KC_F2","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":14,"legend":"F5","state":{"x":6,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":1,"col":6,"keycodes":[{"id":"KC_F5","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":15,"legend":"5","state":{"x":7,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":1,"col":7,"keycodes":[{"id":"KC_5","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":16,"legend":"LBRK","state":{"x":0,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":2,"col":0,"keycodes":[{"id":"KC_LBRC","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":17,"legend":"SCLK","state":{"x":1,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":2,"col":1,"keycodes":[{"id":"KC_SLCK","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":18,"legend":"END","state":{"x":2,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":2,"col":2,"keycodes":[{"id":"KC_END","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":19,"legend":"F3","state":{"x":3,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":2,"col":3,"keycodes":[{"id":"KC_F3","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":20,"legend":"PGDN","state":{"x":4,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":2,"col":4,"keycodes":[{"id":"KC_PGDN","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":21,"legend":"PAUS","state":{"x":5,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":2,"col":5,"keycodes":[{"id":"KC_PAUS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":22,"legend":"9","state":{"x":6,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":2,"col":6,"keycodes":[{"id":"KC_P9","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":23,"legend":"HOME","state":{"x":7,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":2,"col":7,"keycodes":[{"id":"KC_HOME","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":24,"legend":"SLSH","state":{"x":0,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":3,"col":0,"keycodes":[{"id":"KC_BSLS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":25,"legend":"BSLS","state":{"x":1,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":3,"col":1,"keycodes":[{"id":"KC_SLSH","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":26,"legend":"RGHT","state":{"x":2,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":3,"col":2,"keycodes":[{"id":"KC_RGHT","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":27,"legend":"LBRK","state":{"x":3,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":3,"col":3,"keycodes":[{"id":"KC_LBRC","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":28,"legend":"DOWN","state":{"x":4,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":3,"col":4,"keycodes":[{"id":"KC_DOWN","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":29,"legend":"1","state":{"x":5,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":3,"col":5,"keycodes":[{"id":"KC_P1","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":30,"legend":"DOT","state":{"x":6,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":3,"col":6,"keycodes":[{"id":"KC_DOT","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":31,"legend":"PGUP","state":{"x":7,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":3,"col":7,"keycodes":[{"id":"KC_PGUP","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]}],"controller":1,"bounds":{"min":{"x":0,"y":0},"max":{"x":8,"y":4}},"rows":4,"cols":8,"pins":{"row":["B2","D1","D0","D4"],"col":["C6","D7","E6","B4","B5","B6","B7","D6"],"num":null,"caps":null,"scroll":null,"compose":null,"kana":null,"led":null,"rgb":null},"macros":{},"quantum":"void matrix_init_user(void) {\n}\n\nvoid matrix_scan_user(void) {\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n\treturn true;\n}","settings":{"diodeDirection":0,"name":"4x4x4","bootloaderSize":2,"rgbNum":0,"backlightLevels":3}}} -------------------------------------------------------------------------------- /4x4/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/01/4x4x4x4x4.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![4x4front](4x4front.png) 12 | ![4x4back](4x4back.png) 13 | 14 | Gerber: 4x4.zip 15 | 16 | 17 | 76.2mm * 76.2mm 18 | Layers: 2 19 | PCB Thickness: 1.6mm 20 | PCB Quantity: 10 21 | PCB Color: Green 22 | Surface Finish: HASL(with lead) 23 | Copper Weight: 1oz. 24 | 25 | 26 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 27 | 28 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 29 | -------------------------------------------------------------------------------- /4x4S/4x4S.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/4x4S/4x4S.rar -------------------------------------------------------------------------------- /4x4S/4x4sBack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/4x4S/4x4sBack.png -------------------------------------------------------------------------------- /4x4S/4x4sFront.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/4x4S/4x4sFront.png -------------------------------------------------------------------------------- /4x4S/itsyschemastic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/4x4S/itsyschemastic.jpg -------------------------------------------------------------------------------- /4x4S/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | https://www.40percent.club/2019/03/4x4-itsybitsy.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![4x4sFront](4x4sFront.png) 12 | 13 | ![4x4sBack](4x4sBack.png) 14 | 15 | Gerber: 4x4S.rar 16 | 17 | 18 | Dimension:86mm*76mm 19 | PCB Qty:10 20 | PCB Thickness:1.6 21 | PCB Color:Green 22 | Surface Finish:HASL(with lead) 23 | Copper Weight:1 oz 24 | 25 | 26 | 27 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 28 | 29 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 30 | -------------------------------------------------------------------------------- /4x4_X/4x4_X.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/4x4_X/4x4_X.png -------------------------------------------------------------------------------- /4x4_X/4x4_X.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/4x4_X/4x4_X.zip -------------------------------------------------------------------------------- /4x4_X/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/10/tetris.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![4x4_X](4x4_X.png) 12 | 13 | Gerber: 4x4_X.zip 14 | 15 | 76.2mm Max* 76.2mm Max; 16 | Layers: 2; 17 | PCB Thickness: 1.6mm; 18 | PCB Qty.: 10; 19 | PCB Color: Green; 20 | Surface Finish: HASL; 21 | Copper Weight: 1; 22 | Panelized PCBs: 1 23 | 24 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 25 | 26 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /5x5/5x5.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/5x5/5x5.zip -------------------------------------------------------------------------------- /5x5/5x5back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/5x5/5x5back.png -------------------------------------------------------------------------------- /5x5/5x5front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/5x5/5x5front.png -------------------------------------------------------------------------------- /5x5/5x5plate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/5x5/5x5plate.png -------------------------------------------------------------------------------- /5x5/5x5plate.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/5x5/5x5plate.zip -------------------------------------------------------------------------------- /5x5/5x5schematic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/5x5/5x5schematic.png -------------------------------------------------------------------------------- /5x5/pinout.txt: -------------------------------------------------------------------------------- 1 | Rows 2 | 3 | B2, D1, D0, D4, C6 4 | 5 | Cols 6 | 7 | D7, E6, B4, B5, B6, B7, D6, F7, F6, F5, F4, F1, F0, B3, B1 8 | -------------------------------------------------------------------------------- /5x5/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/04/5x5.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![5x5front](5x5front.png) 12 | ![5x5back](5x5back.png) 13 | 14 | Gerber: 5x5.zip 15 | 16 | 17 | 95.3mm Max* 95.3mm Max; 18 | Layers: 2; 19 | PCB Thickness: 1.6mm; 20 | PCB Qty.: 10; 21 | PCB Color: Green; 22 | Surface Finish: HASL; 23 | Copper Weight: 1; 24 | Panelized PCBs: 1 25 | 26 | 27 | Plate 28 | 29 | ![5x5plate](5x5plate.png) 30 | 31 | Gerber: 5x5plate.zip 32 | 33 | 34 | 95.3mm Max* 95.3mm Max; 35 | Layers: 2; 36 | PCB Thickness: 1.6mm; 37 | PCB Qty.: 10; 38 | PCB Color: Green; 39 | Surface Finish: HASL; 40 | Copper Weight: 1; 41 | Panelized PCBs: 1 42 | 43 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 44 | 45 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 46 | -------------------------------------------------------------------------------- /5x5x9/5x5x9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/5x5x9/5x5x9.png -------------------------------------------------------------------------------- /5x5x9/5x5x9.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/5x5x9/5x5x9.rar -------------------------------------------------------------------------------- /5x5x9/5x5x9configs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/5x5x9/5x5x9configs.png -------------------------------------------------------------------------------- /5x5x9/5x5x9plate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/5x5x9/5x5x9plate.png -------------------------------------------------------------------------------- /5x5x9/5x5x9plate.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/5x5x9/5x5x9plate.rar -------------------------------------------------------------------------------- /5x5x9/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/06/5x5x9.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | Switch parts: 8 | 9 | 4 pin header https://lcsc.com/product-detail/Male-Header_2-54-1-4PHeader-tray_C91552.html 10 | 11 | MFR P/N: 2.54-1*4PHeader 12 | LCSC Part #: C91552 13 | 14 | BOOT1 slide switch https://lcsc.com/product-detail/Toggle-Switches_9mm-3-5mm_C92658.html 15 | 16 | Mfr.Part #: K3-1280S-F1 17 | LCSC Part #: C92658 18 | 19 | RESET/BUT1 switch https://lcsc.com/product-detail/Tactile-Switches_ALPS_SKSCLBE010_3-3-5-1-1-Side-press-1-6N_C115361.html 20 | 21 | Mfr.Part #: SKSCLBE010 22 | LCSC Part #: C115361 23 | 24 | 25 | 26 | EasyEDA ordering info: 27 | 28 | PCB 29 | 30 | ![5x5x9](5x5x9.png) 31 | 32 | Gerber: 5x5x9.rar 33 | 34 | 35 | 95.3mm Max* 95.3mm Max; 36 | Layers: 2; 37 | PCB Thickness: 1.6mm; 38 | PCB Qty.: 10; 39 | PCB Color: Green; 40 | Surface Finish: HASL; 41 | Copper Weight: 1; 42 | Panelized PCBs: 1 43 | 44 | 45 | Plate 46 | 47 | ![5x5x9plate](5x5x9plate.png) 48 | 49 | Gerber: 5x5x9plate.rar 50 | 51 | 52 | 95.3mm Max* 95.3mm Max; 53 | Layers: 2; 54 | PCB Thickness: 1.6mm; 55 | PCB Qty.: 10; 56 | PCB Color: Green; 57 | Surface Finish: HASL; 58 | Copper Weight: 1; 59 | Panelized PCBs: 1 60 | 61 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 62 | 63 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 64 | -------------------------------------------------------------------------------- /6lit/6lit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/6lit/6lit.png -------------------------------------------------------------------------------- /6lit/6lit.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/6lit/6lit.zip -------------------------------------------------------------------------------- /6lit/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/09/6lit.html 4 | 5 | BOM (per side) 6 | 7 | 6 1n4148 diodes 8 | 6 MX compatible PCB mount switches 9 | 1 TRRS Jack Sparkfun PRT-12639 10 | 1 Pro Micro 5v 11 | 2 12pin headers or 1 24pin machined pin wide socket 12 | 1 5.2mm SMT switch (RESET) https://lcsc.com/product-detail/Tactile-Switches_5-2mm-5-2mm_C92584.html 13 | 14 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 15 | 16 | EasyEDA ordering info: 17 | 18 | PCB 19 | 20 | ![6lit](6lit.png) 21 | 22 | Gerber: 6lit.zip 23 | 24 | 25 | 64.3mm Max* 91.7mm Max; 26 | Layers: 2; 27 | PCB Thickness: 1.6mm; 28 | PCB Qty.: 10; 29 | PCB Color: Green; 30 | Surface Finish: HASL; 31 | Copper Weight: 1; 32 | Panelized PCBs: 1 33 | 34 | 35 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 36 | 37 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 38 | -------------------------------------------------------------------------------- /Six Pack/Six Pack.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/Six Pack/Six Pack.zip -------------------------------------------------------------------------------- /Six Pack/_6pack.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | //debounce milliseconds 6 | const int debounce = 5; 7 | //Switch Pins 8 | const byte k[6] = { 4, 5, 6, 7, 8, 9 }; 9 | //Switch status 10 | boolean s[6] = { 0, 0, 0, 0, 0, 0 }; 11 | 12 | //M for Media Key, K for Keyboard 13 | const char codetype[6] = { 'M', 'K', 'M', 'K', 'K', 'K' }; 14 | 15 | //Keycodes 16 | const ConsumerKeycode ccode[6] = { MEDIA_VOLUME_MUTE, 17 | MEDIA_VOLUME_MUTE, 18 | MEDIA_PLAY_PAUSE, 19 | MEDIA_PLAY_PAUSE, 20 | MEDIA_PLAY_PAUSE, 21 | MEDIA_PLAY_PAUSE 22 | }; 23 | 24 | const KeyboardKeycode kcode[6] = { KEY_ESC, 25 | KEY_UP_ARROW, 26 | KEY_BACKSPACE, 27 | KEY_LEFT_ARROW, 28 | KEY_DOWN_ARROW, 29 | KEY_RIGHT_ARROW 30 | }; 31 | byte col = 0; 32 | byte leds[3][2]; 33 | const int keyfade = 40; 34 | const char curve[] = { 35 | 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1 36 | }; 37 | const int fadecount = 2; 38 | const unsigned long breathcount = 5000; 39 | int fadecounter = 0; 40 | unsigned long breathcounter = 0; 41 | byte pass = 1; 42 | 43 | // pin[xx] on led matrix connected to nn on Arduino (-1 is dummy to make array start at pos 1) 44 | int pins[6] = { 45 | -1, 10, 18, 19, 20, 21 46 | }; 47 | 48 | // col[xx] of leds = pin yy on led matrix 49 | int cols[3] = { 50 | pins[3], pins[2], pins[1] 51 | }; 52 | 53 | // row[xx] of leds = pin yy on led matrix 54 | int rows[2] = { 55 | pins[5], pins[4] 56 | }; 57 | 58 | 59 | 60 | void setup() { 61 | Keyboard.begin(); 62 | Consumer.begin(); 63 | setupLeds(); 64 | onLeds(); 65 | //setup inputs, turn on pullups 66 | for (int i = 0; i <= 5; i++) { 67 | pinMode(k[i], INPUT); 68 | digitalWrite(k[i], 1); 69 | } 70 | } 71 | 72 | void loop() { 73 | CheckKeys(); 74 | delay(debounce); 75 | 76 | fadecounter++; 77 | if (fadecounter > fadecount) { 78 | fadecounter = 0; 79 | fade(); 80 | } 81 | breathcounter++; 82 | if (breathcounter > breathcount) { 83 | breathcounter = 0; 84 | fadecounter = 0; 85 | breath(); 86 | } 87 | } 88 | 89 | void CheckKeys() { 90 | for (int i = 0; i <= 5; i++) { 91 | if (codetype[i] == 'M') { 92 | if (digitalRead(k[i]) == 0) { 93 | if (s[i] == 0) { 94 | Consumer.press((ccode[i])); 95 | s[i] = 1; 96 | byte row = i / 3; 97 | byte col = i % 3; 98 | leds[col][row] = 60; 99 | breathcounter = 0; 100 | } 101 | } 102 | else { 103 | if (s[i] == 1) { 104 | s[i] = 0; 105 | Consumer.release((ccode[i])); 106 | byte row = i / 3; 107 | byte col = i % 3; 108 | leds[col][row] = 60; 109 | breathcounter = 0; 110 | } 111 | } 112 | } 113 | if (codetype[i] == 'K') { 114 | if (digitalRead(k[i]) == 0) { 115 | if (s[i] == 0) { 116 | Keyboard.press((kcode[i])); 117 | s[i] = 1; 118 | byte row = i / 3; 119 | byte col = i % 3; 120 | leds[col][row] = 60; 121 | breathcounter = 0; 122 | } 123 | } 124 | else { 125 | if (s[i] == 1) { 126 | s[i] = 0; 127 | Keyboard.release((kcode[i])); 128 | byte row = i / 3; 129 | byte col = i % 3; 130 | leds[col][row] = 60; 131 | breathcounter = 0; 132 | } 133 | } 134 | } 135 | } 136 | } 137 | 138 | void setupLeds() { 139 | // sets the pins as output 140 | for (int i = 1; i <= 6; i++) { 141 | pinMode(pins[i], OUTPUT); 142 | } 143 | 144 | // set up cols and rows 145 | for (int i = 1; i <= 3; i++) { 146 | digitalWrite(cols[i - 1], HIGH); 147 | } 148 | 149 | for (int i = 1; i <= 2; i++) { 150 | digitalWrite(rows[i - 1], LOW); 151 | } 152 | 153 | clearLeds(); 154 | 155 | // Set refresh rate (interrupt timeout period) 156 | Timer1.initialize(500); 157 | // Set interrupt routine to be called 158 | Timer1.attachInterrupt(display); 159 | } 160 | 161 | void clearLeds() { 162 | // Clear display array 163 | for (int i = 0; i < 3; i++) { 164 | for (int j = 0; j < 2; j++) { 165 | leds[i][j] = 0; 166 | } 167 | } 168 | } 169 | 170 | void onLeds() { 171 | for (int i = 0; i < 3; i++) { 172 | for (int j = 0; j < 2; j++) { 173 | leds[i][j] = keyfade; 174 | } 175 | } 176 | } 177 | 178 | void fade() { 179 | for (int i = 0; i < 3; i++) { 180 | for (int j = 0; j < 2; j++) { 181 | if (leds[i][j] > 0) { 182 | leds[i][j] = leds[i][j] - 1; 183 | } 184 | } 185 | } 186 | } 187 | 188 | void breath() { 189 | for (int i = 0; i < 3; i++) { 190 | for (int j = 0; j < 2; j++) { 191 | leds[i][j] = 60; 192 | } 193 | } 194 | } 195 | 196 | // Interrupt routine 197 | void display() { 198 | digitalWrite(cols[col], HIGH); // Turn whole previous column off 199 | col++; 200 | if (col == 3) { 201 | col = 0; 202 | pass++; 203 | if (pass > 8) { 204 | pass = 1; 205 | } 206 | } 207 | for (int row = 0; row < 2; row++) { 208 | if (curve[leds[col][row]] > pass) { 209 | digitalWrite(rows[row], HIGH); // Turn on this led 210 | } 211 | else { 212 | digitalWrite(rows[row], LOW); // Turn off this led 213 | } 214 | } 215 | digitalWrite(cols[col], LOW); // Turn whole column on at once (for equal lighting times) 216 | } 217 | 218 | -------------------------------------------------------------------------------- /Six Pack/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/05/six-pack-11.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![sixpack](sixpack.png) 12 | 13 | Gerber: Six Pack.zip 14 | 15 | 61.9mm Max* 121.5mm Max; 16 | Layers: 2; 17 | PCB Thickness: 1.6mm; 18 | PCB Qty.: 20; 19 | PCB Color: Green; 20 | Surface Finish: HASL; 21 | Copper Weight: 1; 22 | Panelized PCBs: 1 23 | 24 | 25 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 26 | 27 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 28 | 29 | -------------------------------------------------------------------------------- /Six Pack/sixpack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/Six Pack/sixpack.png -------------------------------------------------------------------------------- /analog/analogread.ino: -------------------------------------------------------------------------------- 1 | #define HWSERIAL Serial1 2 | 3 | void setup() { 4 | Serial.begin(9600); 5 | HWSERIAL.begin(9600); 6 | } 7 | const unsigned long sleeptime = 2500; 8 | unsigned long sleep = 0; 9 | int aread = 0; 10 | boolean bounce = 0; 11 | 12 | // array to hold analog values for each column 13 | int col[12]; 14 | 15 | // array to hold high and low values for each range 16 | int range[16][2] = { 17 | {1009, 1024}, 18 | {204, 215}, 19 | {343, 352}, 20 | {146, 152}, 21 | {507, 518}, 22 | {170, 176}, 23 | {255, 260}, 24 | {126, 134}, 25 | {686, 701}, 26 | {186, 192}, 27 | {295, 302}, 28 | {137, 142}, 29 | {409, 416}, 30 | {157, 162}, 31 | {227, 238}, 32 | {118, 125} 33 | }; 34 | 35 | // convert to switch positions 36 | boolean bin[16][4] = { 37 | {0, 0, 0, 0}, 38 | {1, 0, 0, 0}, 39 | {0, 1, 0, 0}, 40 | {1, 1, 0, 0}, 41 | {0, 0, 1, 0}, 42 | {1, 0, 1, 0}, 43 | {0, 1, 1, 0}, 44 | {1, 1, 1, 0}, 45 | {0, 0, 0, 1}, 46 | {1, 0, 0, 1}, 47 | {0, 1, 0, 1}, 48 | {1, 1, 0, 1}, 49 | {0, 0, 1, 1}, 50 | {1, 0, 1, 1}, 51 | {0, 1, 1, 1}, 52 | {1, 1, 1, 1} 53 | }; 54 | 55 | // array to hold key positions 56 | boolean keya[12][4] = { 57 | {0, 0, 0, 0}, 58 | {0, 0, 0, 0}, 59 | {0, 0, 0, 0}, 60 | {0, 0, 0, 0}, 61 | {0, 0, 0, 0}, 62 | {0, 0, 0, 0}, 63 | {0, 0, 0, 0}, 64 | {0, 0, 0, 0}, 65 | {0, 0, 0, 0}, 66 | {0, 0, 0, 0}, 67 | {0, 0, 0, 0}, 68 | {0, 0, 0, 0} 69 | }; 70 | 71 | boolean keyb[12][4] = { 72 | {0, 0, 0, 0}, 73 | {0, 0, 0, 0}, 74 | {0, 0, 0, 0}, 75 | {0, 0, 0, 0}, 76 | {0, 0, 0, 0}, 77 | {0, 0, 0, 0}, 78 | {0, 0, 0, 0}, 79 | {0, 0, 0, 0}, 80 | {0, 0, 0, 0}, 81 | {0, 0, 0, 0}, 82 | {0, 0, 0, 0}, 83 | {0, 0, 0, 0} 84 | }; 85 | 86 | void loop() 87 | { 88 | LEDsleep(); 89 | 90 | readcolumns(); 91 | assignkeysA(); 92 | delay(5); 93 | readcolumns(); 94 | assignkeysB(); 95 | 96 | compkeys(); 97 | 98 | if (bounce == 0) 99 | { 100 | LEDupdate(); 101 | SERIALupdate(); 102 | } 103 | } 104 | 105 | void readcolumns() 106 | { 107 | byte pass = 0; 108 | int comp = 0; 109 | for (int x = 0; x < 12; x++) 110 | { 111 | aread = 0;; 112 | comp = 0; 113 | pass = 0; 114 | 115 | while (pass < 3) 116 | { 117 | aread = analogRead(x + 14); 118 | if (aread != comp) 119 | { 120 | pass = 0; 121 | } 122 | comp = aread; 123 | pass++; 124 | } 125 | col[x] = aread; 126 | } 127 | } 128 | 129 | void assignkeysA() 130 | { 131 | for (int c = 0; c < 12; c++) 132 | { 133 | for (int v = 0; v < 16; v++) 134 | { 135 | if ((col[c] >= range[v][0]) && (col[c] <= range[v][1])) 136 | { 137 | for (byte x = 0; x < 4; x++) 138 | { 139 | keya[c][x] = bin[v][x]; 140 | } 141 | } 142 | } 143 | } 144 | } 145 | 146 | void assignkeysB() 147 | { 148 | for (int c = 0; c < 12; c++) 149 | { 150 | for (int v = 0; v < 16; v++) 151 | { 152 | if ((col[c] >= range[v][0]) && (col[c] <= range[v][1])) 153 | { 154 | for (byte x = 0; x < 4; x++) 155 | { 156 | keyb[c][x] = bin[v][x]; 157 | } 158 | } 159 | } 160 | } 161 | } 162 | 163 | void compkeys() 164 | { 165 | for (int c = 0; c < 12; c++) 166 | { 167 | for (int v = 0; v < 16; v++) 168 | { 169 | bounce = 0; 170 | for (byte x = 0; x < 4; x++) 171 | { 172 | if (keya[c][x] != keyb[c][x]) 173 | { 174 | bounce = 1; 175 | } 176 | } 177 | } 178 | } 179 | } 180 | 181 | void LEDupdate() 182 | { 183 | for (int c = 0; c < 12; c++) 184 | { 185 | for (byte r = 0; r < 4; r++) 186 | { 187 | if (keya[c][r] == 1) 188 | { 189 | sleep = 0; 190 | HWSERIAL.write((r * 16) + c); 191 | Serial.println((r * 16) + c); 192 | } 193 | } 194 | } 195 | } 196 | 197 | void SERIALupdate() 198 | { 199 | for (int y = 0; y < 12; y++) 200 | { 201 | Serial.print(col[y]); 202 | Serial.print(", "); 203 | } 204 | Serial.println(); 205 | } 206 | 207 | void LEDsleep() 208 | { 209 | if (sleep < sleeptime) 210 | { 211 | sleep++; 212 | } 213 | 214 | if (sleep == sleeptime) 215 | { 216 | HWSERIAL.write(random(0, 63)); 217 | delay(5); 218 | } 219 | } 220 | 221 | -------------------------------------------------------------------------------- /arduino_six/arduino six.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/arduino_six/arduino six.zip -------------------------------------------------------------------------------- /arduino_six/arduino_six.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/arduino_six/arduino_six.png -------------------------------------------------------------------------------- /arduino_six/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/11/arduino-six.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | Arduino Six 10 | 11 | ![arduino_six](arduino_six.png) 12 | 13 | Gerber: arduino_six.zip 14 | 15 | Layers:2 16 | Dimension: 95mm*62mm 17 | PCB Qty:10 18 | PCB Thickness:1.6 19 | PCB Color:Green 20 | Surface Finish:HASL(with lead) 21 | Copper Weight:1 22 | 23 | 24 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 25 | 26 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 27 | -------------------------------------------------------------------------------- /basic.json: -------------------------------------------------------------------------------- 1 | {"version":1,"keyboard":{"keys":[{"id":0,"legend":"Q","state":{"x":0,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":0,"keycodes":[{"id":"LT()","fields":[1,{"id":"KC_Q","fields":[]}]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":1,"legend":"W","state":{"x":1,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":1,"keycodes":[{"id":"KC_W","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":2,"legend":"E","state":{"x":2,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":2,"keycodes":[{"id":"KC_E","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":3,"legend":"R","state":{"x":3,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":3,"keycodes":[{"id":"KC_R","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":4,"legend":"T","state":{"x":4,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":4,"keycodes":[{"id":"KC_T","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":5,"legend":"Y","state":{"x":5,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":5,"keycodes":[{"id":"KC_Y","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":6,"legend":"U","state":{"x":6,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":1,"col":0,"keycodes":[{"id":"KC_U","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":7,"legend":"I","state":{"x":7,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":1,"col":1,"keycodes":[{"id":"KC_I","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":8,"legend":"O","state":{"x":8,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":1,"col":2,"keycodes":[{"id":"KC_O","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":9,"legend":"P","state":{"x":9,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":1,"col":3,"keycodes":[{"id":"KC_P","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":10,"legend":"A","state":{"x":0,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":1,"col":4,"keycodes":[{"id":"KC_A","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":11,"legend":"S","state":{"x":1,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":1,"col":5,"keycodes":[{"id":"KC_S","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":12,"legend":"D","state":{"x":2,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":2,"col":0,"keycodes":[{"id":"KC_D","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":13,"legend":"F","state":{"x":3,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":2,"col":1,"keycodes":[{"id":"KC_F","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":14,"legend":"G","state":{"x":4,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":2,"col":2,"keycodes":[{"id":"KC_G","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":15,"legend":"H","state":{"x":5,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":2,"col":3,"keycodes":[{"id":"KC_H","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":16,"legend":"J","state":{"x":6,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":2,"col":4,"keycodes":[{"id":"KC_J","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":17,"legend":"K","state":{"x":7,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":2,"col":5,"keycodes":[{"id":"KC_K","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":18,"legend":"L","state":{"x":8,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":3,"col":0,"keycodes":[{"id":"KC_L","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":19,"legend":"ESC","state":{"x":9,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":3,"col":1,"keycodes":[{"id":"KC_ESC","fields":[]},{"id":"BL_INC","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":20,"legend":"Z","state":{"x":0,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":3,"col":2,"keycodes":[{"id":"KC_Z","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":21,"legend":"X","state":{"x":1,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":3,"col":3,"keycodes":[{"id":"KC_X","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":22,"legend":"C","state":{"x":2,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":3,"col":4,"keycodes":[{"id":"KC_C","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":23,"legend":"V","state":{"x":3,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":3,"col":5,"keycodes":[{"id":"KC_V","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":24,"legend":"BS","state":{"x":4,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":4,"col":0,"keycodes":[{"id":"KC_BSPC","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":25,"legend":"Space","state":{"x":5,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":4,"col":1,"keycodes":[{"id":"KC_SPC","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":26,"legend":"B","state":{"x":6,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":4,"col":2,"keycodes":[{"id":"KC_B","fields":[]},{"id":"RESET","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":27,"legend":"N","state":{"x":7,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":4,"col":3,"keycodes":[{"id":"KC_N","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":28,"legend":"M","state":{"x":8,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":4,"col":4,"keycodes":[{"id":"KC_M","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":29,"legend":"Return","state":{"x":9,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":4,"col":5,"keycodes":[{"id":"KC_ENT","fields":[]},{"id":"BL_DEC","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]}],"controller":1,"bounds":{"min":{"x":0,"y":0},"max":{"x":10,"y":3}},"rows":5,"cols":6,"pins":{"row":["F7","B1","B3","B2","B6"],"col":["B4","E6","D7","C6","D4","D0"],"num":"D5","caps":"B0","scroll":null,"compose":null,"kana":null,"led":"B5","rgb":null},"macros":{},"quantum":"void matrix_init_user(void) {\n}\n\nvoid matrix_scan_user(void) {\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n\treturn true;\n}","settings":{"diodeDirection":0,"name":"Basic","bootloaderSize":2,"rgbNum":0,"backlightLevels":3}}} -------------------------------------------------------------------------------- /deathstar/deathstar.json: -------------------------------------------------------------------------------- 1 | {"version":1,"keyboard":{"keys":[{"id":0,"legend":"A","state":{"x":1.5,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":0,"keycodes":[{"id":"KC_A","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":1,"legend":"B","state":{"x":2.5,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":1,"keycodes":[{"id":"KC_B","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":2,"legend":"C","state":{"x":0.5,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":2,"keycodes":[{"id":"KC_C","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":3,"legend":"D","state":{"x":1.5,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":1,"col":0,"keycodes":[{"id":"KC_D","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":4,"legend":"E","state":{"x":2.5,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":1,"col":1,"keycodes":[{"id":"KC_E","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":5,"legend":"F","state":{"x":3.5,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":1,"col":2,"keycodes":[{"id":"KC_F","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":6,"legend":"G","state":{"x":0,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":2,"col":0,"keycodes":[{"id":"KC_G","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":7,"legend":"H","state":{"x":1,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":2,"col":1,"keycodes":[{"id":"KC_H","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":8,"legend":"I","state":{"x":2,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":2,"col":2,"keycodes":[{"id":"KC_I","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":9,"legend":"J","state":{"x":3,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":3,"col":0,"keycodes":[{"id":"KC_J","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":10,"legend":"K","state":{"x":4,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":3,"col":1,"keycodes":[{"id":"KC_K","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":11,"legend":"L","state":{"x":0.5,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":3,"col":2,"keycodes":[{"id":"KC_L","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":12,"legend":"M","state":{"x":1.5,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":4,"col":0,"keycodes":[{"id":"KC_M","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":13,"legend":"N","state":{"x":2.5,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":4,"col":1,"keycodes":[{"id":"KC_N","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":14,"legend":"O","state":{"x":3.5,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":4,"col":2,"keycodes":[{"id":"KC_O","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":15,"legend":"P","state":{"x":1.5,"y":4,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":5,"col":0,"keycodes":[{"id":"BL_DEC","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":16,"legend":"Q","state":{"x":2.5,"y":4,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":5,"col":1,"keycodes":[{"id":"BL_INC","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]}],"controller":1,"bounds":{"min":{"x":0,"y":0},"max":{"x":5,"y":5}},"rows":6,"cols":3,"pins":{"row":["D4","C6","D7","E6","B1","B3"],"col":["F4","F5","F6"],"num":null,"caps":null,"scroll":null,"compose":null,"kana":null,"led":"B5","rgb":null},"macros":{},"quantum":"void matrix_init_user(void) {\n}\n\nvoid matrix_scan_user(void) {\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n\treturn true;\n}","settings":{"diodeDirection":0,"name":"deathstar","bootloaderSize":2,"rgbNum":0,"backlightLevels":3}}} -------------------------------------------------------------------------------- /deathstar/ds.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/deathstar/ds.zip -------------------------------------------------------------------------------- /deathstar/ds_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/deathstar/ds_back.png -------------------------------------------------------------------------------- /deathstar/ds_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/deathstar/ds_front.png -------------------------------------------------------------------------------- /deathstar/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/09/deathstar.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![ds_front](ds_front.png) 12 | 13 | ![ds_back](ds_back.png) 14 | 15 | Gerber: ds.zip 16 | 17 | 18 | 97.9mm Max* 97.6mm Max; 19 | Layers: 2; 20 | PCB Thickness: 1.6mm; 21 | PCB Qty.: 10; 22 | PCB Color: Green; 23 | Surface Finish: HASL; 24 | Copper Weight: 1; 25 | Panelized PCBs: 1 26 | 27 | 28 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 29 | 30 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 31 | 32 | 33 | ROWS 34 | 35 | D4, C6, D7, E6, B1, B3 36 | 37 | COLS 38 | 39 | F4, F5, F6 40 | 41 | LED 42 | 43 | B5 44 | -------------------------------------------------------------------------------- /dilly_case/dilly_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/dilly_case/dilly_bottom.png -------------------------------------------------------------------------------- /dilly_case/dilly_bottom.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/dilly_case/dilly_bottom.rar -------------------------------------------------------------------------------- /dilly_case/dilly_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/dilly_case/dilly_top.png -------------------------------------------------------------------------------- /dilly_case/dilly_top.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/dilly_case/dilly_top.rar -------------------------------------------------------------------------------- /dilly_case/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/04/dilly-case.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | Dilly Top 10 | 11 | ![dillytop](dilly_top.png) 12 | 13 | Gerber: dilly_top.rar 14 | 15 | Layers:2 16 | Dimension: 62mm*185mm 17 | PCB Qty:10 PCB 18 | Thickness:1.6 19 | PCB Color:Green 20 | Surface Finish:HASL(with lead) 21 | Copper Weight:1 22 | 23 | Dilly Bottom 24 | 25 | ![dillybottom](dilly_bottom.png) 26 | 27 | Gerber: dilly_bottom.rar 28 | 29 | Layers:2 30 | Dimension: 62mm*185mm 31 | PCB Qty:10 PCB 32 | Thickness:1.6 33 | PCB Color:Green 34 | Surface Finish:HASL(with lead) 35 | Copper Weight:1 36 | 37 | 38 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 39 | 40 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 41 | -------------------------------------------------------------------------------- /domo/domo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/domo/domo.png -------------------------------------------------------------------------------- /domo/domo.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/domo/domo.zip -------------------------------------------------------------------------------- /domo/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/08/rawr.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![domo](domo.png) 12 | 13 | Gerber: domo.zip 14 | 15 | 16 | 100.0mm Max* 98.8mm Max; 17 | Layers: 2; 18 | PCB Thickness: 1.6mm; 19 | PCB Qty.: 10; 20 | PCB Color: Green; 21 | Surface Finish: HASL; 22 | Copper Weight: 1; 23 | Panelized PCBs: 1 24 | 25 | 26 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 27 | 28 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 29 | -------------------------------------------------------------------------------- /fml/FML12.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | //number of keys 5 | const int keys = 12; 6 | //debounce milliseconds 7 | const int debounce = 5; 8 | //Switch Pins 9 | const byte k[12] = { 5, 6, 7, 8, 21, 20, 19, 18, 15, 14, 16, 10 }; 10 | //Switch status 11 | boolean s[12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 12 | 13 | //M for Media Key, K for Keyboard 14 | const char codetype[12] = { 'K', 'K', 'K', 'K', 'K', 'K', 'K', 'K', 'K', 'K', 'K', 'K' }; 15 | 16 | //Keycodes 17 | const ConsumerKeycode ccode[keys] = { MEDIA_VOLUME_MUTE, 18 | MEDIA_VOLUME_MUTE, 19 | MEDIA_PLAY_PAUSE, 20 | MEDIA_PLAY_PAUSE, 21 | MEDIA_PLAY_PAUSE, 22 | MEDIA_PLAY_PAUSE, 23 | MEDIA_PLAY_PAUSE, 24 | MEDIA_PLAY_PAUSE, 25 | MEDIA_PLAY_PAUSE, 26 | MEDIA_PLAY_PAUSE, 27 | MEDIA_PLAY_PAUSE, 28 | MEDIA_PLAY_PAUSE 29 | }; 30 | 31 | const KeyboardKeycode kcode[keys] = { KEY_F1, 32 | KEY_F2, 33 | KEY_F3, 34 | KEY_F4, 35 | KEY_F5, 36 | KEY_F6, 37 | KEY_F7, 38 | KEY_F8, 39 | KEY_F9, 40 | KEY_F10, 41 | KEY_F11, 42 | KEY_F12 43 | }; 44 | 45 | void setup() { 46 | Keyboard.begin(); 47 | Consumer.begin(); 48 | //setup inputs, turn on pullups 49 | for (int i = 0; i < keys; i++) { 50 | pinMode(k[i], INPUT); 51 | digitalWrite(k[i], 1); 52 | } 53 | } 54 | 55 | void loop() { 56 | CheckKeys(); 57 | delay(debounce); 58 | } 59 | 60 | void CheckKeys() { 61 | for (int i = 0; i < keys; i++) { 62 | if (codetype[i] == 'M') { 63 | if (digitalRead(k[i]) == 0) { 64 | if (s[i] == 0) { 65 | Consumer.press((ccode[i])); 66 | s[i] = 1; 67 | } 68 | } 69 | else { 70 | if (s[i] == 1) { 71 | s[i] = 0; 72 | Consumer.release((ccode[i])); 73 | } 74 | } 75 | } 76 | if (codetype[i] == 'K') { 77 | if (digitalRead(k[i]) == 0) { 78 | if (s[i] == 0) { 79 | Keyboard.press((kcode[i])); 80 | s[i] = 1; 81 | } 82 | } 83 | else { 84 | if (s[i] == 1) { 85 | s[i] = 0; 86 | Keyboard.release((kcode[i])); 87 | } 88 | } 89 | } 90 | } 91 | } 92 | 93 | 94 | -------------------------------------------------------------------------------- /fml/fml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/fml/fml.png -------------------------------------------------------------------------------- /fml/fml.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/fml/fml.zip -------------------------------------------------------------------------------- /fml/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/07/fml.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![fml](fml.png) 12 | 13 | Gerber: fml.zip 14 | 15 | 16 | 233.4mm Max* 19.1mm Max; 17 | Layers: 2; 18 | PCB Thickness: 1.6mm; 19 | PCB Qty.: 5; 20 | PCB Color: Green; 21 | Surface Finish: HASL; 22 | Copper Weight: 1; 23 | Panelized PCBs: 1 24 | 25 | 26 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 27 | 28 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 29 | -------------------------------------------------------------------------------- /foobar/foobar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/foobar/foobar.png -------------------------------------------------------------------------------- /foobar/foobar1_1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/foobar/foobar1_1.zip -------------------------------------------------------------------------------- /foobar/foobarbottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/foobar/foobarbottom.png -------------------------------------------------------------------------------- /foobar/foobarbottom.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/foobar/foobarbottom.zip -------------------------------------------------------------------------------- /foobar/foobarplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/foobar/foobarplate.png -------------------------------------------------------------------------------- /foobar/foobarplate.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/foobar/foobarplate.zip -------------------------------------------------------------------------------- /foobar/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/09/foobar-11-with-plates.html 4 | 5 | http://www.40percent.club/2017/09/foobar-rgb-underglow.html 6 | 7 | http://www.40percent.club/2017/09/foobar-10.html 8 | 9 | BOM (per side) 10 | 11 | 15 1n4148 diodes 12 | 15 MX compatible PCB mount switches 13 | 1 TRRS Jack Sparkfun PRT-12639 14 | 1 Pro Micro 5v 15 | 2 12pin headers or 1 24pin machined pin wide socket 16 | 1 5.2mm SMT switch (RESET) https://lcsc.com/product-detail/Tactile-Switches_5-2mm-5-2mm_C92584.html 17 | 18 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 19 | 20 | EasyEDA ordering info: 21 | 22 | PCB 23 | 24 | ![foobar](foobar.png) 25 | 26 | Gerber: foobar1_1.zip 27 | 28 | 95.3mm Max* 61.9mm Max; 29 | Layers: 2; 30 | PCB Thickness: 1.6mm; 31 | PCB Qty.: 10; 32 | PCB Color: Green; 33 | Surface Finish: HASL; 34 | Copper Weight: 1; 35 | Panelized PCBs: 1 36 | 37 | 38 | ![foobarplate](foobarplate.png) 39 | 40 | 41 | Gerber: foobarplate.zip 42 | 43 | 97.6mm Max* 71.4mm Max; 44 | Layers: 2; 45 | PCB Thickness: 1.6mm; 46 | PCB Qty.: 10; 47 | PCB Color: Green; 48 | Surface Finish: HASL; 49 | Copper Weight: 1; 50 | Panelized PCBs: 1 51 | 52 | 53 | ![foobarbottom](foobarbottom.png) 54 | 55 | Gerber: foobarbottom.zip 56 | 57 | 97.6mm Max* 71.4mm Max; 58 | Layers: 2; 59 | PCB Thickness: 1.6mm; 60 | PCB Qty.: 10; 61 | PCB Color: Green; 62 | Surface Finish: HASL; 63 | Copper Weight: 1; 64 | Panelized PCBs: 1 65 | 66 | 67 | 68 | 69 | 70 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 71 | 72 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 73 | -------------------------------------------------------------------------------- /fourtytwo/42back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/fourtytwo/42back.png -------------------------------------------------------------------------------- /fourtytwo/42bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/fourtytwo/42bottom.png -------------------------------------------------------------------------------- /fourtytwo/42front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/fourtytwo/42front.png -------------------------------------------------------------------------------- /fourtytwo/42top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/fourtytwo/42top.png -------------------------------------------------------------------------------- /fourtytwo/fourtytwo bottom.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/fourtytwo/fourtytwo bottom.zip -------------------------------------------------------------------------------- /fourtytwo/fourtytwo top.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/fourtytwo/fourtytwo top.zip -------------------------------------------------------------------------------- /fourtytwo/fourtytwo.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/fourtytwo/fourtytwo.zip -------------------------------------------------------------------------------- /fourtytwo/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/02/fourty_two.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![42front](42front.png) 12 | ![42back](42back.png) 13 | 14 | Gerber: fourtytwo.zip 15 | 16 | 204.8mm Max* 71.4mm Max; 17 | Layers: 2; 18 | PCB Thickness: 1.6mm; 19 | PCB Qty.: 10; 20 | PCB Color: Green; 21 | Surface Finish: HASL; 22 | Copper Weight: 1; 23 | Panelized PCBs: 1 24 | 25 | 26 | ![42top](42top.png) 27 | 28 | Gerber: fourtytwo top.zip 29 | 30 | 214.3mm Max* 81.0mm Max; 31 | Layers: 2; 32 | PCB Thickness: 1.6mm; 33 | PCB Qty.: 5; 34 | PCB Color: Green; 35 | Surface Finish: HASL; 36 | Copper Weight: 1; 37 | Panelized PCBs: 1 38 | 39 | 40 | ![42bottom](42bottom.png) 41 | 42 | Gerber: fourtytwo bottom.zip 43 | 44 | 214.3mm Max* 81.0mm Max; 45 | Layers: 2; 46 | PCB Thickness: 1.6mm; 47 | PCB Qty.: 5; 48 | PCB Color: Green; 49 | Surface Finish: HASL; 50 | Copper Weight: 1; 51 | Panelized PCBs: 1 52 | 53 | 54 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 55 | 56 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 57 | -------------------------------------------------------------------------------- /gherkin alps/gherkinalps.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gherkin alps/gherkinalps.zip -------------------------------------------------------------------------------- /gherkin alps/gherkinalpsbottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gherkin alps/gherkinalpsbottom.png -------------------------------------------------------------------------------- /gherkin alps/gherkinalpsplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gherkin alps/gherkinalpsplate.png -------------------------------------------------------------------------------- /gherkin alps/gherkinalpsplate.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gherkin alps/gherkinalpsplate.zip -------------------------------------------------------------------------------- /gherkin alps/gherkinalpstop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gherkin alps/gherkinalpstop.png -------------------------------------------------------------------------------- /gherkin alps/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/08/gherkin-alps-11.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![gherkinalpstop](gherkinalpstop.png) 12 | 13 | ![gherkinalpsbottom](gherkinalpsbottom.png) 14 | 15 | Gerber: gherkinalps.zip 16 | 17 | 18 | 191.7mm Max* 54.8mm Max; 19 | Layers: 2; 20 | PCB Thickness: 1.6mm; 21 | PCB Qty.: 5; 22 | PCB Color: Green; 23 | Surface Finish: HASL; 24 | Copper Weight: 1; 25 | Panelized PCBs: 1 26 | 27 | 28 | 29 | ![gherkinalpsplate](gherkinalpsplate.png) 30 | 31 | Gerber: gherkinalpsplate.zip 32 | 33 | 34 | 201.2mm Max* 64.3mm Max; 35 | Layers: 2; 36 | PCB Thickness: 1.2mm; 37 | PCB Qty.: 5; 38 | PCB Color: Green; 39 | Surface Finish: HASL; 40 | Copper Weight: 1; 41 | Panelized PCBs: 1 42 | 43 | 44 | 45 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 46 | 47 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 48 | -------------------------------------------------------------------------------- /gherkin ml/ml.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gherkin ml/ml.zip -------------------------------------------------------------------------------- /gherkin ml/mlback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gherkin ml/mlback.png -------------------------------------------------------------------------------- /gherkin ml/mlfront.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gherkin ml/mlfront.png -------------------------------------------------------------------------------- /gherkin ml/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/10/gherkin-ml.html 4 | 5 | BOM 6 | 7 | 30 1n4148 diodes 8 | 30 Cherry ML switches 9 | 1 Pro Micro 5v 10 | 2 12pin headers or 1 24pin machined pin wide socket 11 | 1 5.2mm SMT switch (RESET) https://lcsc.com/product-detail/Tactile-Switches_5-2mm-5-2mm_C92584.html 12 | 13 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 14 | 15 | EasyEDA ordering info: 16 | 17 | PCB 18 | 19 | ![mlfront](mlfront.png) 20 | 21 | ![mlback](mlback.png) 22 | 23 | Gerber: ml.zip 24 | 25 | 26 | 191.7mm Max* 54.8mm Max; 27 | Layers: 2; 28 | PCB Thickness: 1.6mm; 29 | PCB Qty.: 5; 30 | PCB Color: Green; 31 | Surface Finish: HASL; 32 | Copper Weight: 1; 33 | Panelized PCBs: 1 34 | 35 | 36 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 37 | 38 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 39 | -------------------------------------------------------------------------------- /gherkin pack/30 pack.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gherkin pack/30 pack.zip -------------------------------------------------------------------------------- /gherkin pack/gherkinpack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gherkin pack/gherkinpack.png -------------------------------------------------------------------------------- /gherkin pack/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/07/gherkin-pack.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![gherkinpack](gherkinpack.png) 12 | 13 | Gerber: 30 Pack.zip 14 | 15 | 16 | 191.7mm Max* 110.7mm Max; 17 | Layers: 2; 18 | PCB Thickness: 1.6mm; 19 | PCB Qty.: 5; 20 | PCB Color: Green; 21 | Surface Finish: HASL; 22 | Copper Weight: 1; 23 | Panelized PCBs: 1 24 | 25 | 26 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 27 | 28 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 29 | -------------------------------------------------------------------------------- /gherkin plates rev2/30Bottom2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gherkin plates rev2/30Bottom2.png -------------------------------------------------------------------------------- /gherkin plates rev2/30Bottom2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gherkin plates rev2/30Bottom2.zip -------------------------------------------------------------------------------- /gherkin plates rev2/30TopMX2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gherkin plates rev2/30TopMX2.png -------------------------------------------------------------------------------- /gherkin plates rev2/30TopMX2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gherkin plates rev2/30TopMX2.zip -------------------------------------------------------------------------------- /gherkin plates rev2/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/05/new-gherkin-plates.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | Top 10 | 11 | ![30TopMX2](30TopMX2.png) 12 | 13 | Gerber: 30TopMX2.zip 14 | 15 | 201.2mm Max* 64.3mm Max; 16 | Layers: 2; 17 | PCB Thickness: 1.6mm; 18 | PCB Qty.: 5; 19 | PCB Color: Green; 20 | Surface Finish: HASL; 21 | Copper Weight: 1; 22 | Panelized PCBs: 1 23 | 24 | Bottom 25 | 26 | ![30Bottom2](30Bottom2.png) 27 | 28 | Gerber: 30Bottom2.zip 29 | 30 | 201.2mm Max* 64.3mm Max; 31 | Layers: 2; 32 | PCB Thickness: 1.6mm; 33 | PCB Qty.: 5; 34 | PCB Color: Green; 35 | Surface Finish: HASL; 36 | Copper Weight: 1; 37 | Panelized PCBs: 1 38 | 39 | 40 | Gerber files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 41 | 42 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 43 | 44 | -------------------------------------------------------------------------------- /gherkin_wood_P2.eps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gherkin_wood_P2.eps -------------------------------------------------------------------------------- /gnap plates/gnap_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gnap plates/gnap_bottom.png -------------------------------------------------------------------------------- /gnap plates/gnap_bottom.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gnap plates/gnap_bottom.zip -------------------------------------------------------------------------------- /gnap plates/gnap_plate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gnap plates/gnap_plate.png -------------------------------------------------------------------------------- /gnap plates/gnap_plate.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gnap plates/gnap_plate.zip -------------------------------------------------------------------------------- /gnap plates/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/08/gnap-plates.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![gnap_plate](gnap_plate.png) 12 | 13 | Gerber: gnap_plate.zip 14 | 15 | 16 | 252.4mm Max* 90.5mm Max; 17 | Layers: 2; 18 | PCB Thickness: 1.6mm; 19 | PCB Qty.: 5; 20 | PCB Color: Blue; 21 | Surface Finish: HASL; 22 | Copper Weight: 1; 23 | Panelized PCBs: 1 24 | 25 | 26 | 27 | ![gnap bottom](gnap_bottom.png) 28 | 29 | Gerber: gnap_bottom.zip 30 | 31 | 32 | 252.4mm Max* 90.5mm Max; 33 | Layers: 2; 34 | PCB Thickness: 1.6mm; 35 | PCB Qty.: 5; 36 | PCB Color: Blue; 37 | Surface Finish: HASL; 38 | Copper Weight: 1; 39 | Panelized PCBs: 1 40 | 41 | 42 | 43 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 44 | 45 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 46 | -------------------------------------------------------------------------------- /gnap4x4/GNAP4x4L.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gnap4x4/GNAP4x4L.png -------------------------------------------------------------------------------- /gnap4x4/GNAP4x4L.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gnap4x4/GNAP4x4L.zip -------------------------------------------------------------------------------- /gnap4x4/GNAP4x4M.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gnap4x4/GNAP4x4M.png -------------------------------------------------------------------------------- /gnap4x4/GNAP4x4M.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gnap4x4/GNAP4x4M.zip -------------------------------------------------------------------------------- /gnap4x4/GNAP4x4R.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gnap4x4/GNAP4x4R.png -------------------------------------------------------------------------------- /gnap4x4/GNAP4x4R.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gnap4x4/GNAP4x4R.zip -------------------------------------------------------------------------------- /gnap4x4/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/04/gnap-4x4.html 4 | 5 | BOM 6 | 7 | 1 Arduino Micro (not a Pro Micro) 8 | 47 1n4148 diodes 9 | 47 MX compatible PCB mount switches 10 | 1 2U PCB mount stabilizer 11 | 12 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 13 | 14 | EasyEDA ordering info: 15 | 16 | GNAP 4x4 Left 17 | 18 | ![GNAP4x4L](GNAP4x4L.png) 19 | 20 | Gerber: GNAP4x4L.zip 21 | 22 | 85.7mm Max* 76.2mm Max; 23 | Layers: 2; 24 | PCB Thickness: 1.6mm; 25 | PCB Qty.: 10; 26 | PCB Color: Green; 27 | Surface Finish: HASL; 28 | Copper Weight: 1; 29 | Panelized PCBs: 1 30 | 31 | GNAP 4x4 Middle 32 | 33 | ![GNAP4x4M](GNAP4x4M.png) 34 | 35 | Gerber: GNAP4x4M.zip 36 | 37 | 85.7mm Max* 76.2mm Max; 38 | Layers: 2; 39 | PCB Thickness: 1.6mm; 40 | PCB Qty.: 10; 41 | PCB Color: Green; 42 | Surface Finish: HASL; 43 | Copper Weight: 1; 44 | Panelized PCBs: 1 45 | 46 | GNAP 4x4 Right 47 | 48 | ![GNAP4x4R](GNAP4x4R.png) 49 | 50 | Gerber: GNAP4x4R.zip 51 | 52 | 85.7mm Max* 76.2mm Max; 53 | Layers: 2; 54 | PCB Thickness: 1.6mm; 55 | PCB Qty.: 10; 56 | PCB Color: Green; 57 | Surface Finish: HASL; 58 | Copper Weight: 1; 59 | Panelized PCBs: 1 60 | 61 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 62 | 63 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 64 | -------------------------------------------------------------------------------- /gnapkin plates/gnapkin_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gnapkin plates/gnapkin_bottom.png -------------------------------------------------------------------------------- /gnapkin plates/gnapkin_bottom.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gnapkin plates/gnapkin_bottom.rar -------------------------------------------------------------------------------- /gnapkin plates/gnapkin_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gnapkin plates/gnapkin_top.png -------------------------------------------------------------------------------- /gnapkin plates/gnapkin_top.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gnapkin plates/gnapkin_top.rar -------------------------------------------------------------------------------- /gnapkin plates/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/06/gnapkin-plates.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | Top Plate 10 | 11 | ![gnapkin_top](gnapkin_top.png) 12 | 13 | Gerber: gnapkin_top.rar 14 | 15 | 16 | Layers:2 17 | Dimension: 64mm*245mm 18 | Thickness:1.6 PCB 19 | PCB Qty.: 10; 20 | PCB Color: Green; 21 | Surface Finish: HASL; 22 | Copper Weight: 1; 23 | Panelized PCBs: 1 24 | 25 | 26 | Bottom Plate 27 | 28 | ![gnapkin_bottom](gnapkin_bottom.png) 29 | 30 | Gerber: gnapkin_bottom.rar 31 | 32 | 33 | Layers:2 34 | Dimension: 64mm*245mm 35 | Thickness:1.6 PCB 36 | PCB Qty.: 10; 37 | PCB Color: Green; 38 | Surface Finish: HASL; 39 | Copper Weight: 1; 40 | Panelized PCBs: 1 41 | 42 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 43 | 44 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 45 | -------------------------------------------------------------------------------- /gnapkin/gnapkin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gnapkin/gnapkin.png -------------------------------------------------------------------------------- /gnapkin/gnapkin.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/gnapkin/gnapkin.zip -------------------------------------------------------------------------------- /gnapkin/pinout.txt: -------------------------------------------------------------------------------- 1 | row D1, D0, D4 2 | col C6, D7, E6, B4, B6, B2, B3, B1, F7, F6, F5, F4 3 | 4 | PWM B5 5 | -------------------------------------------------------------------------------- /gnapkin/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/05/gnapkin.html 4 | 5 | 6 | BOM (per side) 7 | 8 | 36 1n4148 diodes 9 | 36 MX compatible PCB mount switches 10 | 1 Pro Micro 5v 11 | 2 12pin headers or 1 24pin machined pin wide socket 12 | 1 5.2mm SMT switch (RESET) https://lcsc.com/product-detail/Tactile-Switches_5-2mm-5-2mm_C92584.html 13 | 14 | Needed if you want LEDs 15 | 16 | 36 LEDs 17 | 36 Resistors for LEDs. Use online LED caculator to choose value 18 | 1 FDS6630A or DMN3018SSS-13 SOIC FET 19 | 1 100ohm resistor 20 | 1 100Kilo ohm resistor 21 | 22 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 23 | 24 | EasyEDA ordering info: 25 | 26 | Gnapkin 27 | 28 | ![gnapkin](gnapkin.png) 29 | 30 | Gerber: gnapkin.zip 31 | 32 | Layers:2 33 | Dimension: 55mm*238mm 34 | PCB Qty:10 35 | PCB Thickness:1.6 36 | PCB Color:Green 37 | Surface Finish:HASL(with lead) 38 | Copper Weight:1 39 | 40 | 41 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 42 | 43 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 44 | -------------------------------------------------------------------------------- /halfhalf/half.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/halfhalf/half.zip -------------------------------------------------------------------------------- /halfhalf/halfhalf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/halfhalf/halfhalf.png -------------------------------------------------------------------------------- /halfhalf/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/07/half-n-half.html 4 | 5 | BOM (per side) 6 | 7 | 22 1n4148 diodes 8 | 22 MX compatible PCB mount switches 9 | 1 TRRS Jack Sparkfun PRT-12639 10 | 1 Pro Micro 5v 11 | 2 12pin headers or 1 24pin machined pin wide socket 12 | 1 5.2mm SMT switch (RESET) https://lcsc.com/product-detail/Tactile-Switches_5-2mm-5-2mm_C92584.html 13 | 1 2U PCB mount stabilizer 14 | 15 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 16 | 17 | EasyEDA ordering info: 18 | 19 | Half Half 20 | 21 | ![halfhalf](halfhalf.png) 22 | 23 | Gerber: halfhalf.zip 24 | 25 | Layers:2 26 | Dimension: 81mm*138mm 27 | PCB Qty:10 28 | PCB Thickness:1.6 29 | PCB Color:Green 30 | Surface Finish:HASL(with lead) 31 | Copper Weight:1 32 | 33 | 34 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 35 | 36 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 37 | -------------------------------------------------------------------------------- /halfiota/half iota.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/halfiota/half iota.zip -------------------------------------------------------------------------------- /halfiota/halfiotaback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/halfiota/halfiotaback.png -------------------------------------------------------------------------------- /halfiota/halfiotafront.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/halfiota/halfiotafront.png -------------------------------------------------------------------------------- /halfiota/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/08/16mm-split-40.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![halfiotafront](halfiotafront.png) 12 | 13 | ![halfiotaback](halfiotaback.png) 14 | 15 | Gerber: half iota.zip 16 | 17 | 18 | 96mm Max* 75mm Max; 19 | Layers: 2; 20 | PCB Thickness: 1.6mm; 21 | PCB Qty.: 10; 22 | PCB Color: Green; 23 | Surface Finish: HASL; 24 | Copper Weight: 1; 25 | Panelized PCBs: 1 26 | 27 | 28 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 29 | 30 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 31 | -------------------------------------------------------------------------------- /homer/eggs8.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | //debounce milliseconds 5 | const int debounce = 5; 6 | //Switch Pins 7 | const byte k[8] = { 6, 7, 8, 9, 10, 16, 14, 15 }; 8 | //Switch status 9 | boolean s[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; 10 | 11 | //M for Media Key, K for Keyboard 12 | const char codetype[8] = { 'K', 'K', 'K', 'K', 'K', 'K', 'K', 'K' }; 13 | 14 | //Keycodes 15 | const ConsumerKeycode ccode[8] = { MEDIA_VOLUME_MUTE, 16 | MEDIA_VOLUME_MUTE, 17 | MEDIA_PLAY_PAUSE, 18 | MEDIA_PLAY_PAUSE, 19 | MEDIA_PLAY_PAUSE, 20 | MEDIA_PLAY_PAUSE, 21 | MEDIA_PLAY_PAUSE, 22 | MEDIA_PLAY_PAUSE 23 | }; 24 | 25 | const KeyboardKeycode kcode[8] = { KEY_1, 26 | KEY_2, 27 | KEY_3, 28 | KEY_4, 29 | KEY_5, 30 | KEY_6, 31 | KEY_7, 32 | KEY_8 33 | }; 34 | 35 | void setup() { 36 | Keyboard.begin(); 37 | Consumer.begin(); 38 | //setup inputs, turn on pullups 39 | for (int i = 0; i <= 7; i++) { 40 | pinMode(k[i], INPUT); 41 | digitalWrite(k[i], 1); 42 | } 43 | } 44 | 45 | void loop() { 46 | CheckKeys(); 47 | delay(debounce); 48 | } 49 | 50 | void CheckKeys() { 51 | for (int i = 0; i <= 7; i++) { 52 | if (codetype[i] == 'M') { 53 | if (digitalRead(k[i]) == 0) { 54 | if (s[i] == 0) { 55 | Consumer.press((ccode[i])); 56 | s[i] = 1; 57 | } 58 | } 59 | else { 60 | if (s[i] == 1) { 61 | s[i] = 0; 62 | Consumer.release((ccode[i])); 63 | } 64 | } 65 | } 66 | if (codetype[i] == 'K') { 67 | if (digitalRead(k[i]) == 0) { 68 | if (s[i] == 0) { 69 | Keyboard.press((kcode[i])); 70 | s[i] = 1; 71 | } 72 | } 73 | else { 74 | if (s[i] == 1) { 75 | s[i] = 0; 76 | Keyboard.release((kcode[i])); 77 | } 78 | } 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /homer/homer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/homer/homer.png -------------------------------------------------------------------------------- /homer/homer.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/homer/homer.zip -------------------------------------------------------------------------------- /homer/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/07/green-eggs.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | Homer 10 | 11 | ![homer](homer.png) 12 | 13 | Gerber: homer.zip 14 | 15 | Layers:2 16 | Dimension: 100mm*100mm 17 | PCB Qty:10 18 | PCB Thickness:1.6 19 | PCB Color:Green 20 | Surface Finish:HASL(with lead) 21 | Copper Weight:1 22 | 23 | 24 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 25 | 26 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 27 | -------------------------------------------------------------------------------- /i-s-hole/bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/i-s-hole/bottom.png -------------------------------------------------------------------------------- /i-s-hole/i-s-hole.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | //debounce milliseconds 5 | const int debounce = 5; 6 | //Switch Pins 7 | const byte k[4] = { 4, 5, 6, 7 }; 8 | //Switch status 9 | boolean s[4] = { 0, 0, 0, 0 }; 10 | 11 | //M for Media Key, K for Keyboard 12 | const char codetype[4] = { 'K', 'K', 'K', 'K' }; 13 | 14 | //Keycodes 15 | const ConsumerKeycode ccode[4] = { MEDIA_VOLUME_MUTE, 16 | MEDIA_VOLUME_MUTE, 17 | MEDIA_PLAY_PAUSE, 18 | MEDIA_PLAY_PAUSE 19 | }; 20 | 21 | const KeyboardKeycode kcode[4] = { KEY_DOWN_ARROW, 22 | KEY_LEFT_ARROW, 23 | KEY_UP_ARROW, 24 | KEY_RIGHT_ARROW 25 | }; 26 | 27 | void setup() { 28 | Keyboard.begin(); 29 | Consumer.begin(); 30 | 31 | //setup inputs, turn on pullups 32 | for (int i = 0; i < 4; i++) { 33 | pinMode(k[i], INPUT); 34 | digitalWrite(k[i], 1); 35 | } 36 | } 37 | 38 | void loop() { 39 | CheckKeys(); 40 | delay(debounce); 41 | } 42 | 43 | void CheckKeys() { 44 | for (int i = 0; i < 4; i++) { 45 | if (codetype[i] == 'M') { 46 | if (digitalRead(k[i]) == 0) { 47 | if (s[i] == 0) { 48 | Consumer.press((ccode[i])); 49 | s[i] = 1; 50 | } 51 | } 52 | else { 53 | if (s[i] == 1) { 54 | s[i] = 0; 55 | Consumer.release((ccode[i])); 56 | } 57 | } 58 | } 59 | if (codetype[i] == 'K') { 60 | if (digitalRead(k[i]) == 0) { 61 | if (s[i] == 0) { 62 | Keyboard.press((kcode[i])); 63 | s[i] = 1; 64 | } 65 | } 66 | else { 67 | if (s[i] == 1) { 68 | s[i] = 0; 69 | Keyboard.release((kcode[i])); 70 | } 71 | } 72 | } 73 | } 74 | } 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /i-s-hole/i-s-hole.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/i-s-hole/i-s-hole.zip -------------------------------------------------------------------------------- /i-s-hole/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/11/i-s-hole.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![top](top.png) 12 | ![bottom](bottom.png) 13 | 14 | Gerber: i-s-hole.zip 15 | 16 | 17 | 69mm Max* 69mm Max; 18 | Layers: 2; 19 | PCB Thickness: 1.6mm; 20 | PCB Qty.: 10; 21 | PCB Color: Green; 22 | Surface Finish: HASL; 23 | Copper Weight: 1; 24 | Panelized PCBs: 1 25 | 26 | 27 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 28 | 29 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 30 | -------------------------------------------------------------------------------- /i-s-hole/top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/i-s-hole/top.png -------------------------------------------------------------------------------- /kolea/case/kolea_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/kolea/case/kolea_bottom.png -------------------------------------------------------------------------------- /kolea/case/kolea_bottom.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/kolea/case/kolea_bottom.rar -------------------------------------------------------------------------------- /kolea/case/kolea_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/kolea/case/kolea_top.png -------------------------------------------------------------------------------- /kolea/case/kolea_top.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/kolea/case/kolea_top.rar -------------------------------------------------------------------------------- /kolea/case/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/07/kolea_case.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | Kolea Top 10 | 11 | ![koleatop](kolea_top.png) 12 | 13 | Gerber: kolea_top.rar 14 | 15 | Layers:2 16 | Dimension: 89mm*219mm 17 | PCB Qty:10 18 | PCB Thickness:1.6 19 | PCB Color:Green 20 | Surface Finish:HASL(with lead) 21 | Copper Weight:1 22 | 23 | Kolea Bottom 24 | 25 | ![koleabottom](kolea_bottom.png) 26 | 27 | Gerber: kolea_bottom.rar 28 | 29 | Layers:2 30 | Dimension: 89mm*219mm 31 | PCB Qty:10 32 | PCB Thickness:1.6 33 | PCB Color:Green 34 | Surface Finish:HASL(with lead) 35 | Copper Weight:1 36 | 37 | 38 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 39 | 40 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 41 | -------------------------------------------------------------------------------- /kolea/kolea.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/kolea/kolea.zip -------------------------------------------------------------------------------- /kolea/koleaback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/kolea/koleaback.png -------------------------------------------------------------------------------- /kolea/koleafront.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/kolea/koleafront.png -------------------------------------------------------------------------------- /kolea/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/01/kolea.html 4 | 5 | Firmware https://github.com/di0ib/StenoFW/blob/master/kolea.ino 6 | 7 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 8 | 9 | BOM 10 | 11 | 34 1n4148 diodes 12 | 34 MX compatible PCB mount switches 13 | 1 Teensy LC 14 | 2 14pin headers or 1 28pin machined pin wide socket 15 | 16 | Optional for LEDs 17 | 18 | 34 LEDs compatible with your switches (3mm flangeless, 2x3x4 rectangular or 1.8mm) 19 | 34 Resistors for LEDs. Use online LED caculator to choose value 20 | 1 FDS6630A or DMN3018SSS-13 SOIC FET 21 | 1 100ohm resistor 22 | 1 100Kilo ohm resistor 23 | 24 | EasyEDA ordering info: 25 | 26 | PCB 27 | 28 | ![koleafront](koleafront.png) 29 | 30 | ![koleaback](koleaback.png) 31 | 32 | 33 | Gerber: kolea.zip 34 | 35 | 36 | 212mm Max* 78.6mm Max; 37 | Layers: 2; 38 | PCB Thickness: 1.6mm; 39 | PCB Qty.: 5; 40 | PCB Color: Green; 41 | Surface Finish: HASL; 42 | Copper Weight: 1; 43 | Panelized PCBs: 1 44 | 45 | 46 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 47 | 48 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 49 | -------------------------------------------------------------------------------- /kon tiki/kontiki.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/kon tiki/kontiki.png -------------------------------------------------------------------------------- /kon tiki/kontiki.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/kon tiki/kontiki.zip -------------------------------------------------------------------------------- /kon tiki/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/09/kon-tiki.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![kontiki](kontiki.png) 12 | 13 | Gerber: kontiki.zip 14 | 15 | 16 | 201.2mm Max* 83.4mm Max; 17 | Layers: 2; 18 | PCB Thickness: 1.6mm; 19 | PCB Qty.: 5; 20 | PCB Color: Green; 21 | Surface Finish: HASL; 22 | Copper Weight: 1; 23 | Panelized PCBs: 1 24 | 25 | 26 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 27 | 28 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 29 | -------------------------------------------------------------------------------- /lobot/lobot.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/lobot/lobot.zip -------------------------------------------------------------------------------- /lobot/lobotback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/lobot/lobotback.png -------------------------------------------------------------------------------- /lobot/lobotfront.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/lobot/lobotfront.png -------------------------------------------------------------------------------- /lobot/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/01/lobot.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![lobotfront](lobotfront.png) 12 | ![lobotback](lobotback.png) 13 | 14 | Gerber: lobot.zip 15 | 16 | 17 | 50.8mm Max* 45.7mm Max; 18 | Layers: 2; 19 | PCB Thickness: 1.6mm; 20 | PCB Qty.: 10; 21 | PCB Color: Green; 22 | Surface Finish: HASL; 23 | Copper Weight: 1; 24 | Panelized PCBs: 1 25 | 26 | 27 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 28 | 29 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 30 | -------------------------------------------------------------------------------- /luddite plate/luddite_plate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/luddite plate/luddite_plate.png -------------------------------------------------------------------------------- /luddite plate/luddite_plate.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/luddite plate/luddite_plate.rar -------------------------------------------------------------------------------- /luddite plate/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/08/luddite-plate.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![luddite_plate](luddite_plate.png) 12 | 13 | Gerber: luddite_plate.rar 14 | 15 | 95mm Max* 286mm Max; 16 | Layers: 2; 17 | PCB Thickness: 1.6mm; 18 | PCB Qty.: 10; 19 | PCB Color: Green; 20 | Surface Finish: HASL; 21 | Copper Weight: 1; 22 | Panelized PCBs: 1 23 | 24 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 25 | 26 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /luddite/luddite2.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/luddite/luddite2.rar -------------------------------------------------------------------------------- /luddite/luddite_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/luddite/luddite_bottom.png -------------------------------------------------------------------------------- /luddite/luddite_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/luddite/luddite_top.png -------------------------------------------------------------------------------- /luddite/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/08/luddite-2.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | Mosfet on B5 to control backlight. 8 | 9 | BOM 10 | 11 | 1 Pro Micro 12 | 2 12pin SIP headers, or 1 24 pin machined pin DIP socket 13 | 61 1n4148 diodes, save the cut off leads for use with machined pin socket 14 | 61 switches 15 | 1 mini USB connector 16 | 4 2U PCB mount stabilizers 17 | 1 6.25U PCB mount stabilizer 18 | 19 | Needed if you want LEDs 20 | 21 | 61 LEDs 22 | 61 Resistors for LEDs. Use online LED caculator to choose value 23 | 1 FDS6630A or DMN3018SSS-13 SOIC FET 24 | 1 100ohm resistor 25 | 1 100Kilo ohm resistor 26 | 27 | Optional 28 | 29 | 1 5.2x5.2mm tactile Reset switch 30 | 1 USBLC6-4SC6 ESD protection 31 | 8 WS2812B RGB LEDs 32 | 33 | EasyEDA ordering info: 34 | 35 | PCB 36 | 37 | ![luddite_top](luddite_top.png) 38 | 39 | ![luddite_bottom](luddite_bottom.png) 40 | 41 | Gerber: luddite2.rar 42 | 43 | 44 | Layers:2 45 | Dimension: 95mm*286mm 46 | Thickness:1.6 PCB 47 | PCB Qty.: 10; 48 | PCB Color: Green; 49 | Surface Finish: HASL; 50 | Copper Weight: 1; 51 | Panelized PCBs: 1 52 | 53 | 54 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 55 | 56 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 57 | -------------------------------------------------------------------------------- /micropad.json: -------------------------------------------------------------------------------- 1 | {"version":1,"keyboard":{"keys":[{"id":0,"legend":"A","state":{"x":0,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":0,"col":0,"keycodes":[{"id":"KC_NLCK","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":1,"legend":"B","state":{"x":1,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":0,"col":1,"keycodes":[{"id":"KC_PSLS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":2,"legend":"C","state":{"x":2,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":0,"col":2,"keycodes":[{"id":"KC_PAST","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":3,"legend":"D","state":{"x":3,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":0,"col":3,"keycodes":[{"id":"KC_PMNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":4,"legend":"E","state":{"x":0,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":1,"col":0,"keycodes":[{"id":"KC_P7","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":5,"legend":"F","state":{"x":1,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":1,"col":1,"keycodes":[{"id":"KC_P8","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":6,"legend":"G","state":{"x":2,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":1,"col":2,"keycodes":[{"id":"KC_P9","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":7,"legend":"H","state":{"x":3,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":1,"col":3,"keycodes":[{"id":"KC_PPLS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":8,"legend":"I","state":{"x":0,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":2,"col":0,"keycodes":[{"id":"KC_P4","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":9,"legend":"J","state":{"x":1,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":2,"col":1,"keycodes":[{"id":"KC_P5","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":10,"legend":"K","state":{"x":2,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":2,"col":2,"keycodes":[{"id":"KC_P6","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":11,"legend":"L","state":{"x":3,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":2,"col":3,"keycodes":[{"id":"KC_NO","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":12,"legend":"M","state":{"x":0,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":3,"col":0,"keycodes":[{"id":"KC_P1","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":13,"legend":"N","state":{"x":1,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":3,"col":1,"keycodes":[{"id":"KC_P2","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":14,"legend":"O","state":{"x":2,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":3,"col":2,"keycodes":[{"id":"KC_P3","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":15,"legend":"P","state":{"x":3,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":3,"col":3,"keycodes":[{"id":"KC_PENT","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":16,"legend":"Q","state":{"x":0,"y":4,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":4,"col":0,"keycodes":[{"id":"KC_P0","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":17,"legend":"R","state":{"x":1,"y":4,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":4,"col":1,"keycodes":[{"id":"KC_NO","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":18,"legend":"S","state":{"x":2,"y":4,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":4,"col":2,"keycodes":[{"id":"KC_PDOT","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":19,"legend":"T","state":{"x":3,"y":4,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":4,"col":3,"keycodes":[{"id":"KC_NO","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]}],"controller":1,"bounds":{"min":{"x":0,"y":0},"max":{"x":4,"y":5}},"rows":5,"cols":4,"pins":{"row":["B5","B4","E6","D7","C6"],"col":["D4","D0","D1","D2"],"num":"D5","caps":null,"scroll":null,"compose":null,"kana":null,"led":null,"rgb":null},"macros":{},"quantum":"void matrix_init_user(void) {\n}\n\nvoid matrix_scan_user(void) {\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n\treturn true;\n}","settings":{"diodeDirection":1,"name":"micropad","bootloaderSize":2,"rgbNum":0,"backlightLevels":3}}} -------------------------------------------------------------------------------- /micropadastar.json: -------------------------------------------------------------------------------- 1 | {"version":1,"keyboard":{"keys":[{"id":0,"legend":"A","state":{"x":0,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":0,"col":0,"keycodes":[{"id":"KC_NLCK","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":1,"legend":"B","state":{"x":1,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":0,"col":1,"keycodes":[{"id":"KC_PSLS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":2,"legend":"C","state":{"x":2,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":0,"col":2,"keycodes":[{"id":"KC_PAST","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":3,"legend":"D","state":{"x":3,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":0,"col":3,"keycodes":[{"id":"KC_PMNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":4,"legend":"E","state":{"x":0,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":1,"col":0,"keycodes":[{"id":"KC_P7","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":5,"legend":"F","state":{"x":1,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":1,"col":1,"keycodes":[{"id":"KC_P8","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":6,"legend":"G","state":{"x":2,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":1,"col":2,"keycodes":[{"id":"KC_P9","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":7,"legend":"H","state":{"x":3,"y":1,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":1,"col":3,"keycodes":[{"id":"KC_PPLS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":8,"legend":"I","state":{"x":0,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":2,"col":0,"keycodes":[{"id":"KC_P4","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":9,"legend":"J","state":{"x":1,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":2,"col":1,"keycodes":[{"id":"KC_P5","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":10,"legend":"K","state":{"x":2,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":2,"col":2,"keycodes":[{"id":"KC_P6","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":11,"legend":"L","state":{"x":3,"y":2,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":2,"col":3,"keycodes":[{"id":"KC_NO","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":12,"legend":"M","state":{"x":0,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":3,"col":0,"keycodes":[{"id":"KC_P1","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":13,"legend":"N","state":{"x":1,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":3,"col":1,"keycodes":[{"id":"KC_P2","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":14,"legend":"O","state":{"x":2,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":3,"col":2,"keycodes":[{"id":"KC_P3","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":15,"legend":"P","state":{"x":3,"y":3,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":3,"col":3,"keycodes":[{"id":"KC_PENT","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":16,"legend":"Q","state":{"x":0,"y":4,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":4,"col":0,"keycodes":[{"id":"KC_P0","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":17,"legend":"R","state":{"x":1,"y":4,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":4,"col":1,"keycodes":[{"id":"KC_NO","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":18,"legend":"S","state":{"x":2,"y":4,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":4,"col":2,"keycodes":[{"id":"KC_PDOT","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":19,"legend":"T","state":{"x":3,"y":4,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0,"a":7},"row":4,"col":3,"keycodes":[{"id":"KC_NO","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]}],"controller":1,"bounds":{"min":{"x":0,"y":0},"max":{"x":4,"y":5}},"rows":5,"cols":4,"pins":{"row":["D3","D1","D0","D4","C6"],"col":["D7","E6","B4","B5"],"num":"C7","caps":null,"scroll":null,"compose":null,"kana":null,"led":null,"rgb":null},"macros":{},"quantum":"void matrix_init_user(void) {\n}\n\nvoid matrix_scan_user(void) {\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n\treturn true;\n}","settings":{"diodeDirection":1,"name":"micropad-astar","bootloaderSize":2,"rgbNum":0,"backlightLevels":3}}} -------------------------------------------------------------------------------- /miuni/image1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/miuni/image1.JPG -------------------------------------------------------------------------------- /miuni/image2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/miuni/image2.JPG -------------------------------------------------------------------------------- /miuni/miuni bottom.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/miuni/miuni bottom.zip -------------------------------------------------------------------------------- /miuni/miuni.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/miuni/miuni.zip -------------------------------------------------------------------------------- /miuni/plate.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/miuni/plate.JPG -------------------------------------------------------------------------------- /miuni/readme.md: -------------------------------------------------------------------------------- 1 | 2 | ![plate](plate.JPG) 3 | 4 | ![image1](image1.JPG) 5 | 6 | ![image2](image2.JPG) 7 | 8 | Gerber: miuni.zip 9 | 10 | 214.3mm Max* 66.7mm Max; 11 | Layers: 2; 12 | PCB Thickness: 1.6mm; 13 | PCB Qty.: 5; 14 | PCB Color: Green; 15 | Surface Finish: HASL; 16 | Copper Weight: 1; 17 | Panelized PCBs: 1 18 | 19 | Gerber files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 20 | 21 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 22 | 23 | -------------------------------------------------------------------------------- /mlp/mlp middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/mlp/mlp middle.png -------------------------------------------------------------------------------- /mlp/mlp middle.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/mlp/mlp middle.zip -------------------------------------------------------------------------------- /mlp/mlp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/mlp/mlp.png -------------------------------------------------------------------------------- /mlp/mlp1_1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/mlp/mlp1_1.zip -------------------------------------------------------------------------------- /mlp/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/07/mlp-11.html 4 | 5 | http://www.40percent.club/2017/06/cherry-ml.html 6 | 7 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 8 | 9 | EasyEDA ordering info: 10 | 11 | PCB 12 | 13 | ![mlp](mlp.png) 14 | 15 | Gerber: mlp1_1.zip 16 | 17 | 18 | 233.4mm Max* 81mm Max; 19 | Layers: 2; 20 | PCB Thickness: 1.2mm; 21 | PCB Qty.: 5; 22 | PCB Color: White; 23 | Surface Finish: HASL; 24 | Copper Weight: 1; 25 | Panelized PCBs: 1 26 | 27 | middle 28 | 29 | ![mlp middle](mlp%20middle.png) 30 | 31 | Gerber: mlp middle.zip 32 | 33 | 34 | 233.4mm Max* 81.0mm Max; 35 | Layers: 2; 36 | PCB Thickness: 1.0mm; 37 | PCB Qty.: 10; 38 | PCB Color: White; 39 | Surface Finish: HASL; 40 | Copper Weight: 1; 41 | Panelized PCBs: 1 42 | 43 | 44 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 45 | 46 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 47 | -------------------------------------------------------------------------------- /nein/nein.json: -------------------------------------------------------------------------------- 1 | {"version":1,"keyboard":{"keys":[{"id":0,"legend":"1","state":{"x":0,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":0,"keycodes":[{"id":"KC_1","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":1,"legend":"2","state":{"x":1,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":1,"keycodes":[{"id":"KC_2","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":2,"legend":"3","state":{"x":2,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":2,"keycodes":[{"id":"KC_3","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":3,"legend":"4","state":{"x":3,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":3,"keycodes":[{"id":"KC_4","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":4,"legend":"5","state":{"x":4,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":4,"keycodes":[{"id":"KC_5","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":5,"legend":"6","state":{"x":5,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":5,"keycodes":[{"id":"KC_6","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":6,"legend":"7","state":{"x":6,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":6,"keycodes":[{"id":"KC_7","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":7,"legend":"8","state":{"x":7,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":7,"keycodes":[{"id":"KC_8","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]},{"id":8,"legend":"9","state":{"x":8,"y":0,"r":0,"rx":0,"ry":0,"w":1,"h":1,"x2":0,"y2":0,"w2":0,"h2":0},"row":0,"col":8,"keycodes":[{"id":"KC_9","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]},{"id":"KC_TRNS","fields":[]}]}],"controller":1,"bounds":{"min":{"x":0,"y":0},"max":{"x":9,"y":1}},"rows":1,"cols":9,"pins":{"row":["B0"],"col":["F4","F5","F6","F7","B1","B3","B2","B6","B5"],"num":null,"caps":null,"scroll":null,"compose":null,"kana":null,"led":null,"rgb":null},"macros":{},"quantum":"void matrix_init_user(void) {\n}\n\nvoid matrix_scan_user(void) {\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n\treturn true;\n}","settings":{"diodeDirection":0,"name":"nein","bootloaderSize":2,"rgbNum":0,"backlightLevels":3}}} -------------------------------------------------------------------------------- /nein/nein.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/nein/nein.png -------------------------------------------------------------------------------- /nein/nein.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/nein/nein.zip -------------------------------------------------------------------------------- /nein/nein_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/nein/nein_bottom.png -------------------------------------------------------------------------------- /nein/nein_bottom.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/nein/nein_bottom.zip -------------------------------------------------------------------------------- /nein/nein_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/nein/nein_top.png -------------------------------------------------------------------------------- /nein/nein_top.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/nein/nein_top.zip -------------------------------------------------------------------------------- /nein/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2019/04/nein.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![nein](nein.png) 12 | 13 | Gerber: nein.zip 14 | 15 | Layers:2 16 | Dimension:57mm*57mm 17 | PCB Thickness:1.6 18 | 19 | Top 20 | 21 | ![nein_top](nein_top.png) 22 | 23 | Gerber: nein_top.zip 24 | 25 | Layers:2 26 | Dimension:64mm*64mm 27 | PCB Thickness:1.6 28 | 29 | Top 30 | 31 | ![nein_bottom](nein_bottom.png) 32 | 33 | Gerber: nein_bottom.zip 34 | 35 | Layers:2 36 | Dimension:64mm*64mm 37 | PCB Thickness:1.6 38 | 39 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 40 | 41 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 42 | -------------------------------------------------------------------------------- /nori/nori-pcb-bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/nori/nori-pcb-bottom.png -------------------------------------------------------------------------------- /nori/nori-pcb-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/nori/nori-pcb-top.png -------------------------------------------------------------------------------- /nori/nori-pcb.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/nori/nori-pcb.rar -------------------------------------------------------------------------------- /nori/nori-plate-bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/nori/nori-plate-bottom.png -------------------------------------------------------------------------------- /nori/nori-plate-bottom.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/nori/nori-plate-bottom.rar -------------------------------------------------------------------------------- /nori/nori-plate-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/nori/nori-plate-top.png -------------------------------------------------------------------------------- /nori/nori-plate-top.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/nori/nori-plate-top.rar -------------------------------------------------------------------------------- /nori/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/10/nori.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | BOM 10 | 11 | 1 Pro Micro 12 | 2 12pin SIP headers, or 1 24 pin machined pin DIP socket 13 | 48 1n4148 diodes, save the cut off leads for use with machined pin socket 14 | 48 switches 15 | 1 mini USB connector 16 | 17 | Needed if you want LEDs 18 | 19 | 48 LEDs 20 | 48 Resistors for LEDs. Use online LED caculator to choose value 21 | 1 FDS6630A or DMN3018SSS-13 SOIC FET 22 | 1 100ohm resistor (R17) 23 | 1 100Kilo ohm resistor (R18) 24 | 25 | Optional 26 | 27 | 1 5.2x5.2mm tactile Reset switch 28 | 29 | nori 30 | 31 | ![nori-pcb-top](nori-pcb-top.png) 32 | 33 | ![nori-pcb-bottom](nori-pcb-bottom.png) 34 | 35 | Gerber: nori-pcb.rar 36 | 37 | Layers:2 38 | Dimension: 76mm*79mm 39 | PCB Qty:10 40 | PCB Thickness:1.6 41 | PCB Color:Green 42 | Surface Finish:HASL(with lead) 43 | Copper Weight:1 44 | 45 | 46 | nori plate top 47 | 48 | ![nori-plate-top](nori-plate-top.png) 49 | 50 | Gerber: nori-plate-top.rar 51 | 52 | Layers:2 53 | Dimension: 76mm*76mm 54 | PCB Qty:10 55 | PCB Thickness:1.6 56 | PCB Color:Green 57 | Surface Finish:HASL(with lead) 58 | Copper Weight:1 59 | 60 | 61 | nori plate bottom 62 | 63 | ![nori-plate-bottom](nori-plate-bottom.png) 64 | 65 | Gerber: nori-plate-bottom.rar 66 | 67 | Layers:2 68 | Dimension: 76mm*79mm 69 | PCB Qty:10 70 | PCB Thickness:1.6 71 | PCB Color:Green 72 | Surface Finish:HASL(with lead) 73 | Copper Weight:1 74 | 75 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 76 | 77 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 78 | -------------------------------------------------------------------------------- /onigiri/onigiri.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/onigiri/onigiri.png -------------------------------------------------------------------------------- /onigiri/onigiri.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/onigiri/onigiri.zip -------------------------------------------------------------------------------- /onigiri/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/08/onigiri.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![onigiri](onigiri.png) 12 | 13 | Gerber: onigiri.zip 14 | 15 | 16 | 94.4mm Max* 77.9mm Max; 17 | Layers: 2; 18 | PCB Thickness: 1.6mm; 19 | PCB Qty.: 10; 20 | PCB Color: Green; 21 | Surface Finish: HASL; 22 | Copper Weight: 1; 23 | Panelized PCBs: 1 24 | 25 | 26 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 27 | 28 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 29 | -------------------------------------------------------------------------------- /outrigger/outrigger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/outrigger/outrigger.png -------------------------------------------------------------------------------- /outrigger/outrigger.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/outrigger/outrigger.zip -------------------------------------------------------------------------------- /outrigger/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/08/gherkin-outrigger.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![outrigger](outrigger.png) 12 | 13 | Gerber: outrigger.zip 14 | 15 | 16 | 200mm Max* 85.7mm Max; 17 | Layers: 2; 18 | PCB Thickness: 1.6mm; 19 | PCB Qty.: 5; 20 | PCB Color: Green; 21 | Surface Finish: HASL; 22 | Copper Weight: 1; 23 | Panelized PCBs: 1 24 | 25 | 26 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 27 | 28 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 29 | 30 | -------------------------------------------------------------------------------- /pico/2key.ino: -------------------------------------------------------------------------------- 1 | #include "HID-Project.h" 2 | 3 | //debounce milliseconds 4 | const int debounce = 10; 5 | //Switch Pins 6 | const byte k[2] = { 2, 3 }; 7 | //Switch status 8 | boolean s[2] = { 0, 0 }; 9 | //LED Pins 10 | const byte l[2] = { 10, 9 }; 11 | 12 | //M for Media Key, K for Keyboard 13 | const char codetype[6] = { 'K', 'K' }; 14 | 15 | //Keycodes 16 | const ConsumerKeycode ccode[2] = { MEDIA_VOLUME_MUTE, 17 | MEDIA_PLAY_PAUSE 18 | }; 19 | 20 | const KeyboardKeycode kcode[2] = { KEY_UP_ARROW, 21 | KEY_DOWN_ARROW 22 | }; 23 | 24 | void setup() { 25 | Keyboard.begin(); 26 | Consumer.begin(); 27 | 28 | //setup inputs, turn on pullups 29 | for (int i = 0; i <= 1; i++) { 30 | pinMode(k[i], INPUT); 31 | digitalWrite(k[i], 1); 32 | pinMode(l[i], OUTPUT); 33 | } 34 | } 35 | 36 | void loop() { 37 | CheckKeys(); 38 | delay(debounce); 39 | } 40 | 41 | void CheckKeys() { 42 | for (int i = 0; i <= 1; i++) { 43 | if (codetype[i] == 'M') { 44 | if (digitalRead(k[i]) == 0) { 45 | if (s[i] == 0) { 46 | Consumer.press((ccode[i])); 47 | s[i] = 1; 48 | digitalWrite(l[i], 1); 49 | } 50 | } 51 | else { 52 | if (s[i] == 1) { 53 | s[i] = 0; 54 | digitalWrite(l[i], 0); 55 | Consumer.release((ccode[i])); 56 | } 57 | } 58 | } 59 | if (codetype[i] == 'K') { 60 | if (digitalRead(k[i]) == 0) { 61 | if (s[i] == 0) { 62 | Keyboard.press((kcode[i])); 63 | s[i] = 1; 64 | digitalWrite(l[i], 1); 65 | } 66 | } 67 | else { 68 | if (s[i] == 1) { 69 | s[i] = 0; 70 | digitalWrite(l[i], 0); 71 | Keyboard.release((kcode[i])); 72 | } 73 | } 74 | } 75 | } 76 | } 77 | 78 | -------------------------------------------------------------------------------- /pico/arduino-example.ino: -------------------------------------------------------------------------------- 1 | #include "HID-Project.h" 2 | #include 3 | 4 | //debounce milliseconds 5 | const int debounce = 10; 6 | //Switch Pins 7 | const byte k[4] = { 9, 8, 7, 6 }; 8 | //Switch status 9 | boolean s[4] = { 0, 0, 0, 0 }; 10 | 11 | //M for Media Key, K for Keyboard 12 | const char codetype[4] = { 'K', 'K', 'K', 'K' }; 13 | 14 | //Keycodes 15 | const ConsumerKeycode ccode[4] = { MEDIA_VOLUME_MUTE, 16 | MEDIA_PLAY_PAUSE, 17 | MEDIA_PLAY_PAUSE, 18 | MEDIA_PLAY_PAUSE 19 | }; 20 | 21 | const KeyboardKeycode kcode[4] = { KEY_LEFT_ARROW, 22 | KEY_DOWN_ARROW, 23 | KEY_UP_ARROW, 24 | KEY_RIGHT_ARROW 25 | }; 26 | 27 | void setup() { 28 | Keyboard.begin(); 29 | Consumer.begin(); 30 | 31 | //setup inputs, turn on pullups 32 | for (int i = 0; i <= 3; i++) { 33 | pinMode(k[i], INPUT); 34 | digitalWrite(k[i], 1); 35 | pinMode(13, OUTPUT); 36 | digitalWrite(13, 1); 37 | } 38 | } 39 | 40 | void loop() { 41 | CheckKeys(); 42 | delay(debounce); 43 | } 44 | 45 | void CheckKeys() { 46 | for (int i = 0; i <= 3; i++) { 47 | if (codetype[i] == 'M') { 48 | if (digitalRead(k[i]) == 0) { 49 | if (s[i] == 0) { 50 | Consumer.press((ccode[i])); 51 | s[i] = 1; 52 | } 53 | } 54 | else { 55 | if (s[i] == 1) { 56 | s[i] = 0; 57 | Consumer.release((ccode[i])); 58 | } 59 | } 60 | } 61 | if (codetype[i] == 'K') { 62 | if (digitalRead(k[i]) == 0) { 63 | if (s[i] == 0) { 64 | Keyboard.press((kcode[i])); 65 | s[i] = 1; 66 | } 67 | } 68 | else { 69 | if (s[i] == 1) { 70 | s[i] = 0; 71 | Keyboard.release((kcode[i])); 72 | } 73 | } 74 | } 75 | } 76 | } 77 | 78 | -------------------------------------------------------------------------------- /pico/pcb-front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/pico/pcb-front.png -------------------------------------------------------------------------------- /pico/pico.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/pico/pico.zip -------------------------------------------------------------------------------- /pico/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2016/12/pico.html 4 | 5 | http://www.40percent.club/2016/12/2-keys.html 6 | 7 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 8 | 9 | EasyEDA ordering info: 10 | 11 | ![pico PCB Front](pcb-front.png) 12 | 13 | 14 | 34.3mm Max* 47mm Max; 15 | Layers: 2; 16 | PCB Thickness: 1.2mm; 17 | PCB Qty.: 30; 18 | PCB Color: Green; 19 | Surface Finish: HASL; 20 | Copper Weight: 1; 21 | Panelized PCBs: 1 22 | 23 | 24 | 25 | Files released under https://creativecommons.org/licenses/by-sa/4.0/ 26 | 27 | ![Creative Commons Attribution-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png) 28 | 29 | ### An example of how to comply with an open source license: 30 | 31 | https://www.reddit.com/r/mechmarket/comments/6aryaz/uscah_gherkin_w_black_pcb_kits_and_custom/ 32 | 33 | https://github.com/Emmryu/Gherkin 34 | -------------------------------------------------------------------------------- /planck/Planck Bottom 19mm.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/planck/Planck Bottom 19mm.zip -------------------------------------------------------------------------------- /planck/Planck Top 19mm.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/planck/Planck Top 19mm.zip -------------------------------------------------------------------------------- /planck/PlanckPCBBottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/planck/PlanckPCBBottom.png -------------------------------------------------------------------------------- /planck/PlanckPCBTop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/planck/PlanckPCBTop.png -------------------------------------------------------------------------------- /planck/readme.md: -------------------------------------------------------------------------------- 1 | ![planck plate](PlanckPCBTop.png) 2 | ![planck bottom](PlanckPCBBottom.png) 3 | 4 | Using these plates with a Planck PCB requires grinding notches into the PCB for the standoffs to fit. See http://www.40percent.club/2017/02/pcb-plate-planck.html 5 | 6 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 7 | 8 | EasyEDA ordering info: 9 | 10 | Top/Bottom same size 11 | 12 | 233.7mm Max* 81.7mm Max; 13 | Layers: 2; 14 | PCB Thickness: 1.6mm; 15 | PCB Qty.: 5; 16 | PCB Color: Green; 17 | Surface Finish: HASL; 18 | Copper Weight: 1; 19 | Panelized PCBs: 1 20 | 21 | 22 | Gerber files released under https://creativecommons.org/licenses/by-sa/4.0/ 23 | 24 | ![Creative Commons Attribution-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png) 25 | -------------------------------------------------------------------------------- /quarters/quarters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/quarters/quarters.png -------------------------------------------------------------------------------- /quarters/quarters.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/quarters/quarters.zip -------------------------------------------------------------------------------- /quarters/quarters_plate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/quarters/quarters_plate.png -------------------------------------------------------------------------------- /quarters/quarters_plate.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/quarters/quarters_plate.zip -------------------------------------------------------------------------------- /quarters/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/03/happy-pi-day.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![quarters](quarters.png) 12 | 13 | Gerber: quarters.zip 14 | 15 | 16 | 100mm Max* 100mm Max; 17 | Layers: 2; 18 | PCB Thickness: 1.6mm; 19 | PCB Qty.: 10; 20 | PCB Color: Green; 21 | Surface Finish: HASL; 22 | Copper Weight: 1; 23 | Panelized PCBs: 1 24 | 25 | Plate 26 | 27 | ![quarters_plate](quarters_plate.png) 28 | 29 | Gerber: quarters_plate.zip 30 | 31 | 32 | 100mm Max* 100mm Max; 33 | Layers: 2; 34 | PCB Thickness: 1.6mm; 35 | PCB Qty.: 10; 36 | PCB Color: Green; 37 | Surface Finish: HASL; 38 | Copper Weight: 1; 39 | Panelized PCBs: 1 40 | 41 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 42 | 43 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /quarters/schematic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/quarters/schematic.png -------------------------------------------------------------------------------- /rehab/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2018/02/rehab.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![rehab](rehab.png) 12 | 13 | Gerber: rehab.zip 14 | 15 | 16 | 50.8mm * 45.7mm; 17 | Layers: 2; 18 | PCB Thickness: 1.6mm; 19 | PCB Qty.: 10; 20 | PCB Color: Green; 21 | Surface Finish: HASL; 22 | Copper Weight: 1; 23 | Panelized PCBs: 1 24 | 25 | 26 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 27 | 28 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 29 | -------------------------------------------------------------------------------- /rehab/rehab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/rehab/rehab.png -------------------------------------------------------------------------------- /rehab/rehab.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/rehab/rehab.zip -------------------------------------------------------------------------------- /semaphore/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2019/06/semaphore.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![semaphore](semaphore.png) 12 | 13 | Gerber: semaphore.zip 14 | 15 | 95mm Max* 95mm Max; 16 | Layers: 2; 17 | PCB Thickness: 1.6mm; 18 | PCB Qty.: 10; 19 | PCB Color: Green; 20 | Surface Finish: HASL; 21 | Copper Weight: 1; 22 | Panelized PCBs: 1 23 | 24 | Plate 25 | 26 | ![semaphore_plate](semaphore_plate.png) 27 | 28 | Gerber: semaphore_plate.zip 29 | 30 | 95mm Max* 95mm Max; 31 | Layers: 2; 32 | PCB Thickness: 1.6mm; 33 | PCB Qty.: 10; 34 | PCB Color: Green; 35 | Surface Finish: HASL; 36 | Copper Weight: 1; 37 | Panelized PCBs: 1 38 | 39 | Bottom 40 | 41 | ![semaphore_bottom](semaphore_bottom.png) 42 | 43 | Gerber: semaphore_bottom.zip 44 | 45 | 95mm Max* 95mm Max; 46 | Layers: 2; 47 | PCB Thickness: 1.6mm; 48 | PCB Qty.: 10; 49 | PCB Color: Green; 50 | Surface Finish: HASL; 51 | Copper Weight: 1; 52 | Panelized PCBs: 1 53 | 54 | 55 | 56 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 57 | 58 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /semaphore/semaphore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/semaphore/semaphore.png -------------------------------------------------------------------------------- /semaphore/semaphore.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/semaphore/semaphore.zip -------------------------------------------------------------------------------- /semaphore/semaphore_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/semaphore/semaphore_bottom.png -------------------------------------------------------------------------------- /semaphore/semaphore_bottom.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/semaphore/semaphore_bottom.zip -------------------------------------------------------------------------------- /semaphore/semaphore_plate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/semaphore/semaphore_plate.png -------------------------------------------------------------------------------- /semaphore/semaphore_plate.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/semaphore/semaphore_plate.zip -------------------------------------------------------------------------------- /split plates/bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/split plates/bottom.png -------------------------------------------------------------------------------- /split plates/plate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/split plates/plate.png -------------------------------------------------------------------------------- /split plates/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/08/split-plates.html 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![splitplate](plate.png) 12 | 13 | Gerber: splitplate.zip 14 | 15 | 16 | 123.8mm Max* 91.7mm Max; 17 | Layers: 2; 18 | PCB Thickness: 1.6mm; 19 | PCB Qty.: 5; 20 | PCB Color: Green; 21 | Surface Finish: HASL; 22 | Copper Weight: 1; 23 | Panelized PCBs: 1 24 | 25 | 26 | 27 | ![splitbottom](bottom.png) 28 | 29 | Gerber: splitbottom.zip 30 | 31 | 32 | 123.8mm Max* 91.7mm Max; 33 | Layers: 2; 34 | PCB Thickness: 1.6mm; 35 | PCB Qty.: 5; 36 | PCB Color: Green; 37 | Surface Finish: HASL; 38 | Copper Weight: 1; 39 | Panelized PCBs: 1 40 | 41 | 42 | 43 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 44 | 45 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 46 | -------------------------------------------------------------------------------- /split plates/splitbottom.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/split plates/splitbottom.zip -------------------------------------------------------------------------------- /split plates/splitplate.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/split plates/splitplate.zip -------------------------------------------------------------------------------- /tomato/Tomato.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/tomato/Tomato.png -------------------------------------------------------------------------------- /tomato/Tomato.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/tomato/Tomato.zip -------------------------------------------------------------------------------- /tomato/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | 4 | http://www.40percent.club/2017/05/30-rgb.html 5 | 6 | http://www.40percent.club/2017/06/tomato-13-30-rgb.html 7 | 8 | http://www.40percent.club/2017/07/tomato-in-gherkin.html 9 | 10 | 11 | 12 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 13 | 14 | ![Tomato Schematic](schematic.png) 15 | 16 | EasyEDA ordering info: 17 | 18 | PCB 19 | 20 | ![Tomato](Tomato.png) 21 | 22 | Gerber: Tomato.zip 23 | 24 | 25 | 188.1mm Max* 54.8mm Max; 26 | Layers: 2; 27 | PCB Thickness: 1.2mm; 28 | PCB Qty.: 5; 29 | PCB Color: Green; 30 | Surface Finish: HASL; 31 | Copper Weight: 1; 32 | Panelized PCBs: 1 33 | 34 | 35 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 36 | 37 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 38 | -------------------------------------------------------------------------------- /tomato/schematic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/tomato/schematic.png -------------------------------------------------------------------------------- /tree/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/12/tree 4 | 5 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 6 | 7 | EasyEDA ordering info: 8 | 9 | PCB 10 | 11 | ![tree](tree.png) 12 | 13 | Gerber: tree.zip 14 | 15 | 16 | 86.9mm Max* 77.5mm Max; 17 | Layers: 2; 18 | PCB Thickness: 1.6mm; 19 | PCB Qty.: 10; 20 | PCB Color: Green; 21 | Surface Finish: HASL; 22 | Copper Weight: 1; 23 | Panelized PCBs: 1 24 | 25 | 26 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 27 | 28 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 29 | -------------------------------------------------------------------------------- /tree/tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/tree/tree.png -------------------------------------------------------------------------------- /tree/tree.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/tree/tree.zip -------------------------------------------------------------------------------- /unquadquad/12x12minitop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/unquadquad/12x12minitop.png -------------------------------------------------------------------------------- /unquadquad/12x12minitop.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/unquadquad/12x12minitop.zip -------------------------------------------------------------------------------- /unquadquad/readme.md: -------------------------------------------------------------------------------- 1 | More info here: 2 | 3 | http://www.40percent.club/2017/10/unquadquad.html 4 | 5 | BOM 6 | 7 | 144 1n4148 diodes 8 | 144 MX compatible PCB mount switches 9 | 1 Arduino Micro (not Pro Micro) 10 | 2 17pin headers or 1 40pin machined pin wide socket 11 | 12 | [How to order PCBs from gerber files](http://www.40percent.club/2017/03/ordering-pcb.html) 13 | 14 | EasyEDA ordering info: 15 | 16 | PCB 17 | 18 | ![unquadquad](unquadquad.png) 19 | 20 | Gerber: unquadquad.zip 21 | 22 | 23 | 233.4mm Max* 233.4mm Max; 24 | Layers: 2; 25 | PCB Thickness: 1.6mm; 26 | PCB Qty.: 5; 27 | PCB Color: Green; 28 | Surface Finish: HASL; 29 | Copper Weight: 1; 30 | Panelized PCBs: 1 31 | 32 | 33 | Mini Top Plate 34 | 35 | ![12x12minitop](12x12minitop.png) 36 | 37 | Gerber: 12x12minitop.zip 38 | 39 | 40 | 76mm Max* 76mm Max; 41 | Layers: 2; 42 | PCB Thickness: 1.6mm; 43 | PCB Qty.: 5; 44 | PCB Color: Green; 45 | Surface Finish: HASL; 46 | Copper Weight: 1; 47 | Panelized PCBs: 1 48 | 49 | Files released under https://creativecommons.org/licenses/by-nc-sa/4.0/ 50 | 51 | ![Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) 52 | -------------------------------------------------------------------------------- /unquadquad/unquadquad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/unquadquad/unquadquad.png -------------------------------------------------------------------------------- /unquadquad/unquadquad.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ondras/misc/f375def0a3a3640754030073d80fbdceb2d38934/unquadquad/unquadquad.zip --------------------------------------------------------------------------------