├── .gitignore ├── LICENSE ├── README.md ├── config.yaml ├── footprints ├── diode_sod323.js ├── hole_array.js ├── kailh_x.js ├── magnet_hole.js ├── mounthole.js ├── mx_choc.js ├── power_switch_smd_side.js ├── promicro_nrf.js ├── text.js ├── thru_hole_pad.js └── xiao_nrf52840.js ├── images └── crb_v2.jpeg ├── outlines ├── Key holder.3mf ├── board.dxf ├── combo.dxf ├── key_holder.dxf └── key_holder_choc.dxf └── pcbs ├── board2pdf.config.ini ├── fabrication-toolkit-options.json ├── fp-info-cache ├── jlcpcb ├── gerber │ ├── kbd-CuBottom.gbr │ ├── kbd-CuTop.gbr │ ├── kbd-EdgeCuts.gbr │ ├── kbd-MaskBottom.gbr │ ├── kbd-MaskTop.gbr │ ├── kbd-NPTH-drl_map.pdf │ ├── kbd-NPTH.drl │ ├── kbd-PTH-drl_map.pdf │ ├── kbd-PTH.drl │ ├── kbd-PasteBottom.gbr │ ├── kbd-PasteTop.gbr │ ├── kbd-SilkBottom.gbr │ ├── kbd-SilkTop.gbr │ └── kbd-VScore.gbr ├── production_files │ ├── BOM-kbd.csv │ ├── CPL-kbd.csv │ └── GERBER-kbd.zip └── project.db ├── kbd.kicad_dru ├── kbd.kicad_pcb ├── kbd.kicad_prl ├── kbd.kicad_pro └── kbd.round-tracks-config /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | 132 | 133 | _notes 134 | output 135 | .DS_Store 136 | 137 | # Kicad Files 138 | *.kicad_pcb.lck 139 | _autosave-*.kicad_pcb 140 | kbd-backups 141 | 142 | .tool-versions 143 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # crabapplepad v2 2 | 3 | Wireless minimalistic foldable split keyboard 4 | 5 | ![crabapplepad v2](images/crb_v2.jpeg) 6 | 7 | ## Features 8 | 9 | - Supports Kailh Choc and MX switches 10 | - Optionally foldable with Choc switches 11 | - Minimalistic. No LEDs, no RGB, no extra keys 12 | - With Kailh Choc it's 3cm thick in the folded state 13 | - Split. The two halves are connected with a 3d printed hinge 14 | - Wireless. Uses Nice!Nano or ProMicro nRF52840 with BLE 15 | - 42 keys (I use Cyrillic layout too and 36 keys is not enough) 16 | - Apple Magic Trackpad can be magnetically attached (optional) 17 | 18 | ## PCB design 19 | 20 | PCB is generated using [ergogen](https://github.com/ergogen/ergogen). Then it finished in KiCAD. 21 | To regenerate the PCB run: 22 | 23 | ```bash 24 | npx ergogen . --clean && open output/pcbs/kbd.kicad_pcb 25 | ``` 26 | 27 | NB! The final PCB was heavily modified in KiCAD 28 | 29 | ## Firmware 30 | 31 | The firmware is based on [ZMK](https://zmkfirmware.dev/) and [Myrioku Layout](https://github.com/manna-harbour/miryoku) adapted for 42 keys. T 32 | 33 | ## Where is the slim V1? 34 | 35 | It's in the [v1](https://github.com/kumekay/crabapplepad/tree/v1) branch. The V1 is ccm thick in the folded state with Kailh X switches. The V2 is 3cm thick with Kailh Choc switches. 36 | -------------------------------------------------------------------------------- /config.yaml: -------------------------------------------------------------------------------- 1 | meta: 2 | engine: 4.1.0 3 | name: crabapplepad 4 | version: 2.0 5 | author: kumekay 6 | url: https://github.com/kumekay/crabapplepad/tree/v2 7 | 8 | units: 9 | # Keycap 10 | krx: 18 # Keycap raw width 11 | kry: 18 # Keycap raw height 12 | po: 1.6 # Offset between keycaps and outline 13 | 14 | # Keycap spacing 15 | kx: 19 16 | ky: 19 17 | 18 | sd: 2.2 # Screw diameter 19 | ps: 2.54 # Pin spacing 20 | 21 | # MCU 22 | pos: -20 - 8.7ps # Hole offset from bottom pin 23 | 24 | points: 25 | zones: 26 | matrix: 27 | anchor: 28 | shift: [100, -100] 29 | key: 30 | padding: 1ky 31 | spread: 1kx 32 | tags: 33 | columns: 34 | outer: 35 | key: 36 | column_net: P031 37 | mirror.column_net: P017 38 | pinky: 39 | key: 40 | splay: 0 41 | column_net: P029 42 | mirror.column_net: P020 43 | ring: 44 | key: 45 | stagger: 0.7ky 46 | column_net: P002 47 | mirror.column_net: P022 48 | middle: 49 | key: 50 | stagger: 0.5ky 51 | column_net: P115 52 | mirror.column_net: P024 53 | index: 54 | key: 55 | stagger: -0.2ky 56 | column_net: P113 57 | mirror.column_net: P100 58 | inner: 59 | key: 60 | column_net: P111 61 | mirror.column_net: P011 62 | rows: 63 | bottom: 64 | row_net: P104 65 | mirror.row_net: P104 66 | home: 67 | row_net: P106 68 | mirror.row_net: P106 69 | top: 70 | row_net: P010 71 | mirror.row_net: P010 72 | thumbs: 73 | key: 74 | padding: 1ky 75 | spread: 1kx 76 | anchor: 77 | ref: matrix_middle_bottom 78 | shift: [1.2kx, -1.2ky] 79 | columns: 80 | alpha: 81 | key: 82 | column_net: P115 83 | mirror.column_net: P024 84 | beta: 85 | key: 86 | column_net: P113 87 | mirror.column_net: P100 88 | gamma: 89 | key: 90 | column_net: P111 91 | mirror.column_net: P011 92 | rows: 93 | cluster: 94 | row_net: P009 95 | mirror.row_net: P009 96 | 97 | rotate: -22 98 | mirror: &mirror 99 | ref: matrix_inner_home 100 | distance: 74 + 2po 101 | outlines: 102 | _keys: 103 | - what: rectangle 104 | where: true 105 | size: [krx, kry] 106 | 107 | board: 108 | - what: polygon 109 | operation: add 110 | fillet: po 111 | points: 112 | - ref: matrix_outer_top 113 | shift: [-0.5kx-po, 0.5ky+1po] 114 | - ref: matrix_middle_top 115 | shift: [-0.5kx-po, 0.5ky+2po] 116 | - ref: matrix_inner_top 117 | shift: [0.5kx+po, 0.7ky+2po] 118 | - ref: mirror_matrix_inner_top 119 | shift: [0.5kx+po, 0.7ky+2po] 120 | - ref: mirror_matrix_middle_top 121 | shift: [-0.5kx-po, 0.5ky+2po] 122 | - ref: mirror_matrix_outer_top 123 | shift: [-0.5kx-po, 0.5ky+1po] 124 | - ref: mirror_matrix_outer_bottom 125 | shift: [-0.5kx-po, -0.5ky-2po] 126 | - ref: mirror_thumbs_gamma_cluster 127 | shift: [0.5kx + po, -0.5ky-2po] 128 | - ref: thumbs_gamma_cluster 129 | shift: [0.5kx + po, -0.5ky-2po] 130 | - ref: matrix_outer_bottom 131 | shift: [-0.5kx-po, -0.5ky-2po] 132 | 133 | # USB cutout 134 | - what: rectangle 135 | operation: subtract 136 | where: 137 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 138 | shift: [0, ps] 139 | size: [14, 8] 140 | fillet: po 141 | 142 | # Left top cutout 143 | - what: rectangle 144 | operation: subtract 145 | where: 146 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 147 | shift: [-15, -10] 148 | size: [2, 16] 149 | fillet: .8 150 | 151 | # Right top cutout 152 | - what: rectangle 153 | operation: subtract 154 | where: 155 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 156 | shift: [15, -10] 157 | size: [2, 16] 158 | fillet: .8 159 | 160 | # Left bottom cutout 161 | - what: rectangle 162 | operation: subtract 163 | where: 164 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 165 | shift: [-15, -58] 166 | size: [2, 29] 167 | fillet: .8 168 | 169 | # Right bottom cutout 170 | - what: rectangle 171 | operation: subtract 172 | where: 173 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 174 | shift: [15, -58] 175 | size: [2, 29] 176 | fillet: .8 177 | 178 | # Bottom cutout 179 | - what: rectangle 180 | operation: subtract 181 | where: 182 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 183 | shift: [0, -90] 184 | size: [32, 30] 185 | fillet: 186 | po 187 | 188 | # Mount holes 189 | 190 | - what: circle 191 | operation: subtract 192 | radius: 1.1 193 | where: 194 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 195 | shift: [-10.5, 1] 196 | 197 | - what: circle 198 | operation: subtract 199 | radius: 1.1 200 | where: 201 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 202 | shift: [10.5, 1] 203 | 204 | - what: circle 205 | operation: subtract 206 | radius: 1.1 207 | where: 208 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 209 | shift: [-10.5, -71] 210 | 211 | - what: circle 212 | operation: subtract 213 | radius: 1.1 214 | where: 215 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 216 | shift: [10.5, -71] 217 | 218 | - what: circle 219 | operation: subtract 220 | radius: 1.1 221 | where: 222 | ref: matrix_inner_top 223 | shift: [0.25kx, 0.65ky] 224 | 225 | - what: circle 226 | operation: subtract 227 | radius: 1.1 228 | where: 229 | ref: thumbs_gamma_cluster 230 | shift: [0.75kx, -0.25ky] 231 | 232 | - what: circle 233 | operation: subtract 234 | radius: 1.1 235 | where: 236 | ref: matrix_pinky_top 237 | shift: [0.25kx, 0.75ky] 238 | 239 | - what: circle 240 | operation: subtract 241 | radius: 1.1 242 | where: 243 | ref: matrix_middle_bottom 244 | shift: [-0.25kx, -0.75ky] 245 | 246 | - what: circle 247 | operation: subtract 248 | radius: 1.1 249 | where: 250 | ref: mirror_matrix_inner_top 251 | shift: [0.25kx, 0.65ky] 252 | 253 | - what: circle 254 | operation: subtract 255 | radius: 1.1 256 | where: 257 | ref: mirror_thumbs_gamma_cluster 258 | shift: [0.75kx, -0.25ky] 259 | 260 | - what: circle 261 | operation: subtract 262 | radius: 1.1 263 | where: 264 | ref: mirror_matrix_pinky_top 265 | shift: [0.25kx, 0.75ky] 266 | 267 | - what: circle 268 | operation: subtract 269 | radius: 1.1 270 | where: 271 | ref: mirror_matrix_middle_bottom 272 | shift: [-0.25kx, -0.75ky] 273 | 274 | combo: 275 | - name: board 276 | - operation: subtract 277 | name: _keys 278 | 279 | key_holder: 280 | - what: rectangle 281 | where: true 282 | size: [krx+2, kry+2] 283 | fillet: 2 284 | - what: rectangle 285 | where: true 286 | size: [14.1, 14.1] 287 | operation: subtract 288 | 289 | key_holder_choc: 290 | - what: rectangle 291 | where: true 292 | size: [krx+2, kry+2] 293 | fillet: 2 294 | - what: rectangle 295 | where: true 296 | size: [14, 14] 297 | operation: subtract 298 | 299 | pcbs: 300 | kbd: 301 | template: kicad8 302 | outlines: 303 | main: 304 | outline: board 305 | footprints: 306 | keys: 307 | what: mx_choc 308 | where: true 309 | params: 310 | from: "{{column_net}}" 311 | to: "{{colrow}}" 312 | diode: 313 | what: diode_sod323 314 | # Use "mirror" for the left side too 315 | # to select left side correctly without tag 316 | where: 317 | - /mirror_matrix_.*/ 318 | - /mirror_thumbs_.*/ 319 | asym: clone 320 | params: 321 | from: "{{colrow}}" 322 | to: "{{row_net}}" 323 | side: "F" 324 | handSoldering: true 325 | adjust: 326 | shift: [kx/2, 4] 327 | rotate: -90 328 | 329 | via_diode: 330 | what: via 331 | where: 332 | - /mirror_matrix_.*/ 333 | - /mirror_thumbs_.*/ 334 | asym: clone 335 | params: 336 | net: "{{row_net}}" 337 | adjust: 338 | shift: [kx/2, 7] 339 | 340 | diode_mirror: 341 | what: diode_sod323 342 | where: 343 | - /mirror_matrix_.*/ 344 | - /mirror_thumbs_.*/ 345 | asym: source 346 | params: 347 | from: "{{colrow}}" 348 | to: "{{row_net}}" 349 | side: "F" 350 | handSoldering: true 351 | adjust: 352 | shift: [kx/2, 4] 353 | rotate: 90 354 | 355 | via_diode_mirror: 356 | what: via 357 | where: 358 | - /mirror_matrix_.*/ 359 | - /mirror_thumbs_.*/ 360 | asym: source 361 | params: 362 | net: "{{row_net}}" 363 | adjust: 364 | shift: [kx/2, 7] 365 | 366 | via: 367 | what: via 368 | where: true 369 | params: 370 | net: GND 371 | adjust: 372 | shift: [-0.4kx, 0.1ky] 373 | 374 | mcu: 375 | what: promicro_nrf 376 | where: 377 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 378 | shift: [0, -20] 379 | rotate: -90 380 | 381 | # Left side keys 382 | col_outer: 383 | what: thru_hole_pad 384 | params: 385 | net: P031 386 | where: 387 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 388 | shift: [-19, pos + 9ps] 389 | 390 | col_pinky: 391 | what: thru_hole_pad 392 | params: 393 | net: P029 394 | where: 395 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 396 | shift: [-19, pos + 8ps] 397 | 398 | col_ring: 399 | what: thru_hole_pad 400 | params: 401 | net: P002 402 | where: 403 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 404 | shift: [-19, pos + 7ps] 405 | 406 | col_middle: 407 | what: thru_hole_pad 408 | params: 409 | net: P115 410 | where: 411 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 412 | shift: [-19, pos + 6ps] 413 | 414 | col_index: 415 | what: thru_hole_pad 416 | params: 417 | net: P113 418 | where: 419 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 420 | shift: [-19, pos + 5ps] 421 | 422 | col_inner: 423 | what: thru_hole_pad 424 | params: 425 | net: P111 426 | where: 427 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 428 | shift: [-19, pos + 4ps] 429 | 430 | row_top: 431 | what: thru_hole_pad 432 | params: 433 | net: P010 434 | where: 435 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 436 | shift: [-19, pos + 3ps] 437 | 438 | row_home: 439 | what: thru_hole_pad 440 | params: 441 | net: P106 442 | where: 443 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 444 | shift: [-19, pos + 2ps] 445 | 446 | row_bottom: 447 | what: thru_hole_pad 448 | params: 449 | net: P104 450 | where: 451 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 452 | shift: [-19, pos + 1ps] 453 | 454 | row_thumbs: 455 | what: thru_hole_pad 456 | params: 457 | net: P009 458 | where: 459 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 460 | shift: [-19, pos + 0ps] 461 | 462 | # Left side PCB 463 | 464 | col_outer_pcb: 465 | what: thru_hole_pad 466 | params: 467 | net: P031 468 | where: 469 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 470 | shift: [-11, pos + 9ps] 471 | 472 | col_pinky_pcb: 473 | what: thru_hole_pad 474 | params: 475 | net: P029 476 | where: 477 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 478 | shift: [-11, pos + 8ps] 479 | 480 | col_ring_pcb: 481 | what: thru_hole_pad 482 | params: 483 | net: P002 484 | where: 485 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 486 | shift: [-11, pos + 7ps] 487 | 488 | col_middle_pcb: 489 | what: thru_hole_pad 490 | params: 491 | net: P115 492 | where: 493 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 494 | shift: [-11, pos + 6ps] 495 | 496 | col_index_pcb: 497 | what: thru_hole_pad 498 | params: 499 | net: P113 500 | where: 501 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 502 | shift: [-11, pos + 5ps] 503 | 504 | col_inner_pcb: 505 | what: thru_hole_pad 506 | params: 507 | net: P111 508 | where: 509 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 510 | shift: [-11, pos + 4ps] 511 | 512 | row_top_pcb: 513 | what: thru_hole_pad 514 | params: 515 | net: P010 516 | where: 517 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 518 | shift: [-11, pos + 3ps] 519 | 520 | row_home_pcb: 521 | what: thru_hole_pad 522 | params: 523 | net: P106 524 | where: 525 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 526 | shift: [-11, pos + 2ps] 527 | 528 | row_bottom_pcb: 529 | what: thru_hole_pad 530 | params: 531 | net: P104 532 | where: 533 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 534 | shift: [-11, pos + ps] 535 | 536 | row_thumbs_pcb: 537 | what: thru_hole_pad 538 | params: 539 | net: P009 540 | where: 541 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 542 | shift: [-11, pos] 543 | 544 | # Right side keys 545 | mirror_col_outer: 546 | what: thru_hole_pad 547 | params: 548 | net: P017 549 | where: 550 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 551 | shift: [19, pos + 9ps] 552 | 553 | mirror_col_pinky: 554 | what: thru_hole_pad 555 | params: 556 | net: P020 557 | where: 558 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 559 | shift: [19, pos + 8ps] 560 | 561 | mirror_col_ring: 562 | what: thru_hole_pad 563 | params: 564 | net: P022 565 | where: 566 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 567 | shift: [19, pos + 7ps] 568 | 569 | mirror_col_middle: 570 | what: thru_hole_pad 571 | params: 572 | net: P024 573 | where: 574 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 575 | shift: [19, pos + 6ps] 576 | 577 | mirror_col_index: 578 | what: thru_hole_pad 579 | params: 580 | net: P100 581 | where: 582 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 583 | shift: [19, pos + 5ps] 584 | 585 | mirror_col_inner: 586 | what: thru_hole_pad 587 | params: 588 | net: P011 589 | where: 590 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 591 | shift: [19, pos + 4ps] 592 | 593 | mirror_row_top: 594 | what: thru_hole_pad 595 | params: 596 | net: P010 597 | where: 598 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 599 | shift: [19, pos + 3ps] 600 | 601 | mirror_row_home: 602 | what: thru_hole_pad 603 | params: 604 | net: P106 605 | where: 606 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 607 | shift: [19, pos + 2ps] 608 | 609 | mirror_row_bottom: 610 | what: thru_hole_pad 611 | params: 612 | net: P104 613 | where: 614 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 615 | shift: [19, pos + 1ps] 616 | 617 | mirror_row_thumbs: 618 | what: thru_hole_pad 619 | params: 620 | net: P009 621 | where: 622 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 623 | shift: [19, pos + 0ps] 624 | 625 | # Left side PCB 626 | 627 | mirror_col_outer_pcb: 628 | what: thru_hole_pad 629 | params: 630 | net: P017 631 | where: 632 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 633 | shift: [11, pos + 9ps] 634 | 635 | mirror_col_pinky_pcb: 636 | what: thru_hole_pad 637 | params: 638 | net: P020 639 | where: 640 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 641 | shift: [11, pos + 8ps] 642 | 643 | mirror_col_ring_pcb: 644 | what: thru_hole_pad 645 | params: 646 | net: P022 647 | where: 648 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 649 | shift: [11, pos + 7ps] 650 | 651 | mirror_col_middle_pcb: 652 | what: thru_hole_pad 653 | params: 654 | net: P024 655 | where: 656 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 657 | shift: [11, pos + 6ps] 658 | 659 | mirror_col_index_pcb: 660 | what: thru_hole_pad 661 | params: 662 | net: P100 663 | where: 664 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 665 | shift: [11, pos + 5ps] 666 | 667 | mirror_col_inner_pcb: 668 | what: thru_hole_pad 669 | params: 670 | net: P011 671 | where: 672 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 673 | shift: [11, pos + 4ps] 674 | 675 | mirror_row_top_pcb: 676 | what: thru_hole_pad 677 | params: 678 | net: P010 679 | where: 680 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 681 | shift: [11, pos + 3ps] 682 | 683 | mirror_row_home_pcb: 684 | what: thru_hole_pad 685 | params: 686 | net: P106 687 | where: 688 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 689 | shift: [11, pos + 2ps] 690 | 691 | mirror_row_bottom_pcb: 692 | what: thru_hole_pad 693 | params: 694 | net: P104 695 | where: 696 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 697 | shift: [11, pos + ps] 698 | 699 | mirror_row_thumbs_pcb: 700 | what: thru_hole_pad 701 | params: 702 | net: P009 703 | where: 704 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 705 | shift: [11, pos] 706 | 707 | # Misc 708 | 709 | battery_power: 710 | what: thru_hole_pad 711 | params: 712 | net: BAT_VCC 713 | where: 714 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 715 | shift: [-2, -38] 716 | battery_power_text: 717 | what: text 718 | where: 719 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 720 | shift: [-3.5, -38] 721 | params: 722 | layer: F.SilkS 723 | text: "BAT+" 724 | justify: "right" 725 | 726 | battery_power_gnd: 727 | what: thru_hole_pad 728 | params: 729 | net: GND 730 | where: 731 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 732 | shift: [2, -38] 733 | battery_power_gnd_text: 734 | what: text 735 | where: 736 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 737 | shift: [3.5, -38] 738 | params: 739 | layer: F.SilkS 740 | text: "BAT-" 741 | justify: "left" 742 | 743 | power_switch: 744 | what: power_switch_smd_side 745 | params: 746 | from: BAT_VCC 747 | to: RAW 748 | where: 749 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 750 | shift: [0, -72.7] 751 | rotate: -90 752 | 753 | # Mount holes 754 | # MCU 755 | 756 | mount_hole_mcu_left: 757 | what: mounthole 758 | params: 759 | diameter: sd 760 | where: 761 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 762 | shift: [-10.5, 1] 763 | 764 | mount_hole_mcu_right: 765 | what: mounthole 766 | params: 767 | diameter: sd 768 | where: 769 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 770 | shift: [10.5, 1] 771 | 772 | mount_hole_mcu_left_bottom: 773 | what: mounthole 774 | params: 775 | diameter: sd 776 | where: 777 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 778 | shift: [-10.5, -71] 779 | 780 | mount_hole_mcu_right_bottom: 781 | what: mounthole 782 | params: 783 | diameter: sd 784 | where: 785 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 786 | shift: [10.5, -71] 787 | 788 | mount_hole_inner_top: 789 | what: mounthole 790 | params: 791 | diameter: sd 792 | where: 793 | ref: matrix_inner_top 794 | shift: [0.25kx, 0.65ky] 795 | 796 | mount_hole_thumb_bottom: 797 | what: mounthole 798 | params: 799 | diameter: sd 800 | where: 801 | ref: thumbs_gamma_cluster 802 | shift: [0.75kx, -0.25ky] 803 | 804 | mount_hole_pinky: 805 | what: mounthole 806 | params: 807 | diameter: sd 808 | where: 809 | ref: matrix_pinky_top 810 | shift: [0.25kx, 0.75ky] 811 | 812 | mount_hole_middle: 813 | what: mounthole 814 | params: 815 | diameter: sd 816 | where: 817 | ref: matrix_middle_bottom 818 | shift: [-0.25kx, -0.75ky] 819 | 820 | mount_hole_inner_top_mirror: 821 | what: mounthole 822 | params: 823 | diameter: sd 824 | where: 825 | ref: mirror_matrix_inner_top 826 | shift: [0.25kx, 0.65ky] 827 | 828 | mount_hole_thumb_bottom_mirror: 829 | what: mounthole 830 | params: 831 | diameter: sd 832 | where: 833 | ref: mirror_thumbs_gamma_cluster 834 | shift: [0.75kx, -0.25ky] 835 | 836 | mount_hole_pinky_mirror: 837 | what: mounthole 838 | params: 839 | diameter: sd 840 | where: 841 | ref: mirror_matrix_pinky_top 842 | shift: [0.25kx, 0.75ky] 843 | 844 | mount_hole_middle_mirror: 845 | what: mounthole 846 | params: 847 | diameter: sd 848 | where: 849 | ref: mirror_matrix_middle_bottom 850 | shift: [-0.25kx, -0.75ky] 851 | 852 | # Name 853 | project_name: 854 | what: text 855 | where: 856 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 857 | shift: [-7, -44] 858 | params: 859 | layer: F.SilkS 860 | text: "crabapplepad v2.0" 861 | justify: left 862 | 863 | project_author: 864 | what: text 865 | where: 866 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 867 | shift: [-7.3, -46] 868 | params: 869 | layer: F.SilkS 870 | text: "by @kumekay 2024" 871 | justify: left 872 | 873 | jlcpcd_order_id: 874 | what: text 875 | where: 876 | ref.aggregate.parts: [matrix_index_top, mirror_matrix_index_top] 877 | shift: [-5, -60] 878 | params: 879 | text: "JLCJLCJLCJLC" 880 | justify: left 881 | -------------------------------------------------------------------------------- /footprints/diode_sod323.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | params: { 3 | designator: 'D', 4 | from: undefined, 5 | to: undefined, 6 | side: 'B', 7 | handSoldering: true 8 | }, 9 | body: p => { 10 | 11 | let padAt = p.handSoldering ? '1.25' : '1.05' 12 | let padSize = p.handSoldering ? '1 1' : '0.6 0.45' 13 | 14 | return ` 15 | (footprint "Diode_SMD:D_SOD-323${p.handSoldering ? '_HandSoldering' : ''}" (layer "${p.side}.Cu") 16 | ${p.at} 17 | (descr "SOD-323") 18 | (tags "SOD-323") 19 | (attr smd) 20 | (fp_text reference "${p.ref}" (at 0 1.85 ${p.rot}) (layer "${p.side}.SilkS") ${p.ref_hide} 21 | (effects (font (size 1 1) (thickness 0.15)) (justify ${p.side == 'B' ? 'mirror' : ''})) 22 | ) 23 | (fp_text user "\${REFERENCE}" (at 0 1.85 ${p.rot}) (layer "${p.side}.Fab") 24 | (effects (font (size 1 1) (thickness 0.15)) (justify ${p.side == 'B' ? 'mirror' : ''})) 25 | ) 26 | (fp_line (start -2.01 -0.85) (end 1.25 -0.85) 27 | (stroke (width 0.12) (type solid)) (layer "${p.side}.SilkS")) 28 | (fp_line (start -2.01 0.85) (end -2.01 -0.85) 29 | (stroke (width 0.12) (type solid)) (layer "${p.side}.SilkS")) 30 | (fp_line (start -2.01 0.85) (end 1.25 0.85) 31 | (stroke (width 0.12) (type solid)) (layer "${p.side}.SilkS")) 32 | (fp_line (start -2 -0.95) (end 2 -0.95) 33 | (stroke (width 0.05) (type solid)) (layer "${p.side}.CrtYd")) 34 | (fp_line (start -2 0.95) (end -2 -0.95) 35 | (stroke (width 0.05) (type solid)) (layer "${p.side}.CrtYd")) 36 | (fp_line (start -2 0.95) (end 2 0.95) 37 | (stroke (width 0.05) (type solid)) (layer "${p.side}.CrtYd")) 38 | (fp_line (start 2 0.95) (end 2 -0.95) 39 | (stroke (width 0.05) (type solid)) (layer "${p.side}.CrtYd")) 40 | (fp_line (start -0.9 -0.7) (end -0.9 0.7) 41 | (stroke (width 0.1) (type solid)) (layer "${p.side}.Fab")) 42 | (fp_line (start -0.9 0.7) (end 0.9 0.7) 43 | (stroke (width 0.1) (type solid)) (layer "${p.side}.Fab")) 44 | (fp_line (start -0.3 0) (end -0.5 0) 45 | (stroke (width 0.1) (type solid)) (layer "${p.side}.Fab")) 46 | (fp_line (start -0.3 0) (end 0.2 0.35) 47 | (stroke (width 0.1) (type solid)) (layer "${p.side}.Fab")) 48 | (fp_line (start -0.3 0.35) (end -0.3 -0.35) 49 | (stroke (width 0.1) (type solid)) (layer "${p.side}.Fab")) 50 | (fp_line (start 0.2 -0.35) (end -0.3 0) 51 | (stroke (width 0.1) (type solid)) (layer "${p.side}.Fab")) 52 | (fp_line (start 0.2 0) (end 0.45 0) 53 | (stroke (width 0.1) (type solid)) (layer "${p.side}.Fab")) 54 | (fp_line (start 0.2 0.35) (end 0.2 -0.35) 55 | (stroke (width 0.1) (type solid)) (layer "${p.side}.Fab")) 56 | (fp_line (start 0.9 -0.7) (end -0.9 -0.7) 57 | (stroke (width 0.1) (type solid)) (layer "${p.side}.Fab")) 58 | (fp_line (start 0.9 0.7) (end 0.9 -0.7) 59 | (stroke (width 0.1) (type solid)) (layer "${p.side}.Fab")) 60 | (pad "1" smd roundrect (at -${padAt} 0 ${p.rot}) (size ${padSize}) (layers "${p.side}.Cu" "${p.side}.Paste" "${p.side}.Mask") (roundrect_rratio 0.25) ${p.to.str}) 61 | (pad "2" smd roundrect (at ${padAt} 0 ${p.rot}) (size ${padSize}) (layers "${p.side}.Cu" "${p.side}.Paste" "${p.side}.Mask") (roundrect_rratio 0.25) ${p.from.str}) 62 | (model "\${KICAD6_3DMODEL_DIR}/Diode_SMD.3dshapes/D_SOD-323.wrl" 63 | )) 64 | ` 65 | } 66 | } 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /footprints/hole_array.js: -------------------------------------------------------------------------------- 1 | // Hole array, can be used for mouse bites, etc. 2 | 3 | module.exports = { 4 | params: { 5 | diameter: 0.7, 6 | x_count: 1, 7 | x_spacing: 1, 8 | y_count: 1, 9 | y_spacing: 1, 10 | }, 11 | body: p => { 12 | let holes = ''; 13 | for (let x = 0; x < p.x_count; x++) { 14 | for (let y = 0; y < p.y_count; y++) { 15 | holes += `(pad "" thru_hole circle locked (at ${x * p.x_spacing} ${y * p.y_spacing}) (size ${p.diameter} ${p.diameter}) (drill ${p.diameter}) (layers *.Cu *.Mask))\n`; 16 | } 17 | } 18 | 19 | return ` 20 | (module "Hole_Array_${p.x_count}x${p.y_count}_${p.diameter}mm" (layer "F.Cu") 21 | ${p.at} 22 | ${holes} 23 | )` 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /footprints/kailh_x.js: -------------------------------------------------------------------------------- 1 | // Kailh-PG1425-X 2 | // https://www.kailhswitch.com/mechanical-keyboard-switches/low-profile-key-switches/low-profile-switch-for-notebook.html 3 | 4 | 5 | module.exports = { 6 | params: { 7 | designator: 'S', 8 | from: undefined, 9 | to: undefined 10 | }, 11 | body: p => ` 12 | (footprint "Kailh-PG1425-X-Switch" (layer "F.Cu") 13 | ${p.at} 14 | (attr through_hole) 15 | (fp_text reference "${p.ref}" (at 0 10.34) (layer "F.SilkS") ${p.ref_hide} 16 | (effects (font (size 1 1) (thickness 0.15))) 17 | ) 18 | (fp_text value "Kailh-PG1425-X-Switch" (at 0 -10.16) (layer "F.Fab") 19 | (effects (font (size 1 1) (thickness 0.15))) 20 | ) 21 | (fp_line (start -7.400008 -6.960164) (end -7.400008 7.039836) 22 | (stroke (width 0.15) (type solid)) (layer "B.SilkS")) 23 | (fp_line (start -7.400008 7.039836) (end 7.399992 7.039836) 24 | (stroke (width 0.15) (type solid)) (layer "B.SilkS")) 25 | (fp_line (start 7.399992 -6.960164) (end -7.400008 -6.960164) 26 | (stroke (width 0.15) (type solid)) (layer "B.SilkS")) 27 | (fp_line (start 7.399992 7.039836) (end 7.399992 -6.960164) 28 | (stroke (width 0.15) (type solid)) (layer "B.SilkS")) 29 | (fp_line (start -7.4 -6.96) (end 7.4 -6.96) 30 | (stroke (width 0.15) (type solid)) (layer "F.SilkS")) 31 | (fp_line (start -7.4 7.04) (end -7.4 -6.96) 32 | (stroke (width 0.15) (type solid)) (layer "F.SilkS")) 33 | (fp_line (start 7.4 -6.96) (end 7.4 7.04) 34 | (stroke (width 0.15) (type solid)) (layer "F.SilkS")) 35 | (fp_line (start 7.4 7.04) (end -7.4 7.04) 36 | (stroke (width 0.15) (type solid)) (layer "F.SilkS")) 37 | (fp_line (start -8.255 -8.215) (end 8.255 -8.215) 38 | (stroke (width 0.12) (type solid)) (layer "F.CrtYd")) 39 | (fp_line (start -8.255 8.295) (end -8.255 -8.215) 40 | (stroke (width 0.12) (type solid)) (layer "F.CrtYd")) 41 | (fp_line (start 8.255 -8.215) (end 8.255 8.295) 42 | (stroke (width 0.12) (type solid)) (layer "F.CrtYd")) 43 | (fp_line (start 8.255 8.295) (end -8.255 8.295) 44 | (stroke (width 0.12) (type solid)) (layer "F.CrtYd")) 45 | (fp_line (start -2.550008 2.989836) (end 2.549992 2.989836) 46 | (stroke (width 0.15) (type solid)) (layer "B.Fab")) 47 | (fp_line (start -2.550008 6.589836) (end -2.550008 2.989836) 48 | (stroke (width 0.15) (type solid)) (layer "B.Fab")) 49 | (fp_line (start 2.549992 2.989836) (end 2.549992 6.589836) 50 | (stroke (width 0.15) (type solid)) (layer "B.Fab")) 51 | (fp_line (start 2.549992 6.589836) (end -2.550008 6.589836) 52 | (stroke (width 0.15) (type solid)) (layer "B.Fab")) 53 | (fp_line (start -9.525 -9.485) (end 9.525 -9.485) 54 | (stroke (width 0.15) (type solid)) (layer "F.Fab")) 55 | (fp_line (start -9.525 9.565) (end -9.525 -9.485) 56 | (stroke (width 0.15) (type solid)) (layer "F.Fab")) 57 | (fp_line (start -2.55 2.99) (end -2.55 6.59) 58 | (stroke (width 0.15) (type solid)) (layer "F.Fab")) 59 | (fp_line (start -2.55 6.59) (end 2.55 6.59) 60 | (stroke (width 0.15) (type solid)) (layer "F.Fab")) 61 | (fp_line (start 2.55 2.99) (end -2.55 2.99) 62 | (stroke (width 0.15) (type solid)) (layer "F.Fab")) 63 | (fp_line (start 2.55 6.59) (end 2.55 2.99) 64 | (stroke (width 0.15) (type solid)) (layer "F.Fab")) 65 | (fp_line (start 9.525 -9.485) (end 9.525 9.565) 66 | (stroke (width 0.15) (type solid)) (layer "F.Fab")) 67 | (fp_line (start 9.525 9.565) (end -9.525 9.565) 68 | (stroke (width 0.15) (type solid)) (layer "F.Fab")) 69 | (pad "" np_thru_hole circle (at -5.500008 -5.460164 180) (size 1.3 1.3) (drill 1.3) (layers "*.Cu" "*.Mask")) 70 | (pad "" np_thru_hole oval (at -2.4 0.94) (size 0.3 4.1) (drill oval 0.3 4.1) (layers "*.Cu" "*.Mask")) 71 | (pad "" np_thru_hole oval (at -1.55 0.94) (size 2 4.1) (drill oval 2 4.1) (layers "*.Cu" "*.Mask")) 72 | (pad "" np_thru_hole oval (at 0 -0.96) (size 5.1 0.3) (drill oval 5.1 0.3) (layers "*.Cu" "*.Mask")) 73 | (pad "" np_thru_hole oval (at 0 0.94) (size 5.1 4.1) (drill oval 5.1 4.1) (layers "*.Cu" "*.Mask")) 74 | (pad "" np_thru_hole oval (at 0 2.84) (size 5.1 0.3) (drill oval 5.1 0.3) (layers "*.Cu" "*.Mask")) 75 | (pad "" np_thru_hole oval (at 1.55 0.94) (size 2 4.1) (drill oval 2 4.1) (layers "*.Cu" "*.Mask")) 76 | (pad "" np_thru_hole oval (at 2.4 0.94) (size 0.3 4.1) (drill oval 0.3 4.1) (layers "*.Cu" "*.Mask")) 77 | (pad "" np_thru_hole circle (at 5.499992 5.539836 180) (size 1.3 1.3) (drill 1.3) (layers "*.Cu" "*.Mask")) 78 | (pad "1" thru_hole circle (at -3.400008 -2.860164 180) (size 1.6 1.6) (drill 1.1) (layers "*.Cu" "*.Mask") ${p.from.str}) 79 | (pad "2" thru_hole circle (at -3.400008 2.039836 180) (size 1.4 1.4) (drill 1.1) (layers "*.Cu" "*.Mask") ${p.to.str}) 80 | ) 81 | ` 82 | } 83 | -------------------------------------------------------------------------------- /footprints/magnet_hole.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | params: { 3 | net: undefined, 4 | class: 'MAGNET', 5 | diameter: 12.3, 6 | }, 7 | body: p => { 8 | const mainHoleRadius = p.diameter / 2 + p.mountDiameter; 9 | return ` 10 | (module "Magnet_Hole_${p.diameter}mm" (layer "F.Cu") 11 | ${p.at /* parametric position */} 12 | 13 | (fp_text reference "${p.ref}" (at 0 ${-p.diameter - 1}) (layer "F.SilkS") ${p.ref_hide} 14 | (effects (font (size 1 1) (thickness 0.15))) 15 | ) 16 | 17 | (pad "1" thru_hole circle locked (at 0 0) (size ${p.diameter + 1} ${p.diameter + 1}) (drill ${p.diameter}) (layers *.Cu *.Mask) ${p.net ? p.net.str : ''}) 18 | )` 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /footprints/mounthole.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | params: { 3 | net: { type: 'net', value: 'GND' }, 4 | diameter: 2.2, 5 | }, 6 | body: p => { 7 | const mainHoleRadius = p.diameter / 1.35; 8 | const radStep = Math.PI / 4; // For 8 surrounding holes 9 | let pads = ''; 10 | for (let i = 0; i < 8; i++) { 11 | let x = mainHoleRadius * Math.cos(radStep * i); 12 | let y = mainHoleRadius * Math.sin(radStep * i); 13 | pads += `(pad "1" thru_hole circle locked (at ${x} ${y}) (size 0.7 0.7) (drill 0.4) (layers *.Cu *.Mask))\n`; 14 | } 15 | return ` 16 | (module "Mount_Hole_${p.diameter}mm_Pad_Via" (layer "F.Cu") 17 | ${p.at /* parametric position */} 18 | 19 | (fp_text reference "${p.ref}" (at 0 ${-p.diameter - 1}) (layer "F.SilkS") ${p.ref_hide} 20 | (effects (font (size 1 1) (thickness 0.15))) 21 | ) 22 | 23 | (fp_circle (center 0 0) (end ${p.diameter + 0.3} 0) (layer "F.CrtYd") (width 0.05) (fill none)) 24 | (pad "1" thru_hole circle locked (at 0 0) (size ${p.diameter * 2} ${p.diameter * 2}) (drill ${p.diameter}) (layers *.Cu *.Mask) ${p.net}) 25 | ${pads} 26 | )` 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /footprints/mx_choc.js: -------------------------------------------------------------------------------- 1 | // Cherry MX Keyboard and Kailh Choc v1 Keyswitch Switch PCB Cutout Keycap 1.00u 2 | // Manually combined from: https://github.com/kiswitch/kiswitch 3 | 4 | module.exports = { 5 | params: { 6 | designator: 'S', 7 | conn_pad: true, 8 | from: undefined, 9 | to: undefined 10 | }, 11 | body: p => { 12 | let connections = !p.conn_pad ? "" : ` 13 | (pad "1" smd custom (at -3.251475 0 ${p.r}) (size 0.2 0.2) (layers "B.Cu") 14 | (options (clearance outline) (anchor circle)) 15 | (primitives 16 | (gr_arc (start -0.130234 -1.174804) (mid 0 0) (end -0.333676 1.133924) (width 0.3)) 17 | (gr_line (start -0.333676 1.133924) (end -1.748555 3.822143) (width 0.3)) 18 | (gr_line (start -0.558525 -2.517841) (end -0.130234 -1.174804) (width 0.3)) 19 | ) 20 | ${p.from.str} 21 | (uuid "0d1fb4ee-f613-4d1f-84cf-17d1d9b9fe03") 22 | ) 23 | 24 | (pad "2" smd custom (at 3.374367 0 ${p.r}) (size 0.2 0.2) (layers "B.Cu") 25 | (options (clearance outline) (anchor circle)) 26 | (primitives 27 | (gr_arc (start -0.006705 -1.077393) (mid 0 0) (end -0.374367 1.010282) (width 0.3)) 28 | (gr_line (start -0.374367 1.010282) (end -3.296325 5.935869) (width 0.3)) 29 | (gr_line (start -0.756325 -5.044131) (end -0.006705 -1.077393) (width 0.3)) 30 | ) 31 | ${p.to.str} 32 | (uuid "9aaf8afd-e4b1-4690-b910-54126c755d51") 33 | )` 34 | 35 | return ` 36 | (footprint "SW_Cherry_MX_Choc_PCB_1.00u" (version 20240108) (generator "pcbnew") (generator_version "8.0") 37 | ${p.at} 38 | (layer "F.Cu") 39 | (descr "Cherry MX and Kailh Choc v1 keyswitch PCB Mount Keycap 1.00u") 40 | (tags "Cherry MX Keyboard and Kailh Choc v1 Keyswitch Switch PCB Cutout Keycap 1.00u") 41 | (property "Reference" ${p.ref} (at 0 -8 0) (layer "F.SilkS")(uuid "24ca5f61-035c-4e0d-8b55-2197cff68f82") 42 | ${p.ref_hide} 43 | (effects (font (size 1 1) (thickness 0.15))) 44 | ) 45 | (property "Value" "SW_MX_Choc_PCB_1.00u" (at 0 8 0) (layer "F.Fab")(hide yes)(uuid "a9215d1d-341e-4612-acf3-2834d92f1578") 46 | (effects (font (size 1 1) (thickness 0.15))) 47 | ) 48 | (attr through_hole) 49 | (fp_line (start -7.1 -7.1) (end -7.1 7.1) 50 | (stroke (width 0.12) (type solid)) (layer "F.SilkS")(uuid "8ee0b565-9cab-4824-8b16-e726ce6b5fb7")) 51 | (fp_line (start -7.1 7.1) (end 7.1 7.1) 52 | (stroke (width 0.12) (type solid)) (layer "F.SilkS")(uuid "885c4248-a9d7-4dae-a4b9-cef97b0fd78d")) 53 | (fp_line (start 7.1 -7.1) (end -7.1 -7.1) 54 | (stroke (width 0.12) (type solid)) (layer "F.SilkS")(uuid "655b23e7-b2db-4b99-83c7-66c433fd2f67")) 55 | (fp_line (start 7.1 7.1) (end 7.1 -7.1) 56 | (stroke (width 0.12) (type solid)) (layer "F.SilkS")(uuid "097a6206-5f6f-4c74-b1d1-89306c0de5b7")) 57 | (fp_line (start -9.525 -9.525) (end -9.525 9.525) 58 | (stroke (width 0.1) (type solid)) (layer "Dwgs.User")(uuid "f6757d2f-3cc0-46fc-8ef0-0b6d836ef02f")) 59 | (fp_line (start -9.525 9.525) (end 9.525 9.525) 60 | (stroke (width 0.1) (type solid)) (layer "Dwgs.User")(uuid "575e7886-5bcd-41d1-af25-7a8ac74982f1")) 61 | (fp_line (start 9.525 -9.525) (end -9.525 -9.525) 62 | (stroke (width 0.1) (type solid)) (layer "Dwgs.User")(uuid "13a675e5-e5df-4d6f-84f5-9630d392f74f")) 63 | (fp_line (start 9.525 9.525) (end 9.525 -9.525) 64 | (stroke (width 0.1) (type solid)) (layer "Dwgs.User")(uuid "516506c4-2054-43c1-ad5f-06e5c9b6c62c")) 65 | (fp_line (start -7 -7) (end -7 7) 66 | (stroke (width 0.1) (type solid)) (layer "Eco1.User")(uuid "782dfc90-1e58-4864-b4e5-01df9fbf3219")) 67 | (fp_line (start -7 7) (end 7 7) 68 | (stroke (width 0.1) (type solid)) (layer "Eco1.User")(uuid "16814408-307e-46e0-8862-35f241f7be01")) 69 | (fp_line (start 7 -7) (end -7 -7) 70 | (stroke (width 0.1) (type solid)) (layer "Eco1.User")(uuid "d61b59bd-901c-47b2-95b2-de83101fee35")) 71 | (fp_line (start 7 7) (end 7 -7) 72 | (stroke (width 0.1) (type solid)) (layer "Eco1.User")(uuid "a78d7442-9e7b-4161-9b39-6bd43b690335")) 73 | (fp_line (start -7.25 -7.25) (end -7.25 7.25) 74 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd")(uuid "90e296f0-2190-40ee-ac28-2dcd2c2a9be0")) 75 | (fp_line (start -7.25 7.25) (end 7.25 7.25) 76 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd")(uuid "879cf19e-11ce-4066-9523-bcf4165d8128")) 77 | (fp_line (start 7.25 -7.25) (end -7.25 -7.25) 78 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd")(uuid "315e8297-6146-401e-8908-a83e404b1683")) 79 | (fp_line (start 7.25 7.25) (end 7.25 -7.25) 80 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd")(uuid "7fee7ac6-4fa6-471d-a26c-f93b9442063a")) 81 | (fp_line (start -7 -7) (end -7 7) 82 | (stroke (width 0.1) (type solid)) (layer "F.Fab")(uuid "3fca883d-15c3-4cac-a944-218c07367354")) 83 | (fp_line (start -7 7) (end 7 7) 84 | (stroke (width 0.1) (type solid)) (layer "F.Fab")(uuid "2dbc1e4f-dfed-4f1d-a182-1dd0bc3a205d")) 85 | (fp_line (start 7 -7) (end -7 -7) 86 | (stroke (width 0.1) (type solid)) (layer "F.Fab")(uuid "232db201-45bc-46b7-a825-cc6b44b8081c")) 87 | (fp_line (start 7 7) (end 7 -7) 88 | (stroke (width 0.1) (type solid)) (layer "F.Fab")(uuid "227ee758-8b9c-4ee8-9927-7f369ff19628")) 89 | (pad "" np_thru_hole circle (at -5.5 0 180) (size 1.9 1.9) (drill 1.9) (layers "*.Cu" "*.Mask") 90 | (uuid "60421878-12d2-4be1-ab99-c34f1d6cbf93") 91 | ) 92 | (pad "" np_thru_hole circle (at -5.08 0) (size 1.75 1.75) (drill 1.75) (layers "*.Cu" "*.Mask") 93 | (uuid "27734d36-c0ee-4a03-a003-4d603281850e") 94 | ) 95 | (pad "" np_thru_hole circle (at 0 0) (size 4 4) (drill 4) (layers "*.Cu" "*.Mask") 96 | (uuid "31e7befe-235b-4101-b0ab-2a2fc44054cc") 97 | ) 98 | (pad "" np_thru_hole circle (at 5.08 0) (size 1.75 1.75) (drill 1.75) (layers "*.Cu" "*.Mask") 99 | (uuid "17342646-ba0d-4203-b09d-2eebf445887f") 100 | ) 101 | (pad "" np_thru_hole circle (at 5.5 0 180) (size 1.9 1.9) (drill 1.9) (layers "*.Cu" "*.Mask") 102 | (uuid "72abedcd-d27a-4d12-be9a-25a58919c9d5") 103 | ) 104 | (pad "1" thru_hole circle (at -5 3.8 180) (size 2.2 2.2) (drill 1.2) (layers "*.Cu" "*.Mask")(remove_unused_layers no) 105 | ${p.from.str} 106 | (uuid "a258088b-354a-4bc4-9b26-102d1f988efc") 107 | ) 108 | (pad "1" thru_hole circle (at -3.81 -2.54) (size 2.5 2.5) (drill 1.5) (layers "*.Cu" "*.Mask")(remove_unused_layers no) 109 | ${p.from.str} 110 | (uuid "e47739ec-b458-4d18-816a-4ac884d99db4") 111 | ) 112 | (pad "2" thru_hole circle (at 0 5.9 180) (size 2.2 2.2) (drill 1.2) (layers "*.Cu" "*.Mask")(remove_unused_layers no) 113 | ${p.to.str} 114 | (uuid "a82c1fd7-778f-43bd-b9ef-82420163dada") 115 | ) 116 | (pad "2" thru_hole circle (at 2.54 -5.08) (size 2.5 2.5) (drill 1.5) (layers "*.Cu" "*.Mask")(remove_unused_layers no) 117 | ${p.to.str} 118 | (uuid "c204a136-7128-4c85-a66f-281343334e03") 119 | ) 120 | ${connections} 121 | )` 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /footprints/power_switch_smd_side.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2023 Marco Massarelli 2 | // 3 | // SPDX-License-Identifier: CC-BY-NC-SA-4.0 4 | // 5 | // Source: 6 | // https://raw.githubusercontent.com/ceoloide/ergogen-footprints/main/power_switch_smd_side.js 7 | // 8 | // To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ 9 | // 10 | // Authors: @infused-kim + @ceoloide improvements 11 | // 12 | // Description: 13 | // SMD side-operated on-off switch, compatible with Alps SSSS811101 as sold on 14 | // Typeractive.xyz and LCSC. These switches are shorter than the height of hotswap sockets, 15 | // so they can be mounted on the same side. 16 | // 17 | // Should be compatible with: 18 | // - G-Switch MK-12C02-G015 (untested) 19 | // - PCM12SMTR (untested) 20 | // 21 | // Datasheet: 22 | // https://cdn.shopify.com/s/files/1/0618/5674/3655/files/ALPS-SSSS811101.pdf?v=1670451309 23 | // 24 | // Nets: 25 | // from: corresponds to pin 1 on the Front and 3 on the back 26 | // to: corresponds to pin 2 on both sides 27 | // 28 | // Params: 29 | // side: default is F for Front 30 | // the side on which to place the single-side footprint and designator, either F (Front) 31 | // or B (Back) 32 | // reversible: default is false 33 | // if true, it will include pads on both Front and Back to make the footprint reversible 34 | // invert_behavior: default is false 35 | // if true, pin 3 will connect to the "from" net, and if false it will connect to pin 1, 36 | // effectively inverting the behavior of the switch. 37 | // include_silkscreen: default is true 38 | // if true it will include silkscreen markings, which is recommended to know which side 39 | // connects Bat+ to RAW. 40 | // include_courtyard: default is false 41 | // if true it will include the courtyard around the component 42 | // switch_3dmodel_filename: default is '' 43 | // Allows you to specify the path to a 3D model STEP or WRL file to be 44 | // used when rendering the PCB. Use the ${VAR_NAME} syntax to point to 45 | // a KiCad configured path. 46 | // switch_3dmodel_xyz_offset: default is [0, 0, 0] 47 | // xyz offset (in mm), used to adjust the position of the 3d model 48 | // relative the footprint. 49 | // switch_3dmodel_xyz_scale: default is [1, 1, 1] 50 | // xyz scale, used to adjust the size of the 3d model relative to its 51 | // original size. 52 | // switch_3dmodel_xyz_rotation: default is [0, 0, 0] 53 | // xyz rotation (in degrees), used to adjust the orientation of the 3d 54 | // model relative the footprint. 55 | // 56 | // @ceoloide's improvements: 57 | // - Add ability to set text on both sides 58 | // - Add ability to adjust font thickness and size 59 | // - Add ability to invert switch behavior / pin connections 60 | // - Invert behavior on opposite layer to maintain consistency 61 | // - Add on/off silkscreen to aid operation 62 | // - Upgrade to KiCad 8 63 | 64 | module.exports = { 65 | params: { 66 | designator: 'PWR', 67 | side: 'F', 68 | reversible: false, 69 | invert_behavior: true, 70 | include_silkscreen: true, 71 | include_courtyard: false, 72 | switch_3dmodel_filename: '', 73 | switch_3dmodel_xyz_offset: [0, 0, 0], 74 | switch_3dmodel_xyz_rotation: [0, 0, 0], 75 | switch_3dmodel_xyz_scale: [1, 1, 1], 76 | from: { type: 'net', value: 'BAT_P' }, 77 | to: { type: 'net', value: 'RAW' }, 78 | }, 79 | body: p => { 80 | const common_start = ` 81 | (footprint "ceoloide:power_switch_smd_side" 82 | (layer "${p.side}.Cu") 83 | ${p.at} 84 | (property "Reference" "${p.ref}" 85 | (at -3.6 0 ${-90 + p.r}) 86 | (layer "${p.side}.SilkS") 87 | ${p.ref_hide} 88 | (effects (font (size 1 1) (thickness 0.15))) 89 | ) 90 | (attr smd) 91 | ` 92 | const silkscreen_front = ` 93 | (fp_text user "ON" (at 0 ${p.invert_behavior ? '-' : ''}5 ${p.r}) (layer "F.SilkS") 94 | (effects (font (size 1 1) (thickness 0.15))) 95 | ) 96 | (fp_text user "OFF" (at 0 ${p.invert_behavior ? '' : '-'}5 ${p.r}) (layer "F.SilkS") 97 | (effects (font (size 1 1) (thickness 0.15))) 98 | ) 99 | (fp_line (start 0.415 -3.45) (end -0.375 -3.45) (layer "F.SilkS") (stroke (width 0.12) (type solid))) 100 | (fp_line (start -0.375 3.45) (end 0.415 3.45) (layer "F.SilkS") (stroke (width 0.12) (type solid))) 101 | (fp_line (start -1.425 1.6) (end -1.425 -0.1) (layer "F.SilkS") (stroke (width 0.12) (type solid))) 102 | (fp_line (start 1.425 2.85) (end 1.425 -2.85) (layer "F.SilkS") (stroke (width 0.12) (type solid))) 103 | (fp_line (start -1.425 -1.4) (end -1.425 -1.6) (layer "F.SilkS") (stroke (width 0.12) (type solid))) 104 | ` 105 | const silkscreen_back = ` 106 | (fp_text user "${p.ref}" (at -3.5 0 ${90 + p.r}) (layer "B.SilkS") ${p.ref_hide} 107 | (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) 108 | ) 109 | (fp_text user "ON" (at 0 ${p.invert_behavior ? '-' : ''}5 ${p.r}) (layer "B.SilkS") 110 | (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) 111 | ) 112 | (fp_text user "OFF" (at 0 ${p.invert_behavior ? '' : '-'}5 ${p.r}) (layer "B.SilkS") 113 | (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) 114 | ) 115 | (fp_line (start -1.425 1.4) (end -1.425 1.6) (layer "B.SilkS") (stroke (width 0.12) (type solid))) 116 | (fp_line (start 0.415 3.45) (end -0.375 3.45) (layer "B.SilkS") (stroke (width 0.12) (type solid))) 117 | (fp_line (start -0.375 -3.45) (end 0.415 -3.45) (layer "B.SilkS") (stroke (width 0.12) (type solid))) 118 | (fp_line (start -1.425 -1.6) (end -1.425 0.1) (layer "B.SilkS") (stroke (width 0.12) (type solid))) 119 | (fp_line (start 1.425 -2.85) (end 1.425 2.85) (layer "B.SilkS") (stroke (width 0.12) (type solid))) 120 | ` 121 | const courtyard_front = ` 122 | (fp_line (start 1.795 4.4) (end -2.755 4.4) (layer "F.CrtYd") (stroke (width 0.05) (type solid))) 123 | (fp_line (start 1.795 1.65) (end 1.795 4.4) (layer "F.CrtYd") (stroke (width 0.05) (type solid))) 124 | (fp_line (start 3.095 1.65) (end 1.795 1.65) (layer "F.CrtYd") (stroke (width 0.05) (type solid))) 125 | (fp_line (start 3.095 -1.65) (end 3.095 1.65) (layer "F.CrtYd") (stroke (width 0.05) (type solid))) 126 | (fp_line (start 1.795 -1.65) (end 3.095 -1.65) (layer "F.CrtYd") (stroke (width 0.05) (type solid))) 127 | (fp_line (start 1.795 -4.4) (end 1.795 -1.65) (layer "F.CrtYd") (stroke (width 0.05) (type solid))) 128 | (fp_line (start -2.755 -4.4) (end 1.795 -4.4) (layer "F.CrtYd") (stroke (width 0.05) (type solid))) 129 | (fp_line (start -2.755 4.4) (end -2.755 -4.4) (layer "F.CrtYd") (stroke (width 0.05) (type solid))) 130 | ` 131 | const courtyard_back = ` 132 | (fp_line (start -2.755 -4.4) (end -2.755 4.4) (layer "B.CrtYd") (stroke (width 0.05) (type solid))) 133 | (fp_line (start 3.095 1.65) (end 3.095 -1.65) (layer "B.CrtYd") (stroke (width 0.05) (type solid))) 134 | (fp_line (start 1.795 1.65) (end 3.095 1.65) (layer "B.CrtYd") (stroke (width 0.05) (type solid))) 135 | (fp_line (start 1.795 -4.4) (end -2.755 -4.4) (layer "B.CrtYd") (stroke (width 0.05) (type solid))) 136 | (fp_line (start 1.795 -1.65) (end 1.795 -4.4) (layer "B.CrtYd") (stroke (width 0.05) (type solid))) 137 | (fp_line (start 3.095 -1.65) (end 1.795 -1.65) (layer "B.CrtYd") (stroke (width 0.05) (type solid))) 138 | (fp_line (start 1.795 4.4) (end 1.795 1.65) (layer "B.CrtYd") (stroke (width 0.05) (type solid))) 139 | (fp_line (start -2.755 4.4) (end 1.795 4.4) (layer "B.CrtYd") (stroke (width 0.05) (type solid))) 140 | ` 141 | 142 | const pads_front = ` 143 | (fp_line (start -1.305 -3.35) (end -1.305 3.35) (layer "F.Fab") (stroke (width 0.1) (type solid))) 144 | (fp_line (start 1.295 -3.35) (end -1.305 -3.35) (layer "F.Fab") (stroke (width 0.1) (type solid))) 145 | (fp_line (start 1.295 3.35) (end 1.295 -3.35) (layer "F.Fab") (stroke (width 0.1) (type solid))) 146 | (fp_line (start -1.305 3.35) (end 1.295 3.35) (layer "F.Fab") (stroke (width 0.1) (type solid))) 147 | (fp_line (start 2.595 0.1) (end 1.295 0.1) (layer "F.Fab") (stroke (width 0.1) (type solid))) 148 | (fp_line (start 2.645 0.15) (end 2.595 0.1) (layer "F.Fab") (stroke (width 0.1) (type solid))) 149 | (fp_line (start 2.845 0.35) (end 2.645 0.15) (layer "F.Fab") (stroke (width 0.1) (type solid))) 150 | (fp_line (start 2.845 1.2) (end 2.845 0.35) (layer "F.Fab") (stroke (width 0.1) (type solid))) 151 | (fp_line (start 2.645 1.4) (end 2.845 1.2) (layer "F.Fab") (stroke (width 0.1) (type solid))) 152 | (fp_line (start 1.345 1.4) (end 2.645 1.4) (layer "F.Fab") (stroke (width 0.1) (type solid))) 153 | (pad "" smd rect (at 1.125 -3.65 ${90 + p.r}) (size 1 0.8) (layers "F.Cu" "F.Paste" "F.Mask")) 154 | (pad "" smd rect (at -1.085 -3.65 ${90 + p.r}) (size 1 0.8) (layers "F.Cu" "F.Paste" "F.Mask")) 155 | (pad "" smd rect (at -1.085 3.65 ${90 + p.r}) (size 1 0.8) (layers "F.Cu" "F.Paste" "F.Mask")) 156 | (pad "" smd rect (at 1.125 3.65 ${90 + p.r}) (size 1 0.8) (layers "F.Cu" "F.Paste" "F.Mask")) 157 | (pad "1" smd rect (at -1.735 2.25 ${90 + p.r}) (size 0.7 1.5) (layers "F.Cu" "F.Paste" "F.Mask") ${p.invert_behavior ? '' : p.from.str}) 158 | (pad "2" smd rect (at -1.735 -0.75 ${90 + p.r}) (size 0.7 1.5) (layers "F.Cu" "F.Paste" "F.Mask") ${p.to.str}) 159 | (pad "3" smd rect (at -1.735 -2.25 ${90 + p.r}) (size 0.7 1.5) (layers "F.Cu" "F.Paste" "F.Mask") ${p.invert_behavior ? p.from.str : ''}) 160 | ` 161 | const pads_back = ` 162 | (fp_line (start 2.595 -0.1) (end 1.295 -0.1) (layer "B.Fab") (stroke (width 0.1) (type solid))) 163 | (fp_line (start -1.305 3.35) (end -1.305 -3.35) (layer "B.Fab") (stroke (width 0.1) (type solid))) 164 | (fp_line (start 2.645 -0.15) (end 2.595 -0.1) (layer "B.Fab") (stroke (width 0.1) (type solid))) 165 | (fp_line (start 2.845 -1.2) (end 2.845 -0.35) (layer "B.Fab") (stroke (width 0.1) (type solid))) 166 | (fp_line (start 1.345 -1.4) (end 2.645 -1.4) (layer "B.Fab") (stroke (width 0.1) (type solid))) 167 | (fp_line (start 2.845 -0.35) (end 2.645 -0.15) (layer "B.Fab") (stroke (width 0.1) (type solid))) 168 | (fp_line (start 2.645 -1.4) (end 2.845 -1.2) (layer "B.Fab") (stroke (width 0.1) (type solid))) 169 | (fp_line (start 1.295 -3.35) (end 1.295 3.35) (layer "B.Fab") (stroke (width 0.1) (type solid))) 170 | (fp_line (start 1.295 3.35) (end -1.305 3.35) (layer "B.Fab") (stroke (width 0.1) (type solid))) 171 | (fp_line (start -1.305 -3.35) (end 1.295 -3.35) (layer "B.Fab") (stroke (width 0.1) (type solid))) 172 | (pad "" smd rect (at -1.085 -3.65 ${270 + p.r}) (size 1 0.8) (layers "B.Cu" "B.Paste" "B.Mask")) 173 | (pad "" smd rect (at 1.125 -3.65 ${270 + p.r}) (size 1 0.8) (layers "B.Cu" "B.Paste" "B.Mask")) 174 | (pad "" smd rect (at -1.085 3.65 ${270 + p.r}) (size 1 0.8) (layers "B.Cu" "B.Paste" "B.Mask")) 175 | (pad "" smd rect (at 1.125 3.65 ${270 + p.r}) (size 1 0.8) (layers "B.Cu" "B.Paste" "B.Mask")) 176 | (pad "1" smd rect (at -1.735 -2.25 ${270 + p.r}) (size 0.7 1.5) (layers "B.Cu" "B.Paste" "B.Mask") ${p.invert_behavior ? p.from.str : ''}) 177 | (pad "2" smd rect (at -1.735 0.75 ${270 + p.r}) (size 0.7 1.5) (layers "B.Cu" "B.Paste" "B.Mask") ${p.to.str}) 178 | (pad "3" smd rect (at -1.735 2.25 ${270 + p.r}) (size 0.7 1.5) (layers "B.Cu" "B.Paste" "B.Mask") ${p.invert_behavior ? '' : p.from.str}) 179 | ` 180 | const common_end = ` 181 | (pad "" np_thru_hole circle (at 0.025 -1.5 ${90 + p.r}) (size 0.9 0.9) (drill 0.9) (layers "*.Cu" "*.Mask")) 182 | (pad "" np_thru_hole circle (at 0.025 1.5 ${90 + p.r}) (size 0.9 0.9) (drill 0.9) (layers "*.Cu" "*.Mask")) 183 | ) 184 | ` 185 | 186 | const switch_3dmodel = ` 187 | (model ${p.switch_3dmodel_filename} 188 | (offset (xyz ${p.switch_3dmodel_xyz_offset[0]} ${p.switch_3dmodel_xyz_offset[1]} ${p.switch_3dmodel_xyz_offset[2]})) 189 | (scale (xyz ${p.switch_3dmodel_xyz_scale[0]} ${p.switch_3dmodel_xyz_scale[1]} ${p.switch_3dmodel_xyz_scale[2]})) 190 | (rotate (xyz ${p.switch_3dmodel_xyz_rotation[0]} ${p.switch_3dmodel_xyz_rotation[1]} ${p.switch_3dmodel_xyz_rotation[2]})) 191 | ) 192 | ` 193 | 194 | let final = common_start; 195 | if (p.side == "F" || p.reversible) { 196 | final += pads_front 197 | if (p.include_silkscreen) { 198 | final += silkscreen_front 199 | } 200 | if (p.include_courtyard) { 201 | final += courtyard_front 202 | } 203 | } 204 | if (p.side == "B" || p.reversible) { 205 | final += pads_back 206 | if (p.include_silkscreen) { 207 | final += silkscreen_back 208 | } 209 | if (p.include_courtyard) { 210 | final += courtyard_back 211 | } 212 | } 213 | 214 | if (p.switch_3dmodel_filename) { 215 | final += switch_3dmodel 216 | } 217 | 218 | final += common_end; 219 | return final; 220 | } 221 | } 222 | -------------------------------------------------------------------------------- /footprints/promicro_nrf.js: -------------------------------------------------------------------------------- 1 | // Arduino ProMicro NRF52840 2 | // Should be compatible with Nice!Nano v2 3 | // Based on original ProMicro footprint 4 | // NB: Pins 101, 102 and 1070 are not exposed 5 | // B 6 | // Params 7 | // orientation: default is down 8 | // if down, power led will face the pcb 9 | // if up, power led will face away from pcb 10 | 11 | module.exports = { 12 | params: { 13 | designator: 'MCU', 14 | orientation: 'down', 15 | RAW: { type: 'net', value: 'RAW' }, 16 | GND: { type: 'net', value: 'GND' }, 17 | RST: { type: 'net', value: 'RST' }, 18 | VCC: { type: 'net', value: 'VCC' }, 19 | // Left Side 20 | // p0.06 D1 21 | P006: { type: 'net', value: 'P006' }, 22 | // p0.08 D0 23 | P008: { type: 'net', value: 'P008' }, 24 | // p0.17 D2 25 | P017: { type: 'net', value: 'P017' }, 26 | // p0.20 D3 27 | P020: { type: 'net', value: 'P020' }, 28 | // p0.22 D4 29 | P022: { type: 'net', value: 'P022' }, 30 | // p0.24 D5 31 | P024: { type: 'net', value: 'P024' }, 32 | // p1.00 D6 33 | P100: { type: 'net', value: 'P100' }, 34 | // p0.11 D7 35 | P011: { type: 'net', value: 'P011' }, 36 | // p1.04 D8 37 | P104: { type: 'net', value: 'P104' }, 38 | // p1.06 D9 39 | P106: { type: 'net', value: 'P106' }, 40 | // Right Side 41 | // p0.31 D21 42 | P031: { type: 'net', value: 'P031' }, 43 | // p0.29 D20 44 | P029: { type: 'net', value: 'P029' }, 45 | // p0.02 D19 46 | P002: { type: 'net', value: 'P002' }, 47 | // p1.15 D18 48 | P115: { type: 'net', value: 'P115' }, 49 | // p1.13 D15 50 | P113: { type: 'net', value: 'P113' }, 51 | // p1.11 D14 52 | P111: { type: 'net', value: 'P111' }, 53 | // p0.10 D16 54 | P010: { type: 'net', value: 'P010' }, 55 | // p0.09 D10 56 | P009: { type: 'net', value: 'P009' }, 57 | 58 | }, 59 | body: p => { 60 | const standard = ` 61 | (module ProMicro (layer F.Cu) (tedit 5B307E4C) 62 | ${p.at /* parametric position */} 63 | 64 | ${'' /* footprint reference */} 65 | (fp_text reference "${p.ref}" (at 0 0) (layer F.SilkS) ${p.ref_hide} (effects (font (size 1.27 1.27) (thickness 0.15)))) 66 | (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) 67 | 68 | ${''/* illustration of the (possible) USB port overhang */} 69 | (fp_line (start -19.304 -3.81) (end -14.224 -3.81) (layer Dwgs.User) (width 0.15)) 70 | (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) 71 | (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) 72 | (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) 73 | 74 | ${''/* component outline */} 75 | (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) 76 | (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) 77 | (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) 78 | (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) 79 | ` 80 | function pins(def_neg, def_pos) { 81 | return ` 82 | ${''/* extra border around "RAW and BAT+", in case the rectangular shape is not distinctive enough */} 83 | (fp_line (start -17.78 ${def_pos}6.35) (end -12.7 ${def_pos}6.35) (layer F.SilkS) (width 0.15)) 84 | (fp_line (start -12.7 ${def_pos}6.35) (end -12.7 ${def_pos}8.89) (layer F.SilkS) (width 0.15)) 85 | 86 | ${''/* pin names */} 87 | (fp_text user BAT+ (at -16.51 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 88 | (fp_text user RAW (at -13.97 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 89 | (fp_text user GND (at -11.43 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 90 | (fp_text user RST (at -8.89 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 91 | (fp_text user VCC (at -6.35 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 92 | (fp_text user P031 (at -3.81 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 93 | (fp_text user P029 (at -1.27 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 94 | (fp_text user P002 (at 1.27 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 95 | (fp_text user P115 (at 3.81 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 96 | (fp_text user P113 (at 6.35 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 97 | (fp_text user P111 (at 8.89 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 98 | (fp_text user P010 (at 11.43 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 99 | (fp_text user P009 (at 13.97 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 100 | 101 | (fp_text user BAT- (at -16.51 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 102 | (fp_text user P006 (at -13.97 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 103 | (fp_text user P008 (at -11.43 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 104 | (fp_text user GND (at -8.89 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 105 | (fp_text user GND (at -6.35 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 106 | (fp_text user P017 (at -3.81 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 107 | (fp_text user P020 (at -1.27 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 108 | (fp_text user P022 (at 1.27 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 109 | (fp_text user P024 (at 3.81 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 110 | (fp_text user P100 (at 6.35 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 111 | (fp_text user P011 (at 8.89 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 112 | (fp_text user P104 (at 11.43 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 113 | (fp_text user P106 (at 13.97 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) 114 | 115 | ${''/* and now the actual pins */} 116 | (pad 1 thru_hole rect (at -16.51 ${def_pos}7.62 ${p.r}) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RAW}) 117 | (pad 2 thru_hole circle (at -13.97 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RAW}) 118 | (pad 3 thru_hole circle (at -11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND}) 119 | (pad 4 thru_hole circle (at -8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RST}) 120 | (pad 5 thru_hole circle (at -6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.VCC}) 121 | (pad 6 thru_hole circle (at -3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P031}) 122 | (pad 7 thru_hole circle (at -1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P029}) 123 | (pad 8 thru_hole circle (at 1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P002}) 124 | (pad 9 thru_hole circle (at 3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P115}) 125 | (pad 10 thru_hole circle (at 6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P113}) 126 | (pad 11 thru_hole circle (at 8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P111}) 127 | (pad 12 thru_hole circle (at 11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P010}) 128 | (pad 13 thru_hole circle (at 13.97 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P009}) 129 | 130 | (pad 14 thru_hole circle (at -16.51 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND}) 131 | (pad 15 thru_hole circle (at -13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P006}) 132 | (pad 16 thru_hole circle (at -11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P008}) 133 | (pad 17 thru_hole circle (at -8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND}) 134 | (pad 18 thru_hole circle (at -6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND}) 135 | (pad 19 thru_hole circle (at -3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P017}) 136 | (pad 20 thru_hole circle (at -1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P020}) 137 | (pad 21 thru_hole circle (at 1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P022}) 138 | (pad 22 thru_hole circle (at 3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P024}) 139 | (pad 23 thru_hole circle (at 6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P100}) 140 | (pad 24 thru_hole circle (at 8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P011}) 141 | (pad 25 thru_hole circle (at 11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P104}) 142 | (pad 26 thru_hole circle (at 13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P106}) 143 | ` 144 | } 145 | if (p.orientation == 'down') { 146 | return ` 147 | ${standard} 148 | ${pins('-', '')}) 149 | ` 150 | } else { 151 | return ` 152 | ${standard} 153 | ${pins('', '-')}) 154 | ` 155 | } 156 | } 157 | } 158 | -------------------------------------------------------------------------------- /footprints/text.js: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 https://github.com/soundmonster 2 | // SPDX-License-Identifier: MIT 3 | module.exports = { 4 | params: { 5 | layer: 'F.SilkS', 6 | text: '', 7 | h_size: 1, 8 | v_size: 1, 9 | thickness: 0.15, 10 | justify: '', 11 | }, 12 | body: p => { 13 | let justify = p.justify ? `(justify ${p.justify})` : ''; 14 | return ` 15 | (gr_text "${p.text}" ${p.at} (layer ${p.layer}) 16 | (effects (font (size ${p.h_size} ${p.v_size}) (thickness ${p.thickness})) ${justify}) 17 | ) 18 | ` 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /footprints/thru_hole_pad.js: -------------------------------------------------------------------------------- 1 | 2 | module.exports = { 3 | params: { 4 | net: undefined, 5 | }, 6 | body: p => ` 7 | (module PAD-1.0922mm (layer F.Cu) (tedit 591DBFB0) 8 | ${p.at /* parametric position */} 9 | 10 | (pad 1 thru_hole circle (at 0 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net ? p.net.str : ''}) 11 | ) 12 | ` 13 | } 14 | -------------------------------------------------------------------------------- /images/crb_v2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kumekay/crabapplepad/3208f54d65daefd344864523d70714aa9cf61db7/images/crb_v2.jpeg -------------------------------------------------------------------------------- /outlines/Key holder.3mf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kumekay/crabapplepad/3208f54d65daefd344864523d70714aa9cf61db7/outlines/Key holder.3mf -------------------------------------------------------------------------------- /outlines/board.dxf: -------------------------------------------------------------------------------- 1 | 0 2 | SECTION 3 | 2 4 | HEADER 5 | 9 6 | $INSUNITS 7 | 70 8 | 4 9 | 0 10 | ENDSEC 11 | 0 12 | SECTION 13 | 2 14 | TABLES 15 | 0 16 | TABLE 17 | 2 18 | LTYPE 19 | 0 20 | LTYPE 21 | 72 22 | 65 23 | 70 24 | 64 25 | 2 26 | CONTINUOUS 27 | 3 28 | ______ 29 | 73 30 | 0 31 | 40 32 | 0 33 | 0 34 | ENDTAB 35 | 0 36 | TABLE 37 | 2 38 | LAYER 39 | 0 40 | ENDTAB 41 | 0 42 | ENDSEC 43 | 0 44 | SECTION 45 | 2 46 | ENTITIES 47 | 0 48 | LINE 49 | 8 50 | 0 51 | 10 52 | 40.8078521 53 | 20 54 | -136.3126524 55 | 11 56 | 62.9637643 57 | 21 58 | -81.4748454 59 | 0 60 | LINE 61 | 8 62 | 0 63 | 10 64 | 64.4144675 65 | 20 66 | -80.4745521 67 | 11 68 | 125.0210592 69 | 21 70 | -79.2321976 71 | 0 72 | LINE 73 | 8 74 | 0 75 | 10 76 | 125.6532208 77 | 20 78 | -79.3483673 79 | 11 80 | 180.8771557 81 | 21 82 | -101.6602853 83 | 0 84 | LINE 85 | 8 86 | 0 87 | 10 88 | 181.4765262 89 | 20 90 | -101.7767911 91 | 11 92 | 187.5752428 93 | 21 94 | -101.7767911 95 | 0 96 | LINE 97 | 8 98 | 0 99 | 10 100 | 204.7752428 101 | 20 102 | -101.7767911 103 | 11 104 | 210.8739594 105 | 21 106 | -101.7767911 107 | 0 108 | LINE 109 | 8 110 | 0 111 | 10 112 | 211.4733299 113 | 20 114 | -101.6602853 115 | 11 116 | 266.6972648 117 | 21 118 | -79.3483673 119 | 0 120 | LINE 121 | 8 122 | 0 123 | 10 124 | 267.3294264 125 | 20 126 | -79.2321976 127 | 11 128 | 327.9360181 129 | 21 130 | -80.4745521 131 | 0 132 | LINE 133 | 8 134 | 0 135 | 10 136 | 329.3867213 137 | 20 138 | -81.4748454 139 | 11 140 | 351.5426335 141 | 21 142 | -136.3126524 143 | 0 144 | LINE 145 | 8 146 | 0 147 | 10 148 | 350.6585098 149 | 20 150 | -138.3955171 151 | 11 152 | 222.6246264 153 | 21 154 | -190.1245638 155 | 0 156 | LINE 157 | 8 158 | 0 159 | 10 160 | 222.0252559 161 | 20 162 | -190.2410696 163 | 11 164 | 213.7752428 165 | 21 166 | -190.2410696 167 | 0 168 | LINE 169 | 8 170 | 0 171 | 10 172 | 178.5752428 173 | 20 174 | -190.2410696 175 | 11 176 | 170.3252297 177 | 21 178 | -190.2410696 179 | 0 180 | LINE 181 | 8 182 | 0 183 | 10 184 | 169.7258592 185 | 20 186 | -190.1245638 187 | 11 188 | 41.6919758 189 | 21 190 | -138.3955171 191 | 0 192 | ARC 193 | 8 194 | 0 195 | 10 196 | 64.4472585 197 | 20 198 | -82.074216 199 | 40 200 | 1.6 201 | 50 202 | 91.1743248 203 | 51 204 | 157.9999988 205 | 0 206 | ARC 207 | 8 208 | 0 209 | 10 210 | 125.0538502 211 | 20 212 | -80.8318615 213 | 40 214 | 1.6 215 | 50 216 | 68.0000006 217 | 51 218 | 91.1743248 219 | 0 220 | ARC 221 | 8 222 | 0 223 | 10 224 | 181.4765262 225 | 20 226 | -100.1767911 227 | 40 228 | 1.6 229 | 50 230 | 248.0000006 231 | 51 232 | 270 233 | 0 234 | ARC 235 | 8 236 | 0 237 | 10 238 | 210.8739594 239 | 20 240 | -100.1767911 241 | 40 242 | 1.6 243 | 50 244 | 270 245 | 51 246 | 291.9999994 247 | 0 248 | ARC 249 | 8 250 | 0 251 | 10 252 | 267.2966354 253 | 20 254 | -80.8318615 255 | 40 256 | 1.6 257 | 50 258 | 88.8256752 259 | 51 260 | 111.9999994 261 | 0 262 | ARC 263 | 8 264 | 0 265 | 10 266 | 327.9032271 267 | 20 268 | -82.074216 269 | 40 270 | 1.6 271 | 50 272 | 22.0000012 273 | 51 274 | 88.8256752 275 | 0 276 | ARC 277 | 8 278 | 0 279 | 10 280 | 350.0591393 281 | 20 282 | -136.912023 283 | 40 284 | 1.6 285 | 50 286 | 292.0000012 287 | 51 288 | 21.9999994 289 | 0 290 | ARC 291 | 8 292 | 0 293 | 10 294 | 222.0252559 295 | 20 296 | -188.6410696 297 | 40 298 | 1.6 299 | 50 300 | 270 301 | 51 302 | 291.9999994 303 | 0 304 | ARC 305 | 8 306 | 0 307 | 10 308 | 170.3252297 309 | 20 310 | -188.6410696 311 | 40 312 | 1.6 313 | 50 314 | 248.0000006 315 | 51 316 | 270 317 | 0 318 | ARC 319 | 8 320 | 0 321 | 10 322 | 42.2913463 323 | 20 324 | -136.912023 325 | 40 326 | 1.6 327 | 50 328 | 158.0000006 329 | 51 330 | 247.9999988 331 | 0 332 | LINE 333 | 8 334 | 0 335 | 10 336 | 190.7752428 337 | 20 338 | -107.2596662 339 | 11 340 | 201.5752428 341 | 21 342 | -107.2596662 343 | 0 344 | LINE 345 | 8 346 | 0 347 | 10 348 | 203.1752428 349 | 20 350 | -105.6596662 351 | 11 352 | 203.1752428 353 | 21 354 | -103.3767911 355 | 0 356 | LINE 357 | 8 358 | 0 359 | 10 360 | 189.1752428 361 | 20 362 | -103.3767911 363 | 11 364 | 189.1752428 365 | 21 366 | -105.6596662 367 | 0 368 | ARC 369 | 8 370 | 0 371 | 10 372 | 187.5752428 373 | 20 374 | -103.3767911 375 | 40 376 | 1.6 377 | 50 378 | 0 379 | 51 380 | 90 381 | 0 382 | ARC 383 | 8 384 | 0 385 | 10 386 | 190.7752428 387 | 20 388 | -105.6596662 389 | 40 390 | 1.6 391 | 50 392 | 180 393 | 51 394 | 270 395 | 0 396 | ARC 397 | 8 398 | 0 399 | 10 400 | 201.5752428 401 | 20 402 | -105.6596662 403 | 40 404 | 1.6 405 | 50 406 | 270 407 | 51 408 | 0 409 | 0 410 | ARC 411 | 8 412 | 0 413 | 10 414 | 204.7752428 415 | 20 416 | -103.3767911 417 | 40 418 | 1.6 419 | 50 420 | 90 421 | 51 422 | 180 423 | 0 424 | LINE 425 | 8 426 | 0 427 | 10 428 | 180.9752428 429 | 20 430 | -123.7996662 431 | 11 432 | 181.3752428 433 | 21 434 | -123.7996662 435 | 0 436 | LINE 437 | 8 438 | 0 439 | 10 440 | 182.1752428 441 | 20 442 | -122.9996662 443 | 11 444 | 182.1752428 445 | 21 446 | -108.5996662 447 | 0 448 | LINE 449 | 8 450 | 0 451 | 10 452 | 181.3752428 453 | 20 454 | -107.7996662 455 | 11 456 | 180.9752428 457 | 21 458 | -107.7996662 459 | 0 460 | LINE 461 | 8 462 | 0 463 | 10 464 | 180.1752428 465 | 20 466 | -108.5996662 467 | 11 468 | 180.1752428 469 | 21 470 | -122.9996662 471 | 0 472 | ARC 473 | 8 474 | 0 475 | 10 476 | 63.7055114 477 | 20 478 | -81.7745307 479 | 40 480 | 0.8 481 | 50 482 | 157.9999988 483 | 51 484 | 158.0000006 485 | 0 486 | ARC 487 | 8 488 | 0 489 | 10 490 | 328.6449742 491 | 20 492 | -81.7745307 493 | 40 494 | 0.8 495 | 50 496 | 21.9999994 497 | 51 498 | 22.0000012 499 | 0 500 | ARC 501 | 8 502 | 0 503 | 10 504 | 350.3588246 505 | 20 506 | -137.6537701 507 | 40 508 | 0.8 509 | 50 510 | 291.9999994 511 | 51 512 | 292.0000012 513 | 0 514 | ARC 515 | 8 516 | 0 517 | 10 518 | 41.991661 519 | 20 520 | -137.6537701 521 | 40 522 | 0.8 523 | 50 524 | 247.9999988 525 | 51 526 | 248.0000006 527 | 0 528 | ARC 529 | 8 530 | 0 531 | 10 532 | 181.3752428 533 | 20 534 | -122.9996662 535 | 40 536 | 0.8 537 | 50 538 | 270 539 | 51 540 | 0 541 | 0 542 | ARC 543 | 8 544 | 0 545 | 10 546 | 181.3752428 547 | 20 548 | -108.5996662 549 | 40 550 | 0.8 551 | 50 552 | 0 553 | 51 554 | 90 555 | 0 556 | ARC 557 | 8 558 | 0 559 | 10 560 | 180.9752428 561 | 20 562 | -108.5996662 563 | 40 564 | 0.8 565 | 50 566 | 90 567 | 51 568 | 180 569 | 0 570 | ARC 571 | 8 572 | 0 573 | 10 574 | 180.9752428 575 | 20 576 | -122.9996662 577 | 40 578 | 0.8 579 | 50 580 | 180 581 | 51 582 | 270 583 | 0 584 | LINE 585 | 8 586 | 0 587 | 10 588 | 210.9752428 589 | 20 590 | -123.7996662 591 | 11 592 | 211.3752428 593 | 21 594 | -123.7996662 595 | 0 596 | LINE 597 | 8 598 | 0 599 | 10 600 | 212.1752428 601 | 20 602 | -122.9996662 603 | 11 604 | 212.1752428 605 | 21 606 | -108.5996662 607 | 0 608 | LINE 609 | 8 610 | 0 611 | 10 612 | 211.3752428 613 | 20 614 | -107.7996662 615 | 11 616 | 210.9752428 617 | 21 618 | -107.7996662 619 | 0 620 | LINE 621 | 8 622 | 0 623 | 10 624 | 210.1752428 625 | 20 626 | -108.5996662 627 | 11 628 | 210.1752428 629 | 21 630 | -122.9996662 631 | 0 632 | ARC 633 | 8 634 | 0 635 | 10 636 | 211.3752428 637 | 20 638 | -122.9996662 639 | 40 640 | 0.8 641 | 50 642 | 270 643 | 51 644 | 0 645 | 0 646 | ARC 647 | 8 648 | 0 649 | 10 650 | 211.3752428 651 | 20 652 | -108.5996662 653 | 40 654 | 0.8 655 | 50 656 | 0 657 | 51 658 | 90 659 | 0 660 | ARC 661 | 8 662 | 0 663 | 10 664 | 210.9752428 665 | 20 666 | -108.5996662 667 | 40 668 | 0.8 669 | 50 670 | 90 671 | 51 672 | 180 673 | 0 674 | ARC 675 | 8 676 | 0 677 | 10 678 | 210.9752428 679 | 20 680 | -122.9996662 681 | 40 682 | 0.8 683 | 50 684 | 180 685 | 51 686 | 270 687 | 0 688 | LINE 689 | 8 690 | 0 691 | 10 692 | 180.9752428 693 | 20 694 | -178.2996662 695 | 11 696 | 181.3752428 697 | 21 698 | -178.2996662 699 | 0 700 | LINE 701 | 8 702 | 0 703 | 10 704 | 182.1752428 705 | 20 706 | -177.4996662 707 | 11 708 | 182.1752428 709 | 21 710 | -150.0996662 711 | 0 712 | LINE 713 | 8 714 | 0 715 | 10 716 | 181.3752428 717 | 20 718 | -149.2996662 719 | 11 720 | 180.9752428 721 | 21 722 | -149.2996662 723 | 0 724 | LINE 725 | 8 726 | 0 727 | 10 728 | 180.1752428 729 | 20 730 | -150.0996662 731 | 11 732 | 180.1752428 733 | 21 734 | -177.4996662 735 | 0 736 | ARC 737 | 8 738 | 0 739 | 10 740 | 181.3752428 741 | 20 742 | -177.4996662 743 | 40 744 | 0.8 745 | 50 746 | 270 747 | 51 748 | 0 749 | 0 750 | ARC 751 | 8 752 | 0 753 | 10 754 | 181.3752428 755 | 20 756 | -150.0996662 757 | 40 758 | 0.8 759 | 50 760 | 0 761 | 51 762 | 90 763 | 0 764 | ARC 765 | 8 766 | 0 767 | 10 768 | 180.9752428 769 | 20 770 | -150.0996662 771 | 40 772 | 0.8 773 | 50 774 | 90 775 | 51 776 | 180 777 | 0 778 | ARC 779 | 8 780 | 0 781 | 10 782 | 180.9752428 783 | 20 784 | -177.4996662 785 | 40 786 | 0.8 787 | 50 788 | 180 789 | 51 790 | 270 791 | 0 792 | LINE 793 | 8 794 | 0 795 | 10 796 | 210.9752428 797 | 20 798 | -178.2996662 799 | 11 800 | 211.3752428 801 | 21 802 | -178.2996662 803 | 0 804 | LINE 805 | 8 806 | 0 807 | 10 808 | 212.1752428 809 | 20 810 | -177.4996662 811 | 11 812 | 212.1752428 813 | 21 814 | -150.0996662 815 | 0 816 | LINE 817 | 8 818 | 0 819 | 10 820 | 211.3752428 821 | 20 822 | -149.2996662 823 | 11 824 | 210.9752428 825 | 21 826 | -149.2996662 827 | 0 828 | LINE 829 | 8 830 | 0 831 | 10 832 | 210.1752428 833 | 20 834 | -150.0996662 835 | 11 836 | 210.1752428 837 | 21 838 | -177.4996662 839 | 0 840 | ARC 841 | 8 842 | 0 843 | 10 844 | 211.3752428 845 | 20 846 | -177.4996662 847 | 40 848 | 0.8 849 | 50 850 | 270 851 | 51 852 | 0 853 | 0 854 | ARC 855 | 8 856 | 0 857 | 10 858 | 211.3752428 859 | 20 860 | -150.0996662 861 | 40 862 | 0.8 863 | 50 864 | 0 865 | 51 866 | 90 867 | 0 868 | ARC 869 | 8 870 | 0 871 | 10 872 | 210.9752428 873 | 20 874 | -150.0996662 875 | 40 876 | 0.8 877 | 50 878 | 90 879 | 51 880 | 180 881 | 0 882 | ARC 883 | 8 884 | 0 885 | 10 886 | 210.9752428 887 | 20 888 | -177.4996662 889 | 40 890 | 0.8 891 | 50 892 | 180 893 | 51 894 | 270 895 | 0 896 | LINE 897 | 8 898 | 0 899 | 10 900 | 212.1752428 901 | 20 902 | -188.6410696 903 | 11 904 | 212.1752428 905 | 21 906 | -182.3996662 907 | 0 908 | LINE 909 | 8 910 | 0 911 | 10 912 | 210.5752428 913 | 20 914 | -180.7996662 915 | 11 916 | 181.7752428 917 | 21 918 | -180.7996662 919 | 0 920 | LINE 921 | 8 922 | 0 923 | 10 924 | 180.1752428 925 | 20 926 | -182.3996662 927 | 11 928 | 180.1752428 929 | 21 930 | -188.6410696 931 | 0 932 | ARC 933 | 8 934 | 0 935 | 10 936 | 213.7752428 937 | 20 938 | -188.6410696 939 | 40 940 | 1.6 941 | 50 942 | 180 943 | 51 944 | 270 945 | 0 946 | ARC 947 | 8 948 | 0 949 | 10 950 | 210.5752428 951 | 20 952 | -182.3996662 953 | 40 954 | 1.6 955 | 50 956 | 0 957 | 51 958 | 90 959 | 0 960 | ARC 961 | 8 962 | 0 963 | 10 964 | 181.7752428 965 | 20 966 | -182.3996662 967 | 40 968 | 1.6 969 | 50 970 | 90 971 | 51 972 | 180 973 | 0 974 | ARC 975 | 8 976 | 0 977 | 10 978 | 178.5752428 979 | 20 980 | -188.6410696 981 | 40 982 | 1.6 983 | 50 984 | 270 985 | 51 986 | 0 987 | 0 988 | CIRCLE 989 | 8 990 | 0 991 | 10 992 | 185.6752428 993 | 20 994 | -104.7996662 995 | 40 996 | 1.1 997 | 0 998 | CIRCLE 999 | 8 1000 | 0 1001 | 10 1002 | 206.6752428 1003 | 20 1004 | -104.7996662 1005 | 40 1006 | 1.1 1007 | 0 1008 | CIRCLE 1009 | 8 1010 | 0 1011 | 10 1012 | 185.6752428 1013 | 20 1014 | -176.7996662 1015 | 40 1016 | 1.1 1017 | 0 1018 | CIRCLE 1019 | 8 1020 | 0 1021 | 10 1022 | 206.6752428 1023 | 20 1024 | -176.7996662 1025 | 40 1026 | 1.1 1027 | 0 1028 | CIRCLE 1029 | 8 1030 | 0 1031 | 10 1032 | 173.7232828 1033 | 20 1034 | -103.2458522 1035 | 40 1036 | 1.1 1037 | 0 1038 | CIRCLE 1039 | 8 1040 | 0 1041 | 10 1042 | 175.9129728 1043 | 20 1044 | -184.0499688 1045 | 40 1046 | 1.1 1047 | 0 1048 | CIRCLE 1049 | 8 1050 | 0 1051 | 10 1052 | 96.8515372 1053 | 20 1054 | -90.630595 1055 | 40 1056 | 1.1 1057 | 0 1058 | CIRCLE 1059 | 8 1060 | 0 1061 | 10 1062 | 106.9059689 1063 | 20 1064 | -141.8248173 1065 | 40 1066 | 1.1 1067 | 0 1068 | CIRCLE 1069 | 8 1070 | 0 1071 | 10 1072 | 218.6272028 1073 | 20 1074 | -103.2458522 1075 | 40 1076 | 1.1 1077 | 0 1078 | CIRCLE 1079 | 8 1080 | 0 1081 | 10 1082 | 216.4375128 1083 | 20 1084 | -184.0499688 1085 | 40 1086 | 1.1 1087 | 0 1088 | CIRCLE 1089 | 8 1090 | 0 1091 | 10 1092 | 295.4989484 1093 | 20 1094 | -90.630595 1095 | 40 1096 | 1.1 1097 | 0 1098 | CIRCLE 1099 | 8 1100 | 0 1101 | 10 1102 | 285.4445167 1103 | 20 1104 | -141.8248173 1105 | 40 1106 | 1.1 1107 | 0 1108 | ENDSEC 1109 | 0 1110 | EOF -------------------------------------------------------------------------------- /pcbs/board2pdf.config.ini: -------------------------------------------------------------------------------- 1 | [main] 2 | output_dest_dir = plots 3 | enabled_templates = Black-And-White-TOP,Black-And-White-BOT 4 | disabled_templates = Colored-BOT,Colored-TOP,Light-Colors-PCB-Fabrication-TOP,Light-Colors-PCB-Paste-TOP,Light-Colors-Placement-BOT,Light-Colors-Placement-TOP 5 | settings = {"Black-And-White-BOT": {"mirrored": true, "tented": false, "enabled_layers": "Edge.Cuts,B.Fab,B.Silkscreen,B.Paste,B.Cu", "frame": "B.Fab", "layers": {"B.Cu": "#F0F0F0", "B.Paste": "#C4C4C4", "Edge.Cuts": "#575757", "B.Fab": "#000000"}, "layers_negative": {"B.Fab": "false"}}, "Black-And-White-TOP": {"mirrored": false, "tented": false, "enabled_layers": "User.Eco1,Edge.Cuts,F.Fab,F.Silkscreen,F.Paste,F.Cu", "frame": "F.Fab", "layers": {"F.Cu": "#F0F0F0", "F.Paste": "#C4C4C4", "Edge.Cuts": "#575757", "User.Eco1": "#000000", "F.Silkscreen": "#000000", "F.Fab": "#000000"}, "layers_negative": {"User.Eco1": "false", "Edge.Cuts": "false", "F.Silkscreen": "false", "F.Paste": "false", "F.Cu": "false", "F.Fab": "false"}}, "Colored-TOP": {"mirrored": false, "tented": false, "enabled_layers": "User.Eco1,Edge.Cuts,F.Fab,F.Silkscreen,F.Paste,F.Cu", "frame": "F.Fab", "layers": {"F.Cu": "#B3FFB3", "F.Paste": "#FF8A8A", "F.Silkscreen": "#626262", "Edge.Cuts": "#FF8000", "User.Eco1": "#000080", "F.Fab": "#000080"}, "layers_negative": {"Edge.Cuts": "false", "User.Eco1": "false", "F.Fab": "false"}}, "Colored-BOT": {"mirrored": true, "tented": false, "enabled_layers": "Edge.Cuts,B.Fab,B.Silkscreen,B.Paste,B.Cu", "frame": "B.Fab", "layers": {"F.Fab": "#000080", "User.Eco1": "#000080", "Edge.Cuts": "#FF8000", "B.Silkscreen": "#626262", "B.Paste": "#FF8A8A", "B.Cu": "#B3FFB3", "B.Fab": "#000080"}, "layers_negative": {"B.Fab": "false", "B.Cu": "false", "B.Paste": "false", "B.Silkscreen": "false", "Edge.Cuts": "false"}}, "Light-Colors-Placement-TOP": {"mirrored": false, "tented": false, "enabled_layers": "Margin,Edge.Cuts,F.Fab,F.Silkscreen,F.Paste,F.Mask,F.Cu", "frame": "Margin", "layers": {"B.Courtyard": "#000000", "Edge.Cuts": "#804000", "User.Comments": "#0080FF", "F.Fab": "#222222", "F.Cu": "#EEEEEE", "F.Paste": "#A8A8A8", "F.Silkscreen": "#CCCCAA", "Margin": "#000000", "F.Mask": "#C0C0C0", "B.Cu": "#EEEEEE", "B.Fab": "#808080", "B.Silkscreen": "#000000", "B.Paste": "#A8A8A8", "B.Mask": "#C0C0C0"}, "layers_negative": {"B.Courtyard": "false", "Edge.Cuts": "false", "User.Comments": "false", "F.Fab": "false", "F.Cu": "false", "F.Paste": "false", "F.Silkscreen": "false", "Margin": "false", "F.Mask": "false", "B.Cu": "false", "B.Fab": "false", "B.Silkscreen": "false", "B.Paste": "false", "B.Mask": "false"}}, "Light-Colors-PCB-Fabrication-TOP": {"mirrored": false, "tented": false, "enabled_layers": "Margin,User.Comments,User.Drawings,Edge.Cuts,F.Silkscreen,F.Mask,F.Cu", "frame": "Margin", "layers": {"Edge.Cuts": "#804000", "F.Silkscreen": "#DDDDDD", "B.Silkscreen": "#000000", "F.Fab": "#808080", "F.Mask": "#D0D0D0", "User.Comments": "#00008A", "User.Drawings": "#EFEFBA", "F.Cu": "#EEEEEE", "B.Cu": "#C6C6FF", "In30.Cu": "#000000", "Margin": "#830000", "F.Paste": "#400000"}, "layers_negative": {"Edge.Cuts": "false", "F.Silkscreen": "false", "B.Silkscreen": "false", "F.Fab": "false", "F.Mask": "false", "User.Comments": "false", "User.Drawings": "false", "F.Cu": "false", "B.Cu": "false", "In30.Cu": "false", "Margin": "false", "F.Paste": "false"}}, "Light-Colors-PCB-Paste-TOP": {"mirrored": false, "tented": false, "enabled_layers": "Margin,Edge.Cuts,F.Paste,F.Mask,F.Cu", "frame": "Margin", "layers": {"Edge.Cuts": "#635547", "F.Silkscreen": "#DDDDDD", "B.Silkscreen": "#000000", "F.Fab": "#808080", "F.Mask": "#D0D0D0", "User.Comments": "#00008A", "User.Drawings": "#EFEFBA", "F.Cu": "#EEEEEE", "B.Cu": "#C6C6FF", "In30.Cu": "#000000", "Margin": "#830000", "F.Paste": "#400000"}, "layers_negative": {"Edge.Cuts": "false", "F.Silkscreen": "false", "B.Silkscreen": "false", "F.Fab": "false", "F.Mask": "false", "User.Comments": "false", "User.Drawings": "false", "F.Cu": "false", "B.Cu": "false", "In30.Cu": "false", "Margin": "false", "F.Paste": "false"}}, "Light-Colors-Placement-BOT": {"mirrored": true, "tented": false, "enabled_layers": "Margin,Edge.Cuts,B.Fab,B.Silkscreen,B.Paste,B.Mask,B.Cu", "frame": "Margin", "layers": {"B.Courtyard": "#000000", "Edge.Cuts": "#804000", "User.Comments": "#0080FF", "F.Fab": "#808080", "F.Cu": "#EEEEEE", "F.Paste": "#A8A8A8", "F.Silkscreen": "#DDDD00", "Margin": "#000000", "F.Mask": "#C0C0C0", "B.Cu": "#EEEEEE", "B.Fab": "#222222", "B.Silkscreen": "#CCCCAA", "B.Paste": "#A8A8A8", "B.Mask": "#C0C0C0"}, "layers_negative": {"B.Courtyard": "false", "Edge.Cuts": "false", "User.Comments": "false", "F.Fab": "false", "F.Cu": "false", "F.Paste": "false", "F.Silkscreen": "false", "Margin": "false", "F.Mask": "false", "B.Cu": "false", "B.Fab": "false", "B.Silkscreen": "false", "B.Paste": "false", "B.Mask": "false"}}} 6 | del_temp_files = True 7 | create_svg = False 8 | delete_single_page_files = True 9 | 10 | -------------------------------------------------------------------------------- /pcbs/fabrication-toolkit-options.json: -------------------------------------------------------------------------------- 1 | {"EXTRA_LAYERS": "", "EXTEND_EDGE_CUT": false, "AUTO TRANSLATE": true, "AUTO FILL": true, "EXCLUDE DNP": false} -------------------------------------------------------------------------------- /pcbs/jlcpcb/gerber/kbd-EdgeCuts.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*% 2 | %TF.CreationDate,2024-06-30T16:48:01+02:00*% 3 | %TF.ProjectId,kbd,6b62642e-6b69-4636-9164-5f7063625858,2*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Profile,NP*% 6 | %FSLAX46Y46*% 7 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 8 | G04 Created by KiCad (PCBNEW 8.0.3) date 2024-06-30 16:48:01* 9 | %MOMM*% 10 | %LPD*% 11 | G01* 12 | G04 APERTURE LIST* 13 | %TA.AperFunction,Profile*% 14 | %ADD10C,0.150000*% 15 | %TD*% 16 | G04 APERTURE END LIST* 17 | D10* 18 | X201397681Y-191916718D02* 19 | X193147668Y-191916719D01* 20 | X225997681Y-107335313D02* 21 | G75* 22 | G02* 23 | X224397681Y-108935396I-1599935J-148D01* 24 | G01* 25 | X87236903Y-82150202D02* 26 | X147843497Y-80907846D01* 27 | X204298964Y-103452440D02* 28 | X210397681Y-103452438D01* 29 | X234197681Y-150975315D02* 30 | X233797681Y-150975316D01* 31 | X63630289Y-137988300D02* 32 | X85786202Y-83150492D01* 33 | X202997680Y-184075314D02* 34 | G75* 35 | G02* 36 | X204597681Y-182475395I1600065J-146D01* 37 | G01* 38 | X202997680Y-184075314D02* 39 | X202997680Y-190316718D01* 40 | X204997681Y-124675316D02* 41 | G75* 42 | G02* 43 | X204197682Y-125475397I-799936J-145D01* 44 | G01* 45 | X234997680Y-124675314D02* 46 | X234997680Y-110275315D01* 47 | X213597679Y-108935316D02* 48 | X224397681Y-108935314D01* 49 | X210397681Y-103452438D02* 50 | G75* 51 | G02* 52 | X211997668Y-105052440I-135J-1600122D01* 53 | G01* 54 | X234997679Y-179175314D02* 55 | G75* 56 | G02* 57 | X234197679Y-179975393I-799933J-146D01* 58 | G01* 59 | X192548297Y-191800212D02* 60 | X64514414Y-140071165D01* 61 | X211997680Y-105052440D02* 62 | X211997681Y-107335314D01* 63 | X290151864Y-80907848D02* 64 | X350758456Y-82150200D01* 65 | X233797680Y-179975315D02* 66 | G75* 67 | G02* 68 | X232997691Y-179175315I-135J799854D01* 69 | G01* 70 | X233797680Y-179975315D02* 71 | X234197679Y-179975316D01* 72 | X236597680Y-191916719D02* 73 | G75* 74 | G02* 75 | X234997687Y-190316720I-134J1599859D01* 76 | G01* 77 | X204997681Y-179175315D02* 78 | X204997680Y-151775314D01* 79 | X227597680Y-103452440D02* 80 | X233696398Y-103452439D01* 81 | X204197681Y-150975315D02* 82 | G75* 83 | G02* 84 | X204997692Y-151775314I-35J-800046D01* 85 | G01* 86 | X352209157Y-83150494D02* 87 | X374365072Y-137988301D01* 88 | X203797680Y-179975314D02* 89 | X204197681Y-179975316D01* 90 | X244847693Y-191916718D02* 91 | X236597680Y-191916719D01* 92 | X202997680Y-151775316D02* 93 | G75* 94 | G02* 95 | X203797681Y-150975395I800066J-145D01* 96 | G01* 97 | X204997681Y-124675316D02* 98 | X204997680Y-110275316D01* 99 | X234197679Y-109475313D02* 100 | X233797682Y-109475315D01* 101 | X203797681Y-125475315D02* 102 | X204197682Y-125475316D01* 103 | X233397682Y-182475315D02* 104 | X204597681Y-182475316D01* 105 | X202997680Y-110275315D02* 106 | X202997680Y-124675314D01* 107 | X193147668Y-191916719D02* 108 | G75* 109 | G02* 110 | X192548294Y-191800219I-123J1599459D01* 111 | G01* 112 | X232997681Y-151775314D02* 113 | X232997681Y-179175315D01* 114 | X203797681Y-125475315D02* 115 | G75* 116 | G02* 117 | X202997691Y-124675314I-135J799855D01* 118 | G01* 119 | X234197681Y-150975315D02* 120 | G75* 121 | G02* 122 | X234997691Y-151775315I-135J-800145D01* 123 | G01* 124 | X233397682Y-182475315D02* 125 | G75* 126 | G02* 127 | X234997692Y-184075316I-136J-1600146D01* 128 | G01* 129 | X204197682Y-109475314D02* 130 | X203797681Y-109475313D01* 131 | X202997680Y-110275315D02* 132 | G75* 133 | G02* 134 | X203797681Y-109475394I800066J-145D01* 135 | G01* 136 | X204298964Y-103452440D02* 137 | G75* 138 | G02* 139 | X203699593Y-103335933I-118J1599380D01* 140 | G01* 141 | X225997681Y-107335313D02* 142 | X225997681Y-105052439D01* 143 | X147843497Y-80907846D02* 144 | G75* 145 | G02* 146 | X148475654Y-81024024I32649J-1600314D01* 147 | G01* 148 | X234197679Y-109475313D02* 149 | G75* 150 | G02* 151 | X234997693Y-110275315I-33J-800047D01* 152 | G01* 153 | X245447064Y-191800212D02* 154 | G75* 155 | G02* 156 | X244847693Y-191916703I-599518J1484451D01* 157 | G01* 158 | X85786202Y-83150492D02* 159 | G75* 160 | G02* 161 | X87236905Y-82150181I1483444J-599269D01* 162 | G01* 163 | X232997681Y-110275316D02* 164 | G75* 165 | G02* 166 | X233797682Y-109475396I800064J-144D01* 167 | G01* 168 | X225997681Y-105052439D02* 169 | G75* 170 | G02* 171 | X227597680Y-103452396I1600164J-121D01* 172 | G01* 173 | X234295768Y-103335934D02* 174 | G75* 175 | G02* 176 | X233696398Y-103452438I-599322J1483273D01* 177 | G01* 178 | X204997681Y-179175315D02* 179 | G75* 180 | G02* 181 | X204197681Y-179975396I-799935J-146D01* 182 | G01* 183 | X374365072Y-137988301D02* 184 | G75* 185 | G02* 186 | X373480970Y-140071221I-1483626J-599360D01* 187 | G01* 188 | X234295768Y-103335934D02* 189 | X289519702Y-81024016D01* 190 | X202997680Y-190316718D02* 191 | G75* 192 | G02* 193 | X201397681Y-191916796I-1599935J-143D01* 194 | G01* 195 | X148475658Y-81024015D02* 196 | X203699593Y-103335934D01* 197 | X373480948Y-140071165D02* 198 | X245447064Y-191800212D01* 199 | X233797681Y-125475314D02* 200 | G75* 201 | G02* 202 | X232997593Y-124675314I-35J800053D01* 203 | G01* 204 | X204197681Y-150975315D02* 205 | X203797681Y-150975314D01* 206 | X213597679Y-108935316D02* 207 | G75* 208 | G02* 209 | X211997691Y-107335314I-133J1599855D01* 210 | G01* 211 | X234997680Y-190316720D02* 212 | X234997682Y-184075316D01* 213 | X202997680Y-151775316D02* 214 | X202997681Y-179175315D01* 215 | X64514414Y-140071165D02* 216 | G75* 217 | G02* 218 | X63630328Y-137988316I599232J1483404D01* 219 | G01* 220 | X204197682Y-109475314D02* 221 | G75* 222 | G02* 223 | X204997693Y-110275316I-136J-800147D01* 224 | G01* 225 | X234997680Y-124675314D02* 226 | G75* 227 | G02* 228 | X234197680Y-125475395I-799934J-147D01* 229 | G01* 230 | X233797681Y-125475314D02* 231 | X234197680Y-125475314D01* 232 | X203797680Y-179975314D02* 233 | G75* 234 | G02* 235 | X202997692Y-179175315I-34J799954D01* 236 | G01* 237 | X289519702Y-81024016D02* 238 | G75* 239 | G02* 240 | X290151864Y-80907860I599344J-1483544D01* 241 | G01* 242 | X232997681Y-151775314D02* 243 | G75* 244 | G02* 245 | X233797681Y-150975396I800065J-147D01* 246 | G01* 247 | X232997681Y-110275316D02* 248 | X232997679Y-124675314D01* 249 | X234997679Y-179175314D02* 250 | X234997681Y-151775315D01* 251 | X350758456Y-82150200D02* 252 | G75* 253 | G02* 254 | X352209172Y-83150488I-32911J-1599861D01* 255 | G01* 256 | M02* 257 | -------------------------------------------------------------------------------- /pcbs/jlcpcb/gerber/kbd-MaskBottom.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*% 2 | %TF.CreationDate,2024-06-30T16:48:01+02:00*% 3 | %TF.ProjectId,kbd,6b62642e-6b69-4636-9164-5f7063625858,2*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Soldermask,Bot*% 6 | %TF.FilePolarity,Negative*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 8.0.3) date 2024-06-30 16:48:01* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | G04 Aperture macros list* 15 | %AMRoundRect* 16 | 0 Rectangle with rounded corners* 17 | 0 $1 Rounding radius* 18 | 0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners* 19 | 0 Add a 4 corners polygon primitive as box body* 20 | 4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0* 21 | 0 Add four circle primitives for the rounded corners* 22 | 1,1,$1+$1,$2,$3* 23 | 1,1,$1+$1,$4,$5* 24 | 1,1,$1+$1,$6,$7* 25 | 1,1,$1+$1,$8,$9* 26 | 0 Add four rect primitives between the rounded corners* 27 | 20,1,$1+$1,$2,$3,$4,$5,0* 28 | 20,1,$1+$1,$4,$5,$6,$7,0* 29 | 20,1,$1+$1,$6,$7,$8,$9,0* 30 | 20,1,$1+$1,$8,$9,$2,$3,0*% 31 | G04 Aperture macros list end* 32 | %ADD10C,1.900000*% 33 | %ADD11C,4.100000*% 34 | %ADD12C,2.300000*% 35 | %ADD13C,2.600000*% 36 | %ADD14C,1.852600*% 37 | %ADD15RoundRect,0.050000X-0.876300X0.876300X-0.876300X-0.876300X0.876300X-0.876300X0.876300X0.876300X0*% 38 | %ADD16C,1.000000*% 39 | G04 APERTURE END LIST* 40 | D10* 41 | %TO.C,S37*% 42 | X260005111Y-151728828D03* 43 | D11* 44 | X264715205Y-149825827D03* 45 | D10* 46 | X269425299Y-147922826D03* 47 | D12* 48 | X261502791Y-155222159D03* 49 | D13* 50 | X260231134Y-148898031D03* 51 | D12* 52 | X266925384Y-155296213D03* 53 | D13* 54 | X265167250Y-144164231D03* 55 | %TD*% 56 | D10* 57 | %TO.C,S14*% 58 | X158071093Y-123188805D03* 59 | D11* 60 | X162781187Y-125091807D03* 61 | D10* 62 | X167491281Y-126994809D03* 63 | D12* 64 | X156721762Y-126742072D03* 65 | D13* 66 | X160200118Y-121309509D03* 67 | D12* 68 | X160571008Y-130562193D03* 69 | D13* 70 | X167039235Y-121333213D03* 71 | %TD*% 72 | D14* 73 | %TO.C,*% 74 | X237997681Y-141953316D03* 75 | %TD*% 76 | %TO.C,*% 77 | X237997682Y-126713314D03* 78 | %TD*% 79 | D10* 80 | %TO.C,S8*% 81 | X120702850Y-114238702D03* 82 | D11* 83 | X125412944Y-116141704D03* 84 | D10* 85 | X130123038Y-118044706D03* 86 | D12* 87 | X119353519Y-117791969D03* 88 | D13* 89 | X122831875Y-112359406D03* 90 | D12* 91 | X123202765Y-121612090D03* 92 | D13* 93 | X129670992Y-112383110D03* 94 | %TD*% 95 | D14* 96 | %TO.C,*% 97 | X207997679Y-131793316D03* 98 | %TD*% 99 | %TO.C,*% 100 | X207997681Y-136873314D03* 101 | %TD*% 102 | D12* 103 | %TO.C,_139*% 104 | X318321385Y-92306244D03* 105 | %TD*% 106 | D10* 107 | %TO.C,S4*% 108 | X90986562Y-137069217D03* 109 | D11* 110 | X95696656Y-138972219D03* 111 | D10* 112 | X100406750Y-140875221D03* 113 | D12* 114 | X89637231Y-140622484D03* 115 | D13* 116 | X93115587Y-135189921D03* 117 | D12* 118 | X93486477Y-144442605D03* 119 | D13* 120 | X99954704Y-135213625D03* 121 | %TD*% 122 | D10* 123 | %TO.C,S16*% 124 | X168570062Y-147922825D03* 125 | D11* 126 | X173280156Y-149825827D03* 127 | D10* 128 | X177990250Y-151728829D03* 129 | D12* 130 | X167220731Y-151476092D03* 131 | D13* 132 | X170699087Y-146043529D03* 133 | D12* 134 | X171069977Y-155296213D03* 135 | D13* 136 | X177538204Y-146067233D03* 137 | %TD*% 138 | D14* 139 | %TO.C,*% 140 | X237997682Y-147033314D03* 141 | %TD*% 142 | D10* 143 | %TO.C,S6*% 144 | X105221613Y-101836229D03* 145 | D11* 146 | X109931707Y-103739231D03* 147 | D10* 148 | X114641801Y-105642233D03* 149 | D12* 150 | X103872282Y-105389496D03* 151 | D13* 152 | X107350638Y-99956933D03* 153 | D12* 154 | X107721528Y-109209617D03* 155 | D13* 156 | X114189755Y-99980637D03* 157 | %TD*% 158 | D10* 159 | %TO.C,S42*% 160 | X245982845Y-177886351D03* 161 | D11* 162 | X250692939Y-175983350D03* 163 | D10* 164 | X255403033Y-174080349D03* 165 | D12* 166 | X247480525Y-181379682D03* 167 | D13* 168 | X246208868Y-175055554D03* 169 | D12* 170 | X252903118Y-181453736D03* 171 | D13* 172 | X251144984Y-170321754D03* 173 | %TD*% 174 | D14* 175 | %TO.C,*% 176 | X207997680Y-126713314D03* 177 | %TD*% 178 | D10* 179 | %TO.C,S26*% 180 | X330471083Y-123258727D03* 181 | D11* 182 | X335181177Y-121355726D03* 183 | D10* 184 | X339891271Y-119452725D03* 185 | D12* 186 | X331968763Y-126752058D03* 187 | D13* 188 | X330697106Y-120427930D03* 189 | D12* 190 | X337391356Y-126826112D03* 191 | D13* 192 | X335633222Y-115694130D03* 193 | %TD*% 194 | D12* 195 | %TO.C,_132*% 196 | X229497679Y-178475316D03* 197 | %TD*% 198 | D14* 199 | %TO.C,*% 200 | X199997680Y-134333316D03* 201 | %TD*% 202 | D12* 203 | %TO.C,_135*% 204 | X119673975Y-92306243D03* 205 | %TD*% 206 | D10* 207 | %TO.C,S20*% 208 | X164975834Y-166962823D03* 209 | D11* 210 | X169685928Y-168865825D03* 211 | D10* 212 | X174396022Y-170768827D03* 213 | D12* 214 | X163626503Y-170516090D03* 215 | D13* 216 | X167104859Y-165083527D03* 217 | D12* 218 | X167475749Y-174336211D03* 219 | D13* 220 | X173943976Y-165107231D03* 221 | %TD*% 222 | D10* 223 | %TO.C,S15*% 224 | X165188618Y-105572313D03* 225 | D11* 226 | X169898712Y-107475315D03* 227 | D10* 228 | X174608806Y-109378317D03* 229 | D12* 230 | X163839287Y-109125580D03* 231 | D13* 232 | X167317643Y-103693017D03* 233 | D12* 234 | X167688533Y-112945701D03* 235 | D13* 236 | X174156760Y-103716721D03* 237 | %TD*% 238 | D14* 239 | %TO.C,*% 240 | X237997683Y-144493313D03* 241 | %TD*% 242 | D10* 243 | %TO.C,S17*% 244 | X175687587Y-130306332D03* 245 | D11* 246 | X180397681Y-132209334D03* 247 | D10* 248 | X185107775Y-134112336D03* 249 | D12* 250 | X174338256Y-133859599D03* 251 | D13* 252 | X177816612Y-128427036D03* 253 | D12* 254 | X178187502Y-137679720D03* 255 | D13* 256 | X184655729Y-128450740D03* 257 | %TD*% 258 | D12* 259 | %TO.C,_137*% 260 | X241449643Y-104921499D03* 261 | %TD*% 262 | D14* 263 | %TO.C,*% 264 | X229997681Y-126713314D03* 265 | %TD*% 266 | D10* 267 | %TO.C,S29*% 268 | X307872323Y-118044707D03* 269 | D11* 270 | X312582417Y-116141706D03* 271 | D10* 272 | X317292511Y-114238705D03* 273 | D12* 274 | X309370003Y-121538038D03* 275 | D13* 276 | X308098346Y-115213910D03* 277 | D12* 278 | X314792596Y-121612092D03* 279 | D13* 280 | X313034462Y-110480110D03* 281 | %TD*% 282 | D14* 283 | %TO.C,*% 284 | X229997679Y-131793315D03* 285 | %TD*% 286 | %TO.C,*% 287 | X237997681Y-149573315D03* 288 | %TD*% 289 | D12* 290 | %TO.C,_136*% 291 | X129728408Y-143500467D03* 292 | %TD*% 293 | D14* 294 | %TO.C,*% 295 | X207997680Y-139413315D03* 296 | %TD*% 297 | D10* 298 | %TO.C,S21*% 299 | X182592327Y-174080350D03* 300 | D11* 301 | X187302421Y-175983352D03* 302 | D10* 303 | X192012515Y-177886354D03* 304 | D12* 305 | X181242996Y-177633617D03* 306 | D13* 307 | X184721352Y-172201054D03* 308 | D12* 309 | X185092242Y-181453738D03* 310 | D13* 311 | X191560469Y-172224758D03* 312 | %TD*% 313 | D14* 314 | %TO.C,*% 315 | X229997681Y-149573313D03* 316 | %TD*% 317 | D10* 318 | %TO.C,S31*% 319 | X293814593Y-133970479D03* 320 | D11* 321 | X298524687Y-132067478D03* 322 | D10* 323 | X303234781Y-130164477D03* 324 | D12* 325 | X295312273Y-137463810D03* 326 | D13* 327 | X294040616Y-131139682D03* 328 | D12* 329 | X300734866Y-137537864D03* 330 | D13* 331 | X298976732Y-126405882D03* 332 | %TD*% 333 | D14* 334 | %TO.C,*% 335 | X199997681Y-136873315D03* 336 | %TD*% 337 | %TO.C,*% 338 | X220997680Y-145475317D03* 339 | %TD*% 340 | D10* 341 | %TO.C,S12*% 342 | X148995630Y-94931487D03* 343 | D11* 344 | X153705724Y-96834489D03* 345 | D10* 346 | X158415818Y-98737491D03* 347 | D12* 348 | X147646299Y-98484754D03* 349 | D13* 350 | X151124655Y-93052191D03* 351 | D12* 352 | X151495545Y-102304875D03* 353 | D13* 354 | X157963772Y-93075895D03* 355 | %TD*% 356 | D15* 357 | %TO.C,MCU1*% 358 | X211377681Y-110965316D03* 359 | D14* 360 | X211377680Y-113505317D03* 361 | X211377681Y-116045317D03* 362 | X211377679Y-118585315D03* 363 | X211377681Y-121125316D03* 364 | X211377680Y-123665317D03* 365 | X211377681Y-126205317D03* 366 | X211377679Y-128745315D03* 367 | X211377681Y-131285316D03* 368 | X211377680Y-133825317D03* 369 | X211377681Y-136365317D03* 370 | X211377679Y-138905315D03* 371 | X211377681Y-141445316D03* 372 | X226617682Y-110965315D03* 373 | X226617681Y-113505316D03* 374 | X226617683Y-116045317D03* 375 | X226617681Y-118585315D03* 376 | X226617682Y-121125315D03* 377 | X226617681Y-123665316D03* 378 | X226617683Y-126205317D03* 379 | X226617681Y-128745315D03* 380 | X226617682Y-131285315D03* 381 | X226617681Y-133825316D03* 382 | X226617683Y-136365317D03* 383 | X226617681Y-138905315D03* 384 | X226617682Y-141445315D03* 385 | %TD*% 386 | D16* 387 | %TO.C,PWR1*% 388 | X220497681Y-180200315D03* 389 | X217497681Y-180200315D03* 390 | %TD*% 391 | D10* 392 | %TO.C,S25*% 393 | X337588610Y-140875220D03* 394 | D11* 395 | X342298704Y-138972219D03* 396 | D10* 397 | X347008798Y-137069218D03* 398 | D12* 399 | X339086290Y-144368551D03* 400 | D13* 401 | X337814633Y-138044423D03* 402 | D12* 403 | X344508883Y-144442605D03* 404 | D13* 405 | X342750749Y-133310623D03* 406 | %TD*% 407 | D14* 408 | %TO.C,*% 409 | X199997681Y-126713315D03* 410 | %TD*% 411 | D10* 412 | %TO.C,S13*% 413 | X150953568Y-140805297D03* 414 | D11* 415 | X155663662Y-142708299D03* 416 | D10* 417 | X160373756Y-144611301D03* 418 | D12* 419 | X149604237Y-144358564D03* 420 | D13* 421 | X153082593Y-138926001D03* 422 | D12* 423 | X153453483Y-148178685D03* 424 | D13* 425 | X159921710Y-138949705D03* 426 | %TD*% 427 | D12* 428 | %TO.C,_129*% 429 | X208497679Y-106475314D03* 430 | %TD*% 431 | D10* 432 | %TO.C,S34*% 433 | X277621603Y-144611302D03* 434 | D11* 435 | X282331697Y-142708301D03* 436 | D10* 437 | X287041791Y-140805300D03* 438 | D12* 439 | X279119283Y-148104633D03* 440 | D13* 441 | X277847626Y-141780505D03* 442 | D12* 443 | X284541876Y-148178687D03* 444 | D13* 445 | X282783742Y-137046705D03* 446 | %TD*% 447 | D10* 448 | %TO.C,S23*% 449 | X348087577Y-116141203D03* 450 | D11* 451 | X352797671Y-114238202D03* 452 | D10* 453 | X357507765Y-112335201D03* 454 | D12* 455 | X349585257Y-119634534D03* 456 | D13* 457 | X348313600Y-113310406D03* 458 | D12* 459 | X355007850Y-119708588D03* 460 | D13* 461 | X353249716Y-108576606D03* 462 | %TD*% 463 | D14* 464 | %TO.C,*% 465 | X237997683Y-134333313D03* 466 | %TD*% 467 | D12* 468 | %TO.C,_140*% 469 | X308266955Y-143500466D03* 470 | %TD*% 471 | D14* 472 | %TO.C,*% 473 | X229997682Y-144493314D03* 474 | %TD*% 475 | %TO.C,*% 476 | X237997681Y-129253315D03* 477 | %TD*% 478 | D10* 479 | %TO.C,S7*% 480 | X113585324Y-131855196D03* 481 | D11* 482 | X118295418Y-133758198D03* 483 | D10* 484 | X123005512Y-135661200D03* 485 | D12* 486 | X112235993Y-135408463D03* 487 | D13* 488 | X115714349Y-129975900D03* 489 | D12* 490 | X116085239Y-139228584D03* 491 | D13* 492 | X122553466Y-129999604D03* 493 | %TD*% 494 | D14* 495 | %TO.C,*% 496 | X199997680Y-147033314D03* 497 | %TD*% 498 | D10* 499 | %TO.C,S11*% 500 | X141878105Y-112547982D03* 501 | D11* 502 | X146588199Y-114450984D03* 503 | D10* 504 | X151298293Y-116353986D03* 505 | D12* 506 | X140528774Y-116101249D03* 507 | D13* 508 | X144007130Y-110668686D03* 509 | D12* 510 | X144378020Y-119921370D03* 511 | D13* 512 | X150846247Y-110692390D03* 513 | %TD*% 514 | D12* 515 | %TO.C,_133*% 516 | X196545721Y-104921500D03* 517 | %TD*% 518 | D10* 519 | %TO.C,S24*% 520 | X340970053Y-98524708D03* 521 | D11* 522 | X345680147Y-96621707D03* 523 | D10* 524 | X350390241Y-94718706D03* 525 | D12* 526 | X342467733Y-102018039D03* 527 | D13* 528 | X341196076Y-95693911D03* 529 | D12* 530 | X347890326Y-102092093D03* 531 | D13* 532 | X346132192Y-90960111D03* 533 | %TD*% 534 | D14* 535 | %TO.C,*% 536 | X207997679Y-141953316D03* 537 | %TD*% 538 | D10* 539 | %TO.C,S39*% 540 | X245770060Y-116495843D03* 541 | D11* 542 | X250480154Y-114592842D03* 543 | D10* 544 | X255190248Y-112689841D03* 545 | D12* 546 | X247267740Y-119989174D03* 547 | D13* 548 | X245996083Y-113665046D03* 549 | D12* 550 | X252690333Y-120063228D03* 551 | D13* 552 | X250932199Y-108931246D03* 553 | %TD*% 554 | D14* 555 | %TO.C,*% 556 | X229997681Y-147033314D03* 557 | %TD*% 558 | D10* 559 | %TO.C,S10*% 560 | X134760578Y-130164475D03* 561 | D11* 562 | X139470672Y-132067477D03* 563 | D10* 564 | X144180766Y-133970479D03* 565 | D12* 566 | X133411247Y-133717742D03* 567 | D13* 568 | X136889603Y-128285179D03* 569 | D12* 570 | X137260493Y-137537863D03* 571 | D13* 572 | X143728720Y-128308883D03* 573 | %TD*% 574 | D10* 575 | %TO.C,S35*% 576 | X270504079Y-126994808D03* 577 | D11* 578 | X275214173Y-125091807D03* 579 | D10* 580 | X279924267Y-123188806D03* 581 | D12* 582 | X272001759Y-130488139D03* 583 | D13* 584 | X270730102Y-124164011D03* 585 | D12* 586 | X277424352Y-130562193D03* 587 | D13* 588 | X275666218Y-119430211D03* 589 | %TD*% 590 | D14* 591 | %TO.C,*% 592 | X207997680Y-129253315D03* 593 | %TD*% 594 | %TO.C,*% 595 | X229997680Y-129253316D03* 596 | %TD*% 597 | D10* 598 | %TO.C,S2*% 599 | X80487595Y-112335197D03* 600 | D11* 601 | X85197689Y-114238199D03* 602 | D10* 603 | X89907783Y-116141201D03* 604 | D12* 605 | X79138264Y-115888464D03* 606 | D13* 607 | X82616620Y-110455901D03* 608 | D12* 609 | X82987510Y-119708585D03* 610 | D13* 611 | X89455737Y-110479605D03* 612 | %TD*% 613 | D10* 614 | %TO.C,S18*% 615 | X182805112Y-112689837D03* 616 | D11* 617 | X187515206Y-114592839D03* 618 | D10* 619 | X192225300Y-116495841D03* 620 | D12* 621 | X181455781Y-116243104D03* 622 | D13* 623 | X184934137Y-110810541D03* 624 | D12* 625 | X185305027Y-120063225D03* 626 | D13* 627 | X191773254Y-110834245D03* 628 | %TD*% 629 | D14* 630 | %TO.C,*% 631 | X199997680Y-129253315D03* 632 | %TD*% 633 | D10* 634 | %TO.C,S36*% 635 | X263386555Y-109378315D03* 636 | D11* 637 | X268096649Y-107475314D03* 638 | D10* 639 | X272806743Y-105572313D03* 640 | D12* 641 | X264884235Y-112871646D03* 642 | D13* 643 | X263612578Y-106547518D03* 644 | D12* 645 | X270306828Y-112945700D03* 646 | D13* 647 | X268548694Y-101813718D03* 648 | %TD*% 649 | D14* 650 | %TO.C,*% 651 | X207997681Y-147033314D03* 652 | %TD*% 653 | D10* 654 | %TO.C,S1*% 655 | X73370069Y-129951691D03* 656 | D11* 657 | X78080163Y-131854693D03* 658 | D10* 659 | X82790257Y-133757695D03* 660 | D12* 661 | X72020738Y-133504958D03* 662 | D13* 663 | X75499094Y-128072395D03* 664 | D12* 665 | X75869984Y-137325079D03* 666 | D13* 667 | X82338211Y-128096099D03* 668 | %TD*% 669 | D14* 670 | %TO.C,*% 671 | X237997682Y-136873314D03* 672 | %TD*% 673 | %TO.C,*% 674 | X207997681Y-144493315D03* 675 | %TD*% 676 | D10* 677 | %TO.C,S28*% 678 | X314989848Y-135661199D03* 679 | D11* 680 | X319699942Y-133758198D03* 681 | D10* 682 | X324410036Y-131855197D03* 683 | D12* 684 | X316487528Y-139154530D03* 685 | D13* 686 | X315215871Y-132830402D03* 687 | D12* 688 | X321910121Y-139228584D03* 689 | D13* 690 | X320151987Y-128096602D03* 691 | %TD*% 692 | D14* 693 | %TO.C,*% 694 | X199997681Y-131793315D03* 695 | %TD*% 696 | %TO.C,*% 697 | X207997680Y-149573315D03* 698 | %TD*% 699 | D10* 700 | %TO.C,S3*% 701 | X87605120Y-94718704D03* 702 | D11* 703 | X92315214Y-96621706D03* 704 | D10* 705 | X97025308Y-98524708D03* 706 | D12* 707 | X86255789Y-98271971D03* 708 | D13* 709 | X89734145Y-92839408D03* 710 | D12* 711 | X90105035Y-102092092D03* 712 | D13* 713 | X96573262Y-92863112D03* 714 | %TD*% 715 | D10* 716 | %TO.C,S19*% 717 | X147359342Y-159845297D03* 718 | D11* 719 | X152069436Y-161748299D03* 720 | D10* 721 | X156779530Y-163651301D03* 722 | D12* 723 | X146010011Y-163398564D03* 724 | D13* 725 | X149488367Y-157966001D03* 726 | D12* 727 | X149859257Y-167218685D03* 728 | D13* 729 | X156327484Y-157989705D03* 730 | %TD*% 731 | D14* 732 | %TO.C,*% 733 | X229997681Y-141953314D03* 734 | %TD*% 735 | %TO.C,*% 736 | X237997681Y-139413315D03* 737 | %TD*% 738 | D12* 739 | %TO.C,_131*% 740 | X208497681Y-178475313D03* 741 | %TD*% 742 | D14* 743 | %TO.C,*% 744 | X229997681Y-139413313D03* 745 | %TD*% 746 | D10* 747 | %TO.C,S33*% 748 | X279579541Y-98737492D03* 749 | D11* 750 | X284289635Y-96834491D03* 751 | D10* 752 | X288999729Y-94931490D03* 753 | D12* 754 | X281077221Y-102230823D03* 755 | D13* 756 | X279805564Y-95906695D03* 757 | D12* 758 | X286499814Y-102304877D03* 759 | D13* 760 | X284741680Y-91172895D03* 761 | %TD*% 762 | D10* 763 | %TO.C,S9*% 764 | X127820376Y-96622210D03* 765 | D11* 766 | X132530470Y-98525212D03* 767 | D10* 768 | X137240564Y-100428214D03* 769 | D12* 770 | X126471045Y-100175477D03* 771 | D13* 772 | X129949401Y-94742914D03* 773 | D12* 774 | X130320291Y-103995598D03* 775 | D13* 776 | X136788518Y-94766618D03* 777 | %TD*% 778 | D10* 779 | %TO.C,S30*% 780 | X300754799Y-100428214D03* 781 | D11* 782 | X305464893Y-98525213D03* 783 | D10* 784 | X310174987Y-96622212D03* 785 | D12* 786 | X302252479Y-103921545D03* 787 | D13* 788 | X300980822Y-97597417D03* 789 | D12* 790 | X307675072Y-103995599D03* 791 | D13* 792 | X305916938Y-92863617D03* 793 | %TD*% 794 | D10* 795 | %TO.C,S40*% 796 | X281215831Y-163651301D03* 797 | D11* 798 | X285925925Y-161748300D03* 799 | D10* 800 | X290636019Y-159845299D03* 801 | D12* 802 | X282713511Y-167144632D03* 803 | D13* 804 | X281441854Y-160820504D03* 805 | D12* 806 | X288136104Y-167218686D03* 807 | D13* 808 | X286377970Y-156086704D03* 809 | %TD*% 810 | D14* 811 | %TO.C,*% 812 | X229997682Y-134333314D03* 813 | %TD*% 814 | D10* 815 | %TO.C,S41*% 816 | X263599338Y-170768826D03* 817 | D11* 818 | X268309432Y-168865825D03* 819 | D10* 820 | X273019526Y-166962824D03* 821 | D12* 822 | X265097018Y-174262157D03* 823 | D13* 824 | X263825361Y-167938029D03* 825 | D12* 826 | X270519611Y-174336211D03* 827 | D13* 828 | X268761477Y-163204229D03* 829 | %TD*% 830 | D10* 831 | %TO.C,S32*% 832 | X286697067Y-116353984D03* 833 | D11* 834 | X291407161Y-114450983D03* 835 | D10* 836 | X296117255Y-112547982D03* 837 | D12* 838 | X288194747Y-119847315D03* 839 | D13* 840 | X286923090Y-113523187D03* 841 | D12* 842 | X293617340Y-119921369D03* 843 | D13* 844 | X291859206Y-108789387D03* 845 | %TD*% 846 | D10* 847 | %TO.C,S27*% 848 | X323353560Y-105642234D03* 849 | D11* 850 | X328063654Y-103739233D03* 851 | D10* 852 | X332773748Y-101836232D03* 853 | D12* 854 | X324851240Y-109135565D03* 855 | D13* 856 | X323579583Y-102811437D03* 857 | D12* 858 | X330273833Y-109209619D03* 859 | D13* 860 | X328515699Y-98077637D03* 861 | %TD*% 862 | D14* 863 | %TO.C,*% 864 | X237997681Y-131793312D03* 865 | %TD*% 866 | %TO.C,*% 867 | X207997681Y-134333315D03* 868 | %TD*% 869 | D12* 870 | %TO.C,_138*% 871 | X239259951Y-185725618D03* 872 | %TD*% 873 | D14* 874 | %TO.C,*% 875 | X199997681Y-149573314D03* 876 | %TD*% 877 | %TO.C,*% 878 | X216997682Y-145475314D03* 879 | %TD*% 880 | %TO.C,*% 881 | X199997680Y-139413315D03* 882 | %TD*% 883 | D12* 884 | %TO.C,_130*% 885 | X229497681Y-106475313D03* 886 | %TD*% 887 | D10* 888 | %TO.C,S38*% 889 | X252887586Y-134112334D03* 890 | D11* 891 | X257597680Y-132209333D03* 892 | D10* 893 | X262307774Y-130306332D03* 894 | D12* 895 | X254385266Y-137605665D03* 896 | D13* 897 | X253113609Y-131281537D03* 898 | D12* 899 | X259807859Y-137679719D03* 900 | D13* 901 | X258049725Y-126547737D03* 902 | %TD*% 903 | D10* 904 | %TO.C,S22*% 905 | X355205103Y-133757693D03* 906 | D11* 907 | X359915197Y-131854692D03* 908 | D10* 909 | X364625291Y-129951691D03* 910 | D12* 911 | X356702783Y-137251024D03* 912 | D13* 913 | X355431126Y-130926896D03* 914 | D12* 915 | X362125376Y-137325078D03* 916 | D13* 917 | X360367242Y-126193096D03* 918 | %TD*% 919 | D14* 920 | %TO.C,*% 921 | X229997681Y-136873314D03* 922 | %TD*% 923 | %TO.C,*% 924 | X199997680Y-144493316D03* 925 | %TD*% 926 | D12* 927 | %TO.C,_134*% 928 | X198735411Y-185725617D03* 929 | %TD*% 930 | D10* 931 | %TO.C,S5*% 932 | X98104087Y-119452724D03* 933 | D11* 934 | X102814181Y-121355726D03* 935 | D10* 936 | X107524275Y-123258728D03* 937 | D12* 938 | X96754756Y-123005991D03* 939 | D13* 940 | X100233112Y-117573428D03* 941 | D12* 942 | X100604002Y-126826112D03* 943 | D13* 944 | X107072229Y-117597132D03* 945 | %TD*% 946 | D14* 947 | %TO.C,*% 948 | X199997681Y-141953315D03* 949 | %TD*% 950 | M02* 951 | -------------------------------------------------------------------------------- /pcbs/jlcpcb/gerber/kbd-MaskTop.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*% 2 | %TF.CreationDate,2024-06-30T16:48:01+02:00*% 3 | %TF.ProjectId,kbd,6b62642e-6b69-4636-9164-5f7063625858,2*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Soldermask,Top*% 6 | %TF.FilePolarity,Negative*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 8.0.3) date 2024-06-30 16:48:01* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | G04 Aperture macros list* 15 | %AMRoundRect* 16 | 0 Rectangle with rounded corners* 17 | 0 $1 Rounding radius* 18 | 0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners* 19 | 0 Add a 4 corners polygon primitive as box body* 20 | 4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0* 21 | 0 Add four circle primitives for the rounded corners* 22 | 1,1,$1+$1,$2,$3* 23 | 1,1,$1+$1,$4,$5* 24 | 1,1,$1+$1,$6,$7* 25 | 1,1,$1+$1,$8,$9* 26 | 0 Add four rect primitives between the rounded corners* 27 | 20,1,$1+$1,$2,$3,$4,$5,0* 28 | 20,1,$1+$1,$4,$5,$6,$7,0* 29 | 20,1,$1+$1,$6,$7,$8,$9,0* 30 | 20,1,$1+$1,$8,$9,$2,$3,0*% 31 | G04 Aperture macros list end* 32 | %ADD10RoundRect,0.275000X-0.151959X0.357992X-0.357992X-0.151959X0.151959X-0.357992X0.357992X0.151959X0*% 33 | %ADD11RoundRect,0.275000X-0.357992X0.151959X-0.151959X-0.357992X0.357992X-0.151959X0.151959X0.357992X0*% 34 | %ADD12C,1.900000*% 35 | %ADD13C,4.100000*% 36 | %ADD14C,2.300000*% 37 | %ADD15C,2.600000*% 38 | %ADD16C,1.852600*% 39 | %ADD17RoundRect,0.050000X-0.876300X0.876300X-0.876300X-0.876300X0.876300X-0.876300X0.876300X0.876300X0*% 40 | %ADD18RoundRect,0.050000X-0.500000X-0.400000X0.500000X-0.400000X0.500000X0.400000X-0.500000X0.400000X0*% 41 | %ADD19C,1.000000*% 42 | %ADD20RoundRect,0.050000X-0.350000X-0.750000X0.350000X-0.750000X0.350000X0.750000X-0.350000X0.750000X0*% 43 | G04 APERTURE END LIST* 44 | D10* 45 | %TO.C,D15*% 46 | X180673644Y-106166361D03* 47 | X179737128Y-108484321D03* 48 | %TD*% 49 | D11* 50 | %TO.C,D30*% 51 | X294689960Y-97216260D03* 52 | X295626476Y-99534220D03* 53 | %TD*% 54 | D10* 55 | %TO.C,D3*% 56 | X103090145Y-95312755D03* 57 | X102153629Y-97630715D03* 58 | %TD*% 59 | %TO.C,D5*% 60 | X113589114Y-120046773D03* 61 | X112652598Y-122364733D03* 62 | %TD*% 63 | %TO.C,D18*% 64 | X198290135Y-113283888D03* 65 | X197353619Y-115601848D03* 66 | %TD*% 67 | %TO.C,D13*% 68 | X166438592Y-141399351D03* 69 | X165502076Y-143717311D03* 70 | %TD*% 71 | %TO.C,D17*% 72 | X191172611Y-130900381D03* 73 | X190236095Y-133218341D03* 74 | %TD*% 75 | D11* 76 | %TO.C,D28*% 77 | X308925012Y-132449246D03* 78 | X309861528Y-134767206D03* 79 | %TD*% 80 | %TO.C,D35*% 81 | X264439243Y-123782856D03* 82 | X265375759Y-126100816D03* 83 | %TD*% 84 | %TO.C,D39*% 85 | X239705223Y-113283889D03* 86 | X240641739Y-115601849D03* 87 | %TD*% 88 | %TO.C,D27*% 89 | X317288723Y-102430278D03* 90 | X318225239Y-104748238D03* 91 | %TD*% 92 | D10* 93 | %TO.C,D11*% 94 | X157363129Y-113142032D03* 95 | X156426613Y-115459992D03* 96 | %TD*% 97 | D11* 98 | %TO.C,D41*% 99 | X257534502Y-167556873D03* 100 | X258471018Y-169874833D03* 101 | %TD*% 102 | %TO.C,D25*% 103 | X331523772Y-137663264D03* 104 | X332460288Y-139981224D03* 105 | %TD*% 106 | %TO.C,D23*% 107 | X342022741Y-112929248D03* 108 | X342959257Y-115247208D03* 109 | %TD*% 110 | %TO.C,D32*% 111 | X280632231Y-113142031D03* 112 | X281568747Y-115459991D03* 113 | %TD*% 114 | D10* 115 | %TO.C,D20*% 116 | X180460860Y-167556871D03* 117 | X179524344Y-169874831D03* 118 | %TD*% 119 | %TO.C,D14*% 120 | X173556118Y-123782856D03* 121 | X172619602Y-126100816D03* 122 | %TD*% 123 | D11* 124 | %TO.C,D40*% 125 | X275150994Y-160439345D03* 126 | X276087510Y-162757305D03* 127 | %TD*% 128 | D10* 129 | %TO.C,D21*% 130 | X198077353Y-174674397D03* 131 | X197140837Y-176992357D03* 132 | %TD*% 133 | %TO.C,D7*% 134 | X129070349Y-132449246D03* 135 | X128133833Y-134767206D03* 136 | %TD*% 137 | %TO.C,D16*% 138 | X184055087Y-148516874D03* 139 | X183118571Y-150834834D03* 140 | %TD*% 141 | %TO.C,D1*% 142 | X88855095Y-130545741D03* 143 | X87918579Y-132863701D03* 144 | %TD*% 145 | D11* 146 | %TO.C,D31*% 147 | X287749756Y-130758523D03* 148 | X288686272Y-133076483D03* 149 | %TD*% 150 | D10* 151 | %TO.C,D6*% 152 | X120706637Y-102430281D03* 153 | X119770121Y-104748241D03* 154 | %TD*% 155 | D11* 156 | %TO.C,D42*% 157 | X239918008Y-174674397D03* 158 | X240854524Y-176992357D03* 159 | %TD*% 160 | %TO.C,D29*% 161 | X301807487Y-114832752D03* 162 | X302744003Y-117150712D03* 163 | %TD*% 164 | D10* 165 | %TO.C,D10*% 166 | X150245605Y-130758525D03* 167 | X149309089Y-133076485D03* 168 | %TD*% 169 | %TO.C,D8*% 170 | X136187873Y-114832753D03* 171 | X135251357Y-117150713D03* 172 | %TD*% 173 | D11* 174 | %TO.C,D26*% 175 | X324406249Y-120046772D03* 176 | X325342765Y-122364732D03* 177 | %TD*% 178 | %TO.C,D24*% 179 | X334905216Y-95312755D03* 180 | X335841732Y-97630715D03* 181 | %TD*% 182 | D10* 183 | %TO.C,D2*% 184 | X95972619Y-112929248D03* 185 | X95036103Y-115247208D03* 186 | %TD*% 187 | %TO.C,D4*% 188 | X106471588Y-137663265D03* 189 | X105535072Y-139981225D03* 190 | %TD*% 191 | %TO.C,D19*% 192 | X162844365Y-160439348D03* 193 | X161907849Y-162757308D03* 194 | %TD*% 195 | D11* 196 | %TO.C,D22*% 197 | X349140267Y-130545740D03* 198 | X350076783Y-132863700D03* 199 | %TD*% 200 | %TO.C,D37*% 201 | X253940274Y-148516874D03* 202 | X254876790Y-150834834D03* 203 | %TD*% 204 | %TO.C,D36*% 205 | X257321717Y-106166362D03* 206 | X258258233Y-108484322D03* 207 | %TD*% 208 | %TO.C,D33*% 209 | X273514706Y-95525540D03* 210 | X274451222Y-97843500D03* 211 | %TD*% 212 | D10* 213 | %TO.C,D12*% 214 | X164480656Y-95525539D03* 215 | X163544140Y-97843499D03* 216 | %TD*% 217 | %TO.C,D9*% 218 | X143305400Y-97216261D03* 219 | X142368884Y-99534221D03* 220 | %TD*% 221 | D11* 222 | %TO.C,D34*% 223 | X271556768Y-141399349D03* 224 | X272493284Y-143717309D03* 225 | %TD*% 226 | %TO.C,D38*% 227 | X246822750Y-130900381D03* 228 | X247759266Y-133218341D03* 229 | %TD*% 230 | D12* 231 | %TO.C,S37*% 232 | X260005111Y-151728828D03* 233 | D13* 234 | X264715205Y-149825827D03* 235 | D12* 236 | X269425299Y-147922826D03* 237 | D14* 238 | X261502791Y-155222159D03* 239 | D15* 240 | X260231134Y-148898031D03* 241 | D14* 242 | X266925384Y-155296213D03* 243 | D15* 244 | X265167250Y-144164231D03* 245 | %TD*% 246 | D12* 247 | %TO.C,S14*% 248 | X158071093Y-123188805D03* 249 | D13* 250 | X162781187Y-125091807D03* 251 | D12* 252 | X167491281Y-126994809D03* 253 | D14* 254 | X156721762Y-126742072D03* 255 | D15* 256 | X160200118Y-121309509D03* 257 | D14* 258 | X160571008Y-130562193D03* 259 | D15* 260 | X167039235Y-121333213D03* 261 | %TD*% 262 | D16* 263 | %TO.C,*% 264 | X237997681Y-141953316D03* 265 | %TD*% 266 | %TO.C,*% 267 | X237997682Y-126713314D03* 268 | %TD*% 269 | D12* 270 | %TO.C,S8*% 271 | X120702850Y-114238702D03* 272 | D13* 273 | X125412944Y-116141704D03* 274 | D12* 275 | X130123038Y-118044706D03* 276 | D14* 277 | X119353519Y-117791969D03* 278 | D15* 279 | X122831875Y-112359406D03* 280 | D14* 281 | X123202765Y-121612090D03* 282 | D15* 283 | X129670992Y-112383110D03* 284 | %TD*% 285 | D16* 286 | %TO.C,*% 287 | X207997679Y-131793316D03* 288 | %TD*% 289 | %TO.C,*% 290 | X207997681Y-136873314D03* 291 | %TD*% 292 | D14* 293 | %TO.C,_139*% 294 | X318321385Y-92306244D03* 295 | %TD*% 296 | D12* 297 | %TO.C,S4*% 298 | X90986562Y-137069217D03* 299 | D13* 300 | X95696656Y-138972219D03* 301 | D12* 302 | X100406750Y-140875221D03* 303 | D14* 304 | X89637231Y-140622484D03* 305 | D15* 306 | X93115587Y-135189921D03* 307 | D14* 308 | X93486477Y-144442605D03* 309 | D15* 310 | X99954704Y-135213625D03* 311 | %TD*% 312 | D12* 313 | %TO.C,S16*% 314 | X168570062Y-147922825D03* 315 | D13* 316 | X173280156Y-149825827D03* 317 | D12* 318 | X177990250Y-151728829D03* 319 | D14* 320 | X167220731Y-151476092D03* 321 | D15* 322 | X170699087Y-146043529D03* 323 | D14* 324 | X171069977Y-155296213D03* 325 | D15* 326 | X177538204Y-146067233D03* 327 | %TD*% 328 | D16* 329 | %TO.C,*% 330 | X237997682Y-147033314D03* 331 | %TD*% 332 | D12* 333 | %TO.C,S6*% 334 | X105221613Y-101836229D03* 335 | D13* 336 | X109931707Y-103739231D03* 337 | D12* 338 | X114641801Y-105642233D03* 339 | D14* 340 | X103872282Y-105389496D03* 341 | D15* 342 | X107350638Y-99956933D03* 343 | D14* 344 | X107721528Y-109209617D03* 345 | D15* 346 | X114189755Y-99980637D03* 347 | %TD*% 348 | D12* 349 | %TO.C,S42*% 350 | X245982845Y-177886351D03* 351 | D13* 352 | X250692939Y-175983350D03* 353 | D12* 354 | X255403033Y-174080349D03* 355 | D14* 356 | X247480525Y-181379682D03* 357 | D15* 358 | X246208868Y-175055554D03* 359 | D14* 360 | X252903118Y-181453736D03* 361 | D15* 362 | X251144984Y-170321754D03* 363 | %TD*% 364 | D16* 365 | %TO.C,*% 366 | X207997680Y-126713314D03* 367 | %TD*% 368 | D12* 369 | %TO.C,S26*% 370 | X330471083Y-123258727D03* 371 | D13* 372 | X335181177Y-121355726D03* 373 | D12* 374 | X339891271Y-119452725D03* 375 | D14* 376 | X331968763Y-126752058D03* 377 | D15* 378 | X330697106Y-120427930D03* 379 | D14* 380 | X337391356Y-126826112D03* 381 | D15* 382 | X335633222Y-115694130D03* 383 | %TD*% 384 | D14* 385 | %TO.C,_132*% 386 | X229497679Y-178475316D03* 387 | %TD*% 388 | D16* 389 | %TO.C,*% 390 | X199997680Y-134333316D03* 391 | %TD*% 392 | D14* 393 | %TO.C,_135*% 394 | X119673975Y-92306243D03* 395 | %TD*% 396 | D12* 397 | %TO.C,S20*% 398 | X164975834Y-166962823D03* 399 | D13* 400 | X169685928Y-168865825D03* 401 | D12* 402 | X174396022Y-170768827D03* 403 | D14* 404 | X163626503Y-170516090D03* 405 | D15* 406 | X167104859Y-165083527D03* 407 | D14* 408 | X167475749Y-174336211D03* 409 | D15* 410 | X173943976Y-165107231D03* 411 | %TD*% 412 | D12* 413 | %TO.C,S15*% 414 | X165188618Y-105572313D03* 415 | D13* 416 | X169898712Y-107475315D03* 417 | D12* 418 | X174608806Y-109378317D03* 419 | D14* 420 | X163839287Y-109125580D03* 421 | D15* 422 | X167317643Y-103693017D03* 423 | D14* 424 | X167688533Y-112945701D03* 425 | D15* 426 | X174156760Y-103716721D03* 427 | %TD*% 428 | D16* 429 | %TO.C,*% 430 | X237997683Y-144493313D03* 431 | %TD*% 432 | D12* 433 | %TO.C,S17*% 434 | X175687587Y-130306332D03* 435 | D13* 436 | X180397681Y-132209334D03* 437 | D12* 438 | X185107775Y-134112336D03* 439 | D14* 440 | X174338256Y-133859599D03* 441 | D15* 442 | X177816612Y-128427036D03* 443 | D14* 444 | X178187502Y-137679720D03* 445 | D15* 446 | X184655729Y-128450740D03* 447 | %TD*% 448 | D14* 449 | %TO.C,_137*% 450 | X241449643Y-104921499D03* 451 | %TD*% 452 | D16* 453 | %TO.C,*% 454 | X229997681Y-126713314D03* 455 | %TD*% 456 | D12* 457 | %TO.C,S29*% 458 | X307872323Y-118044707D03* 459 | D13* 460 | X312582417Y-116141706D03* 461 | D12* 462 | X317292511Y-114238705D03* 463 | D14* 464 | X309370003Y-121538038D03* 465 | D15* 466 | X308098346Y-115213910D03* 467 | D14* 468 | X314792596Y-121612092D03* 469 | D15* 470 | X313034462Y-110480110D03* 471 | %TD*% 472 | D16* 473 | %TO.C,*% 474 | X229997679Y-131793315D03* 475 | %TD*% 476 | %TO.C,*% 477 | X237997681Y-149573315D03* 478 | %TD*% 479 | D14* 480 | %TO.C,_136*% 481 | X129728408Y-143500467D03* 482 | %TD*% 483 | D16* 484 | %TO.C,*% 485 | X207997680Y-139413315D03* 486 | %TD*% 487 | D12* 488 | %TO.C,S21*% 489 | X182592327Y-174080350D03* 490 | D13* 491 | X187302421Y-175983352D03* 492 | D12* 493 | X192012515Y-177886354D03* 494 | D14* 495 | X181242996Y-177633617D03* 496 | D15* 497 | X184721352Y-172201054D03* 498 | D14* 499 | X185092242Y-181453738D03* 500 | D15* 501 | X191560469Y-172224758D03* 502 | %TD*% 503 | D16* 504 | %TO.C,*% 505 | X229997681Y-149573313D03* 506 | %TD*% 507 | D12* 508 | %TO.C,S31*% 509 | X293814593Y-133970479D03* 510 | D13* 511 | X298524687Y-132067478D03* 512 | D12* 513 | X303234781Y-130164477D03* 514 | D14* 515 | X295312273Y-137463810D03* 516 | D15* 517 | X294040616Y-131139682D03* 518 | D14* 519 | X300734866Y-137537864D03* 520 | D15* 521 | X298976732Y-126405882D03* 522 | %TD*% 523 | D16* 524 | %TO.C,*% 525 | X199997681Y-136873315D03* 526 | %TD*% 527 | %TO.C,*% 528 | X220997680Y-145475317D03* 529 | %TD*% 530 | D12* 531 | %TO.C,S12*% 532 | X148995630Y-94931487D03* 533 | D13* 534 | X153705724Y-96834489D03* 535 | D12* 536 | X158415818Y-98737491D03* 537 | D14* 538 | X147646299Y-98484754D03* 539 | D15* 540 | X151124655Y-93052191D03* 541 | D14* 542 | X151495545Y-102304875D03* 543 | D15* 544 | X157963772Y-93075895D03* 545 | %TD*% 546 | D17* 547 | %TO.C,MCU1*% 548 | X211377681Y-110965316D03* 549 | D16* 550 | X211377680Y-113505317D03* 551 | X211377681Y-116045317D03* 552 | X211377679Y-118585315D03* 553 | X211377681Y-121125316D03* 554 | X211377680Y-123665317D03* 555 | X211377681Y-126205317D03* 556 | X211377679Y-128745315D03* 557 | X211377681Y-131285316D03* 558 | X211377680Y-133825317D03* 559 | X211377681Y-136365317D03* 560 | X211377679Y-138905315D03* 561 | X211377681Y-141445316D03* 562 | X226617682Y-110965315D03* 563 | X226617681Y-113505316D03* 564 | X226617683Y-116045317D03* 565 | X226617681Y-118585315D03* 566 | X226617682Y-121125315D03* 567 | X226617681Y-123665316D03* 568 | X226617683Y-126205317D03* 569 | X226617681Y-128745315D03* 570 | X226617682Y-131285315D03* 571 | X226617681Y-133825316D03* 572 | X226617683Y-136365317D03* 573 | X226617681Y-138905315D03* 574 | X226617682Y-141445315D03* 575 | %TD*% 576 | D18* 577 | %TO.C,PWR1*% 578 | X222647682Y-179090315D03* 579 | X215347681Y-179090318D03* 580 | D19* 581 | X220497681Y-180200315D03* 582 | X217497681Y-180200315D03* 583 | D18* 584 | X222647680Y-181300316D03* 585 | X215347682Y-181300316D03* 586 | D20* 587 | X216747681Y-178440316D03* 588 | X219747681Y-178440316D03* 589 | X221247681Y-178440316D03* 590 | %TD*% 591 | D12* 592 | %TO.C,S25*% 593 | X337588610Y-140875220D03* 594 | D13* 595 | X342298704Y-138972219D03* 596 | D12* 597 | X347008798Y-137069218D03* 598 | D14* 599 | X339086290Y-144368551D03* 600 | D15* 601 | X337814633Y-138044423D03* 602 | D14* 603 | X344508883Y-144442605D03* 604 | D15* 605 | X342750749Y-133310623D03* 606 | %TD*% 607 | D16* 608 | %TO.C,*% 609 | X199997681Y-126713315D03* 610 | %TD*% 611 | D12* 612 | %TO.C,S13*% 613 | X150953568Y-140805297D03* 614 | D13* 615 | X155663662Y-142708299D03* 616 | D12* 617 | X160373756Y-144611301D03* 618 | D14* 619 | X149604237Y-144358564D03* 620 | D15* 621 | X153082593Y-138926001D03* 622 | D14* 623 | X153453483Y-148178685D03* 624 | D15* 625 | X159921710Y-138949705D03* 626 | %TD*% 627 | D14* 628 | %TO.C,_129*% 629 | X208497679Y-106475314D03* 630 | %TD*% 631 | D12* 632 | %TO.C,S34*% 633 | X277621603Y-144611302D03* 634 | D13* 635 | X282331697Y-142708301D03* 636 | D12* 637 | X287041791Y-140805300D03* 638 | D14* 639 | X279119283Y-148104633D03* 640 | D15* 641 | X277847626Y-141780505D03* 642 | D14* 643 | X284541876Y-148178687D03* 644 | D15* 645 | X282783742Y-137046705D03* 646 | %TD*% 647 | D12* 648 | %TO.C,S23*% 649 | X348087577Y-116141203D03* 650 | D13* 651 | X352797671Y-114238202D03* 652 | D12* 653 | X357507765Y-112335201D03* 654 | D14* 655 | X349585257Y-119634534D03* 656 | D15* 657 | X348313600Y-113310406D03* 658 | D14* 659 | X355007850Y-119708588D03* 660 | D15* 661 | X353249716Y-108576606D03* 662 | %TD*% 663 | D16* 664 | %TO.C,*% 665 | X237997683Y-134333313D03* 666 | %TD*% 667 | D14* 668 | %TO.C,_140*% 669 | X308266955Y-143500466D03* 670 | %TD*% 671 | D16* 672 | %TO.C,*% 673 | X229997682Y-144493314D03* 674 | %TD*% 675 | %TO.C,*% 676 | X237997681Y-129253315D03* 677 | %TD*% 678 | D12* 679 | %TO.C,S7*% 680 | X113585324Y-131855196D03* 681 | D13* 682 | X118295418Y-133758198D03* 683 | D12* 684 | X123005512Y-135661200D03* 685 | D14* 686 | X112235993Y-135408463D03* 687 | D15* 688 | X115714349Y-129975900D03* 689 | D14* 690 | X116085239Y-139228584D03* 691 | D15* 692 | X122553466Y-129999604D03* 693 | %TD*% 694 | D16* 695 | %TO.C,*% 696 | X199997680Y-147033314D03* 697 | %TD*% 698 | D12* 699 | %TO.C,S11*% 700 | X141878105Y-112547982D03* 701 | D13* 702 | X146588199Y-114450984D03* 703 | D12* 704 | X151298293Y-116353986D03* 705 | D14* 706 | X140528774Y-116101249D03* 707 | D15* 708 | X144007130Y-110668686D03* 709 | D14* 710 | X144378020Y-119921370D03* 711 | D15* 712 | X150846247Y-110692390D03* 713 | %TD*% 714 | D14* 715 | %TO.C,_133*% 716 | X196545721Y-104921500D03* 717 | %TD*% 718 | D12* 719 | %TO.C,S24*% 720 | X340970053Y-98524708D03* 721 | D13* 722 | X345680147Y-96621707D03* 723 | D12* 724 | X350390241Y-94718706D03* 725 | D14* 726 | X342467733Y-102018039D03* 727 | D15* 728 | X341196076Y-95693911D03* 729 | D14* 730 | X347890326Y-102092093D03* 731 | D15* 732 | X346132192Y-90960111D03* 733 | %TD*% 734 | D16* 735 | %TO.C,*% 736 | X207997679Y-141953316D03* 737 | %TD*% 738 | D12* 739 | %TO.C,S39*% 740 | X245770060Y-116495843D03* 741 | D13* 742 | X250480154Y-114592842D03* 743 | D12* 744 | X255190248Y-112689841D03* 745 | D14* 746 | X247267740Y-119989174D03* 747 | D15* 748 | X245996083Y-113665046D03* 749 | D14* 750 | X252690333Y-120063228D03* 751 | D15* 752 | X250932199Y-108931246D03* 753 | %TD*% 754 | D16* 755 | %TO.C,*% 756 | X229997681Y-147033314D03* 757 | %TD*% 758 | D12* 759 | %TO.C,S10*% 760 | X134760578Y-130164475D03* 761 | D13* 762 | X139470672Y-132067477D03* 763 | D12* 764 | X144180766Y-133970479D03* 765 | D14* 766 | X133411247Y-133717742D03* 767 | D15* 768 | X136889603Y-128285179D03* 769 | D14* 770 | X137260493Y-137537863D03* 771 | D15* 772 | X143728720Y-128308883D03* 773 | %TD*% 774 | D12* 775 | %TO.C,S35*% 776 | X270504079Y-126994808D03* 777 | D13* 778 | X275214173Y-125091807D03* 779 | D12* 780 | X279924267Y-123188806D03* 781 | D14* 782 | X272001759Y-130488139D03* 783 | D15* 784 | X270730102Y-124164011D03* 785 | D14* 786 | X277424352Y-130562193D03* 787 | D15* 788 | X275666218Y-119430211D03* 789 | %TD*% 790 | D16* 791 | %TO.C,*% 792 | X207997680Y-129253315D03* 793 | %TD*% 794 | %TO.C,*% 795 | X229997680Y-129253316D03* 796 | %TD*% 797 | D12* 798 | %TO.C,S2*% 799 | X80487595Y-112335197D03* 800 | D13* 801 | X85197689Y-114238199D03* 802 | D12* 803 | X89907783Y-116141201D03* 804 | D14* 805 | X79138264Y-115888464D03* 806 | D15* 807 | X82616620Y-110455901D03* 808 | D14* 809 | X82987510Y-119708585D03* 810 | D15* 811 | X89455737Y-110479605D03* 812 | %TD*% 813 | D12* 814 | %TO.C,S18*% 815 | X182805112Y-112689837D03* 816 | D13* 817 | X187515206Y-114592839D03* 818 | D12* 819 | X192225300Y-116495841D03* 820 | D14* 821 | X181455781Y-116243104D03* 822 | D15* 823 | X184934137Y-110810541D03* 824 | D14* 825 | X185305027Y-120063225D03* 826 | D15* 827 | X191773254Y-110834245D03* 828 | %TD*% 829 | D16* 830 | %TO.C,*% 831 | X199997680Y-129253315D03* 832 | %TD*% 833 | D12* 834 | %TO.C,S36*% 835 | X263386555Y-109378315D03* 836 | D13* 837 | X268096649Y-107475314D03* 838 | D12* 839 | X272806743Y-105572313D03* 840 | D14* 841 | X264884235Y-112871646D03* 842 | D15* 843 | X263612578Y-106547518D03* 844 | D14* 845 | X270306828Y-112945700D03* 846 | D15* 847 | X268548694Y-101813718D03* 848 | %TD*% 849 | D16* 850 | %TO.C,*% 851 | X207997681Y-147033314D03* 852 | %TD*% 853 | D12* 854 | %TO.C,S1*% 855 | X73370069Y-129951691D03* 856 | D13* 857 | X78080163Y-131854693D03* 858 | D12* 859 | X82790257Y-133757695D03* 860 | D14* 861 | X72020738Y-133504958D03* 862 | D15* 863 | X75499094Y-128072395D03* 864 | D14* 865 | X75869984Y-137325079D03* 866 | D15* 867 | X82338211Y-128096099D03* 868 | %TD*% 869 | D16* 870 | %TO.C,*% 871 | X237997682Y-136873314D03* 872 | %TD*% 873 | %TO.C,*% 874 | X207997681Y-144493315D03* 875 | %TD*% 876 | D12* 877 | %TO.C,S28*% 878 | X314989848Y-135661199D03* 879 | D13* 880 | X319699942Y-133758198D03* 881 | D12* 882 | X324410036Y-131855197D03* 883 | D14* 884 | X316487528Y-139154530D03* 885 | D15* 886 | X315215871Y-132830402D03* 887 | D14* 888 | X321910121Y-139228584D03* 889 | D15* 890 | X320151987Y-128096602D03* 891 | %TD*% 892 | D16* 893 | %TO.C,*% 894 | X199997681Y-131793315D03* 895 | %TD*% 896 | %TO.C,*% 897 | X207997680Y-149573315D03* 898 | %TD*% 899 | D12* 900 | %TO.C,S3*% 901 | X87605120Y-94718704D03* 902 | D13* 903 | X92315214Y-96621706D03* 904 | D12* 905 | X97025308Y-98524708D03* 906 | D14* 907 | X86255789Y-98271971D03* 908 | D15* 909 | X89734145Y-92839408D03* 910 | D14* 911 | X90105035Y-102092092D03* 912 | D15* 913 | X96573262Y-92863112D03* 914 | %TD*% 915 | D12* 916 | %TO.C,S19*% 917 | X147359342Y-159845297D03* 918 | D13* 919 | X152069436Y-161748299D03* 920 | D12* 921 | X156779530Y-163651301D03* 922 | D14* 923 | X146010011Y-163398564D03* 924 | D15* 925 | X149488367Y-157966001D03* 926 | D14* 927 | X149859257Y-167218685D03* 928 | D15* 929 | X156327484Y-157989705D03* 930 | %TD*% 931 | D16* 932 | %TO.C,*% 933 | X229997681Y-141953314D03* 934 | %TD*% 935 | %TO.C,*% 936 | X237997681Y-139413315D03* 937 | %TD*% 938 | D14* 939 | %TO.C,_131*% 940 | X208497681Y-178475313D03* 941 | %TD*% 942 | D16* 943 | %TO.C,*% 944 | X229997681Y-139413313D03* 945 | %TD*% 946 | D12* 947 | %TO.C,S33*% 948 | X279579541Y-98737492D03* 949 | D13* 950 | X284289635Y-96834491D03* 951 | D12* 952 | X288999729Y-94931490D03* 953 | D14* 954 | X281077221Y-102230823D03* 955 | D15* 956 | X279805564Y-95906695D03* 957 | D14* 958 | X286499814Y-102304877D03* 959 | D15* 960 | X284741680Y-91172895D03* 961 | %TD*% 962 | D12* 963 | %TO.C,S9*% 964 | X127820376Y-96622210D03* 965 | D13* 966 | X132530470Y-98525212D03* 967 | D12* 968 | X137240564Y-100428214D03* 969 | D14* 970 | X126471045Y-100175477D03* 971 | D15* 972 | X129949401Y-94742914D03* 973 | D14* 974 | X130320291Y-103995598D03* 975 | D15* 976 | X136788518Y-94766618D03* 977 | %TD*% 978 | D12* 979 | %TO.C,S30*% 980 | X300754799Y-100428214D03* 981 | D13* 982 | X305464893Y-98525213D03* 983 | D12* 984 | X310174987Y-96622212D03* 985 | D14* 986 | X302252479Y-103921545D03* 987 | D15* 988 | X300980822Y-97597417D03* 989 | D14* 990 | X307675072Y-103995599D03* 991 | D15* 992 | X305916938Y-92863617D03* 993 | %TD*% 994 | D12* 995 | %TO.C,S40*% 996 | X281215831Y-163651301D03* 997 | D13* 998 | X285925925Y-161748300D03* 999 | D12* 1000 | X290636019Y-159845299D03* 1001 | D14* 1002 | X282713511Y-167144632D03* 1003 | D15* 1004 | X281441854Y-160820504D03* 1005 | D14* 1006 | X288136104Y-167218686D03* 1007 | D15* 1008 | X286377970Y-156086704D03* 1009 | %TD*% 1010 | D16* 1011 | %TO.C,*% 1012 | X229997682Y-134333314D03* 1013 | %TD*% 1014 | D12* 1015 | %TO.C,S41*% 1016 | X263599338Y-170768826D03* 1017 | D13* 1018 | X268309432Y-168865825D03* 1019 | D12* 1020 | X273019526Y-166962824D03* 1021 | D14* 1022 | X265097018Y-174262157D03* 1023 | D15* 1024 | X263825361Y-167938029D03* 1025 | D14* 1026 | X270519611Y-174336211D03* 1027 | D15* 1028 | X268761477Y-163204229D03* 1029 | %TD*% 1030 | D12* 1031 | %TO.C,S32*% 1032 | X286697067Y-116353984D03* 1033 | D13* 1034 | X291407161Y-114450983D03* 1035 | D12* 1036 | X296117255Y-112547982D03* 1037 | D14* 1038 | X288194747Y-119847315D03* 1039 | D15* 1040 | X286923090Y-113523187D03* 1041 | D14* 1042 | X293617340Y-119921369D03* 1043 | D15* 1044 | X291859206Y-108789387D03* 1045 | %TD*% 1046 | D12* 1047 | %TO.C,S27*% 1048 | X323353560Y-105642234D03* 1049 | D13* 1050 | X328063654Y-103739233D03* 1051 | D12* 1052 | X332773748Y-101836232D03* 1053 | D14* 1054 | X324851240Y-109135565D03* 1055 | D15* 1056 | X323579583Y-102811437D03* 1057 | D14* 1058 | X330273833Y-109209619D03* 1059 | D15* 1060 | X328515699Y-98077637D03* 1061 | %TD*% 1062 | D16* 1063 | %TO.C,*% 1064 | X237997681Y-131793312D03* 1065 | %TD*% 1066 | %TO.C,*% 1067 | X207997681Y-134333315D03* 1068 | %TD*% 1069 | D14* 1070 | %TO.C,_138*% 1071 | X239259951Y-185725618D03* 1072 | %TD*% 1073 | D16* 1074 | %TO.C,*% 1075 | X199997681Y-149573314D03* 1076 | %TD*% 1077 | %TO.C,*% 1078 | X216997682Y-145475314D03* 1079 | %TD*% 1080 | %TO.C,*% 1081 | X199997680Y-139413315D03* 1082 | %TD*% 1083 | D14* 1084 | %TO.C,_130*% 1085 | X229497681Y-106475313D03* 1086 | %TD*% 1087 | D12* 1088 | %TO.C,S38*% 1089 | X252887586Y-134112334D03* 1090 | D13* 1091 | X257597680Y-132209333D03* 1092 | D12* 1093 | X262307774Y-130306332D03* 1094 | D14* 1095 | X254385266Y-137605665D03* 1096 | D15* 1097 | X253113609Y-131281537D03* 1098 | D14* 1099 | X259807859Y-137679719D03* 1100 | D15* 1101 | X258049725Y-126547737D03* 1102 | %TD*% 1103 | D12* 1104 | %TO.C,S22*% 1105 | X355205103Y-133757693D03* 1106 | D13* 1107 | X359915197Y-131854692D03* 1108 | D12* 1109 | X364625291Y-129951691D03* 1110 | D14* 1111 | X356702783Y-137251024D03* 1112 | D15* 1113 | X355431126Y-130926896D03* 1114 | D14* 1115 | X362125376Y-137325078D03* 1116 | D15* 1117 | X360367242Y-126193096D03* 1118 | %TD*% 1119 | D16* 1120 | %TO.C,*% 1121 | X229997681Y-136873314D03* 1122 | %TD*% 1123 | %TO.C,*% 1124 | X199997680Y-144493316D03* 1125 | %TD*% 1126 | D14* 1127 | %TO.C,_134*% 1128 | X198735411Y-185725617D03* 1129 | %TD*% 1130 | D12* 1131 | %TO.C,S5*% 1132 | X98104087Y-119452724D03* 1133 | D13* 1134 | X102814181Y-121355726D03* 1135 | D12* 1136 | X107524275Y-123258728D03* 1137 | D14* 1138 | X96754756Y-123005991D03* 1139 | D15* 1140 | X100233112Y-117573428D03* 1141 | D14* 1142 | X100604002Y-126826112D03* 1143 | D15* 1144 | X107072229Y-117597132D03* 1145 | %TD*% 1146 | D16* 1147 | %TO.C,*% 1148 | X199997681Y-141953315D03* 1149 | %TD*% 1150 | M02* 1151 | -------------------------------------------------------------------------------- /pcbs/jlcpcb/gerber/kbd-NPTH-drl_map.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kumekay/crabapplepad/3208f54d65daefd344864523d70714aa9cf61db7/pcbs/jlcpcb/gerber/kbd-NPTH-drl_map.pdf -------------------------------------------------------------------------------- /pcbs/jlcpcb/gerber/kbd-NPTH.drl: -------------------------------------------------------------------------------- 1 | M48 2 | ; DRILL file {KiCad 8.0.3} date 2024-06-30T16:48:01+0200 3 | ; FORMAT={-:-/ absolute / inch / decimal} 4 | ; #@! TF.CreationDate,2024-06-30T16:48:01+02:00 5 | ; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.3 6 | ; #@! TF.FileFunction,NonPlated,1,2,NPTH 7 | FMAT,2 8 | INCH 9 | ; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill 10 | T1C0.0354 11 | ; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill 12 | T2C0.0709 13 | ; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill 14 | T3C0.0866 15 | ; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill 16 | T4C0.1575 17 | % 18 | G90 19 | G05 20 | T1 21 | X8.5629Y-7.0945 22 | X8.681Y-7.0945 23 | T2 24 | X2.8886Y-5.1162 25 | X3.1688Y-4.4226 26 | X3.2595Y-5.2661 27 | X3.449Y-3.7291 28 | X3.5397Y-4.5725 29 | X3.5821Y-5.3964 30 | X3.8199Y-3.8789 31 | X3.8624Y-4.7029 32 | X3.953Y-5.5463 33 | X4.1426Y-4.0093 34 | X4.2332Y-4.8527 35 | X4.4719Y-5.1911 36 | X4.5135Y-4.1591 37 | X4.7521Y-4.4976 38 | X4.8427Y-5.341 39 | X5.0323Y-3.804 40 | X5.123Y-4.6474 41 | X5.3055Y-5.1246 42 | X5.4032Y-3.9539 43 | X5.5858Y-4.431 44 | X5.6764Y-5.2744 45 | X5.8015Y-6.2931 46 | X5.866Y-3.7375 47 | X5.9431Y-5.5435 48 | X5.9566Y-4.5809 49 | X6.1724Y-6.443 50 | X6.2233Y-4.85 51 | X6.2368Y-3.8873 52 | X6.3139Y-5.6934 53 | X6.4951Y-6.5733 54 | X6.5035Y-4.1564 55 | X6.5941Y-4.9998 56 | X6.6366Y-5.8237 57 | X6.866Y-6.7232 58 | X6.8744Y-4.3062 59 | X6.9168Y-5.1302 60 | X7.0075Y-5.9736 61 | X7.1887Y-6.8536 62 | X7.1971Y-4.4366 63 | X7.2877Y-5.28 64 | X7.5595Y-7.0034 65 | X7.5679Y-4.5865 66 | X9.676Y-4.5865 67 | X9.6844Y-7.0034 68 | X9.9562Y-5.28 69 | X10.0469Y-4.4366 70 | X10.0552Y-6.8536 71 | X10.2364Y-5.9736 72 | X10.3271Y-5.1302 73 | X10.3695Y-4.3062 74 | X10.3779Y-6.7232 75 | X10.6073Y-5.8237 76 | X10.6498Y-4.9998 77 | X10.7404Y-4.1564 78 | X10.7488Y-6.5733 79 | X10.93Y-5.6934 80 | X11.0071Y-3.8873 81 | X11.0206Y-4.85 82 | X11.0715Y-6.443 83 | X11.2873Y-4.5809 84 | X11.3009Y-5.5435 85 | X11.3779Y-3.7375 86 | X11.4424Y-6.2931 87 | X11.5675Y-5.2744 88 | X11.6582Y-4.431 89 | X11.8407Y-3.9539 90 | X11.9384Y-5.1246 91 | X12.121Y-4.6474 92 | X12.2116Y-3.804 93 | X12.4012Y-5.341 94 | X12.4918Y-4.4976 95 | X12.7305Y-4.1591 96 | X12.772Y-5.1911 97 | X13.0107Y-4.8527 98 | X13.1013Y-4.0093 99 | X13.2909Y-5.5463 100 | X13.3815Y-4.7029 101 | X13.424Y-3.8789 102 | X13.6618Y-5.3964 103 | X13.7042Y-4.5725 104 | X13.7949Y-3.7291 105 | X13.9845Y-5.2661 106 | X14.0751Y-4.4226 107 | X14.3553Y-5.1162 108 | T3 109 | X4.7116Y-3.6341 110 | X5.1074Y-5.6496 111 | X7.738Y-4.1308 112 | X7.8242Y-7.312 113 | X8.2086Y-4.1919 114 | X8.2086Y-7.0266 115 | X9.0353Y-7.0266 116 | X9.0353Y-4.1919 117 | X9.4197Y-7.312 118 | X9.5059Y-4.1308 119 | X12.1365Y-5.6496 120 | X12.5323Y-3.6341 121 | T4 122 | X3.074Y-5.1911 123 | X3.3542Y-4.4976 124 | X3.6345Y-3.804 125 | X3.7676Y-5.4713 126 | X4.0478Y-4.7778 127 | X4.328Y-4.0842 128 | X4.6573Y-5.2661 129 | X4.9375Y-4.5725 130 | X5.2177Y-3.8789 131 | X5.491Y-5.1995 132 | X5.7712Y-4.5059 133 | X5.987Y-6.368 134 | X6.0514Y-3.8124 135 | X6.1285Y-5.6184 136 | X6.4087Y-4.9249 137 | X6.6805Y-6.6483 138 | X6.6889Y-4.2313 139 | X6.8221Y-5.8987 140 | X7.1023Y-5.2051 141 | X7.3741Y-6.9285 142 | X7.3825Y-4.5115 143 | X9.8614Y-4.5115 144 | X9.8698Y-6.9285 145 | X10.1416Y-5.2051 146 | X10.4219Y-5.8987 147 | X10.555Y-4.2313 148 | X10.5634Y-6.6483 149 | X10.8352Y-4.9249 150 | X11.1154Y-5.6184 151 | X11.1925Y-3.8124 152 | X11.2569Y-6.368 153 | X11.4727Y-4.5059 154 | X11.7529Y-5.1995 155 | X12.0262Y-3.8789 156 | X12.3064Y-4.5725 157 | X12.5866Y-5.2661 158 | X12.9159Y-4.0842 159 | X13.1961Y-4.7778 160 | X13.4763Y-5.4713 161 | X13.6095Y-3.804 162 | X13.8897Y-4.4976 163 | X14.1699Y-5.1911 164 | M30 165 | -------------------------------------------------------------------------------- /pcbs/jlcpcb/gerber/kbd-PTH-drl_map.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kumekay/crabapplepad/3208f54d65daefd344864523d70714aa9cf61db7/pcbs/jlcpcb/gerber/kbd-PTH-drl_map.pdf -------------------------------------------------------------------------------- /pcbs/jlcpcb/gerber/kbd-PTH.drl: -------------------------------------------------------------------------------- 1 | M48 2 | ; DRILL file {KiCad 8.0.3} date 2024-06-30T16:48:01+0200 3 | ; FORMAT={-:-/ absolute / inch / decimal} 4 | ; #@! TF.CreationDate,2024-06-30T16:48:01+02:00 5 | ; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.3 6 | ; #@! TF.FileFunction,Plated,1,2,PTH 7 | FMAT,2 8 | INCH 9 | ; #@! TA.AperFunction,Plated,PTH,ViaDrill 10 | T1C0.0118 11 | ; #@! TA.AperFunction,Plated,PTH,ComponentDrill 12 | T2C0.0118 13 | ; #@! TA.AperFunction,Plated,PTH,ComponentDrill 14 | T3C0.0394 15 | ; #@! TA.AperFunction,Plated,PTH,ComponentDrill 16 | T4C0.0430 17 | ; #@! TA.AperFunction,Plated,PTH,ComponentDrill 18 | T5C0.0472 19 | ; #@! TA.AperFunction,Plated,PTH,ComponentDrill 20 | T6C0.0591 21 | % 22 | G90 23 | G05 24 | T1 25 | X6.9427Y-6.3604 26 | X7.547Y-6.1192 27 | X7.7333Y-4.8574 28 | X7.7463Y-5.4707 29 | X7.7874Y-5.4733 30 | X7.8426Y-6.3539 31 | X8.1726Y-4.5139 32 | X8.1926Y-6.8539 33 | X8.2026Y-6.0439 34 | X8.5926Y-4.5539 35 | X8.6026Y-5.1339 36 | X8.7157Y-5.6174 37 | X8.7957Y-5.6574 38 | X9.0026Y-6.0439 39 | X9.0226Y-6.8639 40 | X9.0526Y-4.4939 41 | X9.4026Y-6.4039 42 | X9.466Y-5.4668 43 | X9.492Y-4.8787 44 | X9.512Y-5.1287 45 | X9.5293Y-5.5167 46 | X9.7226Y-6.1439 47 | X10.0928Y-6.2705 48 | X10.4257Y-5.4811 49 | X11.0263Y-5.2492 50 | T2 51 | X2.8246Y-5.0097 52 | X3.1048Y-4.3161 53 | X3.3851Y-3.6226 54 | X3.5182Y-5.2899 55 | X3.524Y-5.0757 56 | X3.7984Y-4.5963 57 | X3.8043Y-4.3822 58 | X4.0786Y-3.9028 59 | X4.0845Y-3.6886 60 | X4.2176Y-5.3559 61 | X4.4079Y-5.0846 62 | X4.4978Y-4.6624 63 | X4.6881Y-4.3911 64 | X4.778Y-3.9688 65 | X4.9683Y-3.6975 66 | X5.1073Y-5.1507 67 | X5.2416Y-5.0181 68 | X5.3875Y-4.4571 69 | X5.5218Y-4.3245 70 | X5.6678Y-3.7635 71 | X5.7376Y-6.1866 72 | X5.802Y-3.6309 73 | X5.8791Y-5.437 74 | X5.941Y-5.0841 75 | X6.1593Y-4.7434 76 | X6.2212Y-4.3905 77 | X6.4311Y-6.4668 78 | X6.437Y-6.2526 79 | X6.4395Y-4.0499 80 | X6.5014Y-3.697 81 | X6.5726Y-5.7172 82 | X6.5785Y-5.503 83 | X6.8529Y-5.0236 84 | X6.8587Y-4.8095 85 | X7.1247Y-6.747 86 | X7.1306Y-6.5328 87 | X7.1331Y-4.3301 88 | X7.1389Y-4.1159 89 | X7.2721Y-5.7832 90 | X7.5523Y-5.0897 91 | X7.8241Y-6.8131 92 | X7.8325Y-4.3961 93 | X9.4114Y-4.3961 94 | X9.4198Y-6.8131 95 | X9.6916Y-5.0897 96 | X9.9718Y-5.7832 97 | X10.105Y-4.1159 98 | X10.1108Y-4.3301 99 | X10.1133Y-6.5328 100 | X10.1192Y-6.747 101 | X10.3852Y-4.8095 102 | X10.391Y-5.0236 103 | X10.6654Y-5.503 104 | X10.6713Y-5.7172 105 | X10.7425Y-3.697 106 | X10.8044Y-4.0499 107 | X10.8069Y-6.2526 108 | X10.8128Y-6.4668 109 | X11.0227Y-4.3905 110 | X11.0846Y-4.7434 111 | X11.3029Y-5.0841 112 | X11.3648Y-5.437 113 | X11.4419Y-3.6309 114 | X11.5063Y-6.1866 115 | X11.5762Y-3.7635 116 | X11.7221Y-4.3245 117 | X11.8564Y-4.4571 118 | X12.0023Y-5.0181 119 | X12.1366Y-5.1507 120 | X12.2756Y-3.6975 121 | X12.4659Y-3.9688 122 | X12.5558Y-4.3911 123 | X12.7461Y-4.6624 124 | X12.836Y-5.0846 125 | X13.0263Y-5.3559 126 | X13.1594Y-3.6886 127 | X13.1653Y-3.9028 128 | X13.4397Y-4.3822 129 | X13.4455Y-4.5963 130 | X13.7199Y-5.0757 131 | X13.7257Y-5.2899 132 | X13.8589Y-3.6226 133 | X14.1391Y-4.3161 134 | X14.4193Y-5.0097 135 | T3 136 | X7.8739Y-5.0887 137 | X7.8739Y-5.2887 138 | X7.8739Y-5.4887 139 | X7.8739Y-5.6887 140 | X7.8739Y-5.7887 141 | X7.8739Y-4.9887 142 | X7.8739Y-5.1887 143 | X7.8739Y-5.3887 144 | X7.8739Y-5.5887 145 | X7.8739Y-5.8887 146 | X8.1889Y-5.1887 147 | X8.1889Y-5.5887 148 | X8.1889Y-4.9887 149 | X8.1889Y-5.0887 150 | X8.1889Y-5.4887 151 | X8.1889Y-5.8887 152 | X8.1889Y-5.2887 153 | X8.1889Y-5.3887 154 | X8.1889Y-5.6887 155 | X8.1889Y-5.7887 156 | X8.5432Y-5.7274 157 | X8.7007Y-5.7274 158 | X9.055Y-5.1887 159 | X9.055Y-5.0887 160 | X9.055Y-4.9887 161 | X9.055Y-5.3887 162 | X9.055Y-5.4887 163 | X9.055Y-5.5887 164 | X9.055Y-5.7887 165 | X9.055Y-5.8887 166 | X9.055Y-5.2887 167 | X9.055Y-5.6887 168 | X9.37Y-5.0887 169 | X9.37Y-5.1887 170 | X9.37Y-5.4887 171 | X9.37Y-5.5887 172 | X9.37Y-5.8887 173 | X9.37Y-4.9887 174 | X9.37Y-5.3887 175 | X9.37Y-5.7887 176 | X9.37Y-5.2887 177 | X9.37Y-5.6887 178 | T4 179 | X8.322Y-4.6687 180 | X8.322Y-5.0687 181 | X8.322Y-5.4687 182 | X8.322Y-4.4687 183 | X8.322Y-4.8687 184 | X8.322Y-5.2687 185 | X8.322Y-4.3687 186 | X8.322Y-4.5687 187 | X8.322Y-4.7687 188 | X8.322Y-4.9687 189 | X8.322Y-5.1687 190 | X8.322Y-5.3687 191 | X8.322Y-5.5687 192 | X8.922Y-4.4687 193 | X8.922Y-4.6687 194 | X8.922Y-4.8687 195 | X8.922Y-5.0687 196 | X8.922Y-5.2687 197 | X8.922Y-5.4687 198 | X8.922Y-4.3687 199 | X8.922Y-4.7687 200 | X8.922Y-5.1687 201 | X8.922Y-5.5687 202 | X8.922Y-4.5687 203 | X8.922Y-4.9687 204 | X8.922Y-5.3687 205 | T5 206 | X2.8355Y-5.2561 207 | X2.987Y-5.4065 208 | X3.1157Y-4.5625 209 | X3.2672Y-4.7129 210 | X3.3959Y-3.869 211 | X3.529Y-5.5363 212 | X3.5474Y-4.0194 213 | X3.6806Y-5.6867 214 | X3.8092Y-4.8428 215 | X3.9608Y-4.9932 216 | X4.0895Y-4.1492 217 | X4.241Y-4.2996 218 | X4.4187Y-5.331 219 | X4.5703Y-5.4814 220 | X4.699Y-4.6375 221 | X4.8505Y-4.7879 222 | X4.9792Y-3.9439 223 | X5.1307Y-4.0943 224 | X5.2524Y-5.2645 225 | X5.404Y-5.4149 226 | X5.5326Y-4.5709 227 | X5.6842Y-4.7213 228 | X5.7484Y-6.433 229 | X5.8128Y-3.8774 230 | X5.8899Y-5.6834 231 | X5.9Y-6.5834 232 | X5.9644Y-4.0278 233 | X6.0415Y-5.8338 234 | X6.1701Y-4.9898 235 | X6.3217Y-5.1402 236 | X6.442Y-6.7132 237 | X6.4504Y-4.2963 238 | X6.5835Y-5.9636 239 | X6.5935Y-6.8636 240 | X6.6019Y-4.4467 241 | X6.735Y-6.114 242 | X6.8637Y-5.2701 243 | X7.0153Y-5.4205 244 | X7.1356Y-6.9934 245 | X7.1439Y-4.5765 246 | X7.2871Y-7.1438 247 | X7.2955Y-4.7269 248 | X9.735Y-4.724 249 | X9.7433Y-7.1409 250 | X9.9484Y-4.7269 251 | X9.9568Y-7.1438 252 | X10.0152Y-5.4175 253 | X10.2287Y-5.4205 254 | X10.2954Y-6.1111 255 | X10.4285Y-4.4438 256 | X10.4369Y-6.8607 257 | X10.5089Y-6.114 258 | X10.642Y-4.4467 259 | X10.6504Y-6.8636 260 | X10.7087Y-5.1373 261 | X10.9222Y-5.1402 262 | X10.9889Y-5.8309 263 | X11.066Y-4.0248 264 | X11.1305Y-6.5805 265 | X11.2024Y-5.8338 266 | X11.2795Y-4.0278 267 | X11.3439Y-6.5834 268 | X11.3462Y-4.7184 269 | X11.5597Y-4.7213 270 | X11.6265Y-5.412 271 | X11.84Y-5.4149 272 | X11.8997Y-4.0914 273 | X12.1132Y-4.0943 274 | X12.1799Y-4.785 275 | X12.3934Y-4.7879 276 | X12.4601Y-5.4785 277 | X12.6736Y-5.4814 278 | X12.7894Y-4.2967 279 | X13.0029Y-4.2996 280 | X13.0696Y-4.9902 281 | X13.2831Y-4.9932 282 | X13.3499Y-5.6838 283 | X13.483Y-4.0165 284 | X13.5633Y-5.6867 285 | X13.6965Y-4.0194 286 | X13.7632Y-4.71 287 | X13.9767Y-4.7129 288 | X14.0434Y-5.4036 289 | X14.2569Y-5.4065 290 | T6 291 | X2.9724Y-5.0422 292 | X3.2417Y-5.0432 293 | X3.2526Y-4.3487 294 | X3.5219Y-4.3496 295 | X3.5328Y-3.6551 296 | X3.666Y-5.3224 297 | X3.8021Y-3.656 298 | X3.9352Y-5.3234 299 | X3.9462Y-4.6289 300 | X4.2154Y-4.6298 301 | X4.2264Y-3.9353 302 | X4.4957Y-3.9362 303 | X4.5557Y-5.1172 304 | X4.8249Y-5.1181 305 | X4.8359Y-4.4236 306 | X5.1052Y-4.4245 307 | X5.1161Y-3.73 308 | X5.3854Y-3.731 309 | X5.3894Y-5.0506 310 | X5.6586Y-5.0515 311 | X5.6696Y-4.357 312 | X5.8854Y-6.2191 313 | X5.9388Y-4.358 314 | X5.9498Y-3.6635 315 | X6.0269Y-5.4695 316 | X6.1546Y-6.2201 317 | X6.219Y-3.6644 318 | X6.2961Y-5.4705 319 | X6.3071Y-4.776 320 | X6.5763Y-4.7769 321 | X6.5789Y-6.4994 322 | X6.5873Y-4.0824 323 | X6.7204Y-5.7497 324 | X6.8482Y-6.5003 325 | X6.8566Y-4.0833 326 | X6.9897Y-5.7507 327 | X7.0007Y-5.0562 328 | X7.2699Y-5.0571 329 | X7.2725Y-6.7796 330 | X7.2809Y-4.3626 331 | X7.5418Y-6.7805 332 | X7.5501Y-4.3636 333 | X9.6849Y-4.475 334 | X9.6933Y-6.892 335 | X9.8792Y-4.2886 336 | X9.8876Y-6.7056 337 | X9.9651Y-5.1686 338 | X10.1594Y-4.9822 339 | X10.2453Y-5.8621 340 | X10.3784Y-4.1948 341 | X10.3868Y-6.6117 342 | X10.4397Y-5.6758 343 | X10.5728Y-4.0084 344 | X10.5812Y-6.4254 345 | X10.6587Y-4.8883 346 | X10.853Y-4.702 347 | X10.9389Y-5.5819 348 | X11.016Y-3.7759 349 | X11.0804Y-6.3315 350 | X11.1332Y-5.3955 351 | X11.2103Y-3.5895 352 | X11.2747Y-6.1451 353 | X11.2962Y-4.4694 354 | X11.4905Y-4.283 355 | X11.5764Y-5.163 356 | X11.7707Y-4.9766 357 | X11.8496Y-3.8424 358 | X12.044Y-3.656 359 | X12.1299Y-4.536 360 | X12.3242Y-4.3496 361 | X12.4101Y-5.2295 362 | X12.6044Y-5.0432 363 | X12.7394Y-4.0477 364 | X12.9337Y-3.8613 365 | X13.0196Y-4.7413 366 | X13.2139Y-4.5549 367 | X13.2998Y-5.4348 368 | X13.4329Y-3.7675 369 | X13.4941Y-5.2484 370 | X13.6273Y-3.5811 371 | X13.7131Y-4.461 372 | X13.9075Y-4.2747 373 | X13.9934Y-5.1546 374 | X14.1877Y-4.9682 375 | M30 376 | -------------------------------------------------------------------------------- /pcbs/jlcpcb/gerber/kbd-PasteBottom.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*% 2 | %TF.CreationDate,2024-06-30T16:48:01+02:00*% 3 | %TF.ProjectId,kbd,6b62642e-6b69-4636-9164-5f7063625858,2*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Paste,Bot*% 6 | %TF.FilePolarity,Positive*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 8.0.3) date 2024-06-30 16:48:01* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | G04 APERTURE END LIST* 15 | M02* 16 | -------------------------------------------------------------------------------- /pcbs/jlcpcb/gerber/kbd-PasteTop.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*% 2 | %TF.CreationDate,2024-06-30T16:48:01+02:00*% 3 | %TF.ProjectId,kbd,6b62642e-6b69-4636-9164-5f7063625858,2*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Paste,Top*% 6 | %TF.FilePolarity,Positive*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 8.0.3) date 2024-06-30 16:48:01* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | G04 Aperture macros list* 15 | %AMRoundRect* 16 | 0 Rectangle with rounded corners* 17 | 0 $1 Rounding radius* 18 | 0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners* 19 | 0 Add a 4 corners polygon primitive as box body* 20 | 4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0* 21 | 0 Add four circle primitives for the rounded corners* 22 | 1,1,$1+$1,$2,$3* 23 | 1,1,$1+$1,$4,$5* 24 | 1,1,$1+$1,$6,$7* 25 | 1,1,$1+$1,$8,$9* 26 | 0 Add four rect primitives between the rounded corners* 27 | 20,1,$1+$1,$2,$3,$4,$5,0* 28 | 20,1,$1+$1,$4,$5,$6,$7,0* 29 | 20,1,$1+$1,$6,$7,$8,$9,0* 30 | 20,1,$1+$1,$8,$9,$2,$3,0*% 31 | G04 Aperture macros list end* 32 | %ADD10RoundRect,0.250000X-0.138144X0.325448X-0.325448X-0.138144X0.138144X-0.325448X0.325448X0.138144X0*% 33 | %ADD11RoundRect,0.250000X-0.325448X0.138144X-0.138144X-0.325448X0.325448X-0.138144X0.138144X0.325448X0*% 34 | %ADD12R,1.000000X0.800000*% 35 | %ADD13R,0.700000X1.500000*% 36 | G04 APERTURE END LIST* 37 | D10* 38 | %TO.C,D15*% 39 | X180673644Y-106166361D03* 40 | X179737128Y-108484321D03* 41 | %TD*% 42 | D11* 43 | %TO.C,D30*% 44 | X294689960Y-97216260D03* 45 | X295626476Y-99534220D03* 46 | %TD*% 47 | D10* 48 | %TO.C,D3*% 49 | X103090145Y-95312755D03* 50 | X102153629Y-97630715D03* 51 | %TD*% 52 | %TO.C,D5*% 53 | X113589114Y-120046773D03* 54 | X112652598Y-122364733D03* 55 | %TD*% 56 | %TO.C,D18*% 57 | X198290135Y-113283888D03* 58 | X197353619Y-115601848D03* 59 | %TD*% 60 | %TO.C,D13*% 61 | X166438592Y-141399351D03* 62 | X165502076Y-143717311D03* 63 | %TD*% 64 | %TO.C,D17*% 65 | X191172611Y-130900381D03* 66 | X190236095Y-133218341D03* 67 | %TD*% 68 | D11* 69 | %TO.C,D28*% 70 | X308925012Y-132449246D03* 71 | X309861528Y-134767206D03* 72 | %TD*% 73 | %TO.C,D35*% 74 | X264439243Y-123782856D03* 75 | X265375759Y-126100816D03* 76 | %TD*% 77 | %TO.C,D39*% 78 | X239705223Y-113283889D03* 79 | X240641739Y-115601849D03* 80 | %TD*% 81 | %TO.C,D27*% 82 | X317288723Y-102430278D03* 83 | X318225239Y-104748238D03* 84 | %TD*% 85 | D10* 86 | %TO.C,D11*% 87 | X157363129Y-113142032D03* 88 | X156426613Y-115459992D03* 89 | %TD*% 90 | D11* 91 | %TO.C,D41*% 92 | X257534502Y-167556873D03* 93 | X258471018Y-169874833D03* 94 | %TD*% 95 | %TO.C,D25*% 96 | X331523772Y-137663264D03* 97 | X332460288Y-139981224D03* 98 | %TD*% 99 | %TO.C,D23*% 100 | X342022741Y-112929248D03* 101 | X342959257Y-115247208D03* 102 | %TD*% 103 | %TO.C,D32*% 104 | X280632231Y-113142031D03* 105 | X281568747Y-115459991D03* 106 | %TD*% 107 | D10* 108 | %TO.C,D20*% 109 | X180460860Y-167556871D03* 110 | X179524344Y-169874831D03* 111 | %TD*% 112 | %TO.C,D14*% 113 | X173556118Y-123782856D03* 114 | X172619602Y-126100816D03* 115 | %TD*% 116 | D11* 117 | %TO.C,D40*% 118 | X275150994Y-160439345D03* 119 | X276087510Y-162757305D03* 120 | %TD*% 121 | D10* 122 | %TO.C,D21*% 123 | X198077353Y-174674397D03* 124 | X197140837Y-176992357D03* 125 | %TD*% 126 | %TO.C,D7*% 127 | X129070349Y-132449246D03* 128 | X128133833Y-134767206D03* 129 | %TD*% 130 | %TO.C,D16*% 131 | X184055087Y-148516874D03* 132 | X183118571Y-150834834D03* 133 | %TD*% 134 | %TO.C,D1*% 135 | X88855095Y-130545741D03* 136 | X87918579Y-132863701D03* 137 | %TD*% 138 | D11* 139 | %TO.C,D31*% 140 | X287749756Y-130758523D03* 141 | X288686272Y-133076483D03* 142 | %TD*% 143 | D10* 144 | %TO.C,D6*% 145 | X120706637Y-102430281D03* 146 | X119770121Y-104748241D03* 147 | %TD*% 148 | D11* 149 | %TO.C,D42*% 150 | X239918008Y-174674397D03* 151 | X240854524Y-176992357D03* 152 | %TD*% 153 | %TO.C,D29*% 154 | X301807487Y-114832752D03* 155 | X302744003Y-117150712D03* 156 | %TD*% 157 | D10* 158 | %TO.C,D10*% 159 | X150245605Y-130758525D03* 160 | X149309089Y-133076485D03* 161 | %TD*% 162 | %TO.C,D8*% 163 | X136187873Y-114832753D03* 164 | X135251357Y-117150713D03* 165 | %TD*% 166 | D11* 167 | %TO.C,D26*% 168 | X324406249Y-120046772D03* 169 | X325342765Y-122364732D03* 170 | %TD*% 171 | %TO.C,D24*% 172 | X334905216Y-95312755D03* 173 | X335841732Y-97630715D03* 174 | %TD*% 175 | D10* 176 | %TO.C,D2*% 177 | X95972619Y-112929248D03* 178 | X95036103Y-115247208D03* 179 | %TD*% 180 | %TO.C,D4*% 181 | X106471588Y-137663265D03* 182 | X105535072Y-139981225D03* 183 | %TD*% 184 | %TO.C,D19*% 185 | X162844365Y-160439348D03* 186 | X161907849Y-162757308D03* 187 | %TD*% 188 | D11* 189 | %TO.C,D22*% 190 | X349140267Y-130545740D03* 191 | X350076783Y-132863700D03* 192 | %TD*% 193 | %TO.C,D37*% 194 | X253940274Y-148516874D03* 195 | X254876790Y-150834834D03* 196 | %TD*% 197 | %TO.C,D36*% 198 | X257321717Y-106166362D03* 199 | X258258233Y-108484322D03* 200 | %TD*% 201 | %TO.C,D33*% 202 | X273514706Y-95525540D03* 203 | X274451222Y-97843500D03* 204 | %TD*% 205 | D10* 206 | %TO.C,D12*% 207 | X164480656Y-95525539D03* 208 | X163544140Y-97843499D03* 209 | %TD*% 210 | %TO.C,D9*% 211 | X143305400Y-97216261D03* 212 | X142368884Y-99534221D03* 213 | %TD*% 214 | D11* 215 | %TO.C,D34*% 216 | X271556768Y-141399349D03* 217 | X272493284Y-143717309D03* 218 | %TD*% 219 | %TO.C,D38*% 220 | X246822750Y-130900381D03* 221 | X247759266Y-133218341D03* 222 | %TD*% 223 | D12* 224 | %TO.C,PWR1*% 225 | X222647682Y-179090315D03* 226 | X215347681Y-179090318D03* 227 | X222647680Y-181300316D03* 228 | X215347682Y-181300316D03* 229 | D13* 230 | X216747681Y-178440316D03* 231 | X219747681Y-178440316D03* 232 | X221247681Y-178440316D03* 233 | %TD*% 234 | M02* 235 | -------------------------------------------------------------------------------- /pcbs/jlcpcb/gerber/kbd-SilkBottom.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*% 2 | %TF.CreationDate,2024-06-30T16:48:01+02:00*% 3 | %TF.ProjectId,kbd,6b62642e-6b69-4636-9164-5f7063625858,2*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Legend,Bot*% 6 | %TF.FilePolarity,Positive*% 7 | %FSLAX46Y46*% 8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 9 | G04 Created by KiCad (PCBNEW 8.0.3) date 2024-06-30 16:48:01* 10 | %MOMM*% 11 | %LPD*% 12 | G01* 13 | G04 APERTURE LIST* 14 | G04 Aperture macros list* 15 | %AMRoundRect* 16 | 0 Rectangle with rounded corners* 17 | 0 $1 Rounding radius* 18 | 0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners* 19 | 0 Add a 4 corners polygon primitive as box body* 20 | 4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0* 21 | 0 Add four circle primitives for the rounded corners* 22 | 1,1,$1+$1,$2,$3* 23 | 1,1,$1+$1,$4,$5* 24 | 1,1,$1+$1,$6,$7* 25 | 1,1,$1+$1,$8,$9* 26 | 0 Add four rect primitives between the rounded corners* 27 | 20,1,$1+$1,$2,$3,$4,$5,0* 28 | 20,1,$1+$1,$4,$5,$6,$7,0* 29 | 20,1,$1+$1,$6,$7,$8,$9,0* 30 | 20,1,$1+$1,$8,$9,$2,$3,0*% 31 | G04 Aperture macros list end* 32 | %ADD10C,1.900000*% 33 | %ADD11C,4.100000*% 34 | %ADD12C,2.300000*% 35 | %ADD13C,2.600000*% 36 | %ADD14C,1.852600*% 37 | %ADD15RoundRect,0.050000X-0.876300X0.876300X-0.876300X-0.876300X0.876300X-0.876300X0.876300X0.876300X0*% 38 | %ADD16C,1.000000*% 39 | G04 APERTURE END LIST* 40 | %LPC*% 41 | D10* 42 | %TO.C,S37*% 43 | X260005111Y-151728828D03* 44 | D11* 45 | X264715205Y-149825827D03* 46 | D10* 47 | X269425299Y-147922826D03* 48 | D12* 49 | X261502791Y-155222159D03* 50 | D13* 51 | X260231134Y-148898031D03* 52 | D12* 53 | X266925384Y-155296213D03* 54 | D13* 55 | X265167250Y-144164231D03* 56 | %TD*% 57 | D10* 58 | %TO.C,S14*% 59 | X158071093Y-123188805D03* 60 | D11* 61 | X162781187Y-125091807D03* 62 | D10* 63 | X167491281Y-126994809D03* 64 | D12* 65 | X156721762Y-126742072D03* 66 | D13* 67 | X160200118Y-121309509D03* 68 | D12* 69 | X160571008Y-130562193D03* 70 | D13* 71 | X167039235Y-121333213D03* 72 | %TD*% 73 | D14* 74 | %TO.C,*% 75 | X237997681Y-141953316D03* 76 | %TD*% 77 | %TO.C,*% 78 | X237997682Y-126713314D03* 79 | %TD*% 80 | D10* 81 | %TO.C,S8*% 82 | X120702850Y-114238702D03* 83 | D11* 84 | X125412944Y-116141704D03* 85 | D10* 86 | X130123038Y-118044706D03* 87 | D12* 88 | X119353519Y-117791969D03* 89 | D13* 90 | X122831875Y-112359406D03* 91 | D12* 92 | X123202765Y-121612090D03* 93 | D13* 94 | X129670992Y-112383110D03* 95 | %TD*% 96 | D14* 97 | %TO.C,*% 98 | X207997679Y-131793316D03* 99 | %TD*% 100 | %TO.C,*% 101 | X207997681Y-136873314D03* 102 | %TD*% 103 | D12* 104 | %TO.C,_139*% 105 | X318321385Y-92306244D03* 106 | %TD*% 107 | D10* 108 | %TO.C,S4*% 109 | X90986562Y-137069217D03* 110 | D11* 111 | X95696656Y-138972219D03* 112 | D10* 113 | X100406750Y-140875221D03* 114 | D12* 115 | X89637231Y-140622484D03* 116 | D13* 117 | X93115587Y-135189921D03* 118 | D12* 119 | X93486477Y-144442605D03* 120 | D13* 121 | X99954704Y-135213625D03* 122 | %TD*% 123 | D10* 124 | %TO.C,S16*% 125 | X168570062Y-147922825D03* 126 | D11* 127 | X173280156Y-149825827D03* 128 | D10* 129 | X177990250Y-151728829D03* 130 | D12* 131 | X167220731Y-151476092D03* 132 | D13* 133 | X170699087Y-146043529D03* 134 | D12* 135 | X171069977Y-155296213D03* 136 | D13* 137 | X177538204Y-146067233D03* 138 | %TD*% 139 | D14* 140 | %TO.C,*% 141 | X237997682Y-147033314D03* 142 | %TD*% 143 | D10* 144 | %TO.C,S6*% 145 | X105221613Y-101836229D03* 146 | D11* 147 | X109931707Y-103739231D03* 148 | D10* 149 | X114641801Y-105642233D03* 150 | D12* 151 | X103872282Y-105389496D03* 152 | D13* 153 | X107350638Y-99956933D03* 154 | D12* 155 | X107721528Y-109209617D03* 156 | D13* 157 | X114189755Y-99980637D03* 158 | %TD*% 159 | D10* 160 | %TO.C,S42*% 161 | X245982845Y-177886351D03* 162 | D11* 163 | X250692939Y-175983350D03* 164 | D10* 165 | X255403033Y-174080349D03* 166 | D12* 167 | X247480525Y-181379682D03* 168 | D13* 169 | X246208868Y-175055554D03* 170 | D12* 171 | X252903118Y-181453736D03* 172 | D13* 173 | X251144984Y-170321754D03* 174 | %TD*% 175 | D14* 176 | %TO.C,*% 177 | X207997680Y-126713314D03* 178 | %TD*% 179 | D10* 180 | %TO.C,S26*% 181 | X330471083Y-123258727D03* 182 | D11* 183 | X335181177Y-121355726D03* 184 | D10* 185 | X339891271Y-119452725D03* 186 | D12* 187 | X331968763Y-126752058D03* 188 | D13* 189 | X330697106Y-120427930D03* 190 | D12* 191 | X337391356Y-126826112D03* 192 | D13* 193 | X335633222Y-115694130D03* 194 | %TD*% 195 | D12* 196 | %TO.C,_132*% 197 | X229497679Y-178475316D03* 198 | %TD*% 199 | D14* 200 | %TO.C,*% 201 | X199997680Y-134333316D03* 202 | %TD*% 203 | D12* 204 | %TO.C,_135*% 205 | X119673975Y-92306243D03* 206 | %TD*% 207 | D10* 208 | %TO.C,S20*% 209 | X164975834Y-166962823D03* 210 | D11* 211 | X169685928Y-168865825D03* 212 | D10* 213 | X174396022Y-170768827D03* 214 | D12* 215 | X163626503Y-170516090D03* 216 | D13* 217 | X167104859Y-165083527D03* 218 | D12* 219 | X167475749Y-174336211D03* 220 | D13* 221 | X173943976Y-165107231D03* 222 | %TD*% 223 | D10* 224 | %TO.C,S15*% 225 | X165188618Y-105572313D03* 226 | D11* 227 | X169898712Y-107475315D03* 228 | D10* 229 | X174608806Y-109378317D03* 230 | D12* 231 | X163839287Y-109125580D03* 232 | D13* 233 | X167317643Y-103693017D03* 234 | D12* 235 | X167688533Y-112945701D03* 236 | D13* 237 | X174156760Y-103716721D03* 238 | %TD*% 239 | D14* 240 | %TO.C,*% 241 | X237997683Y-144493313D03* 242 | %TD*% 243 | D10* 244 | %TO.C,S17*% 245 | X175687587Y-130306332D03* 246 | D11* 247 | X180397681Y-132209334D03* 248 | D10* 249 | X185107775Y-134112336D03* 250 | D12* 251 | X174338256Y-133859599D03* 252 | D13* 253 | X177816612Y-128427036D03* 254 | D12* 255 | X178187502Y-137679720D03* 256 | D13* 257 | X184655729Y-128450740D03* 258 | %TD*% 259 | D12* 260 | %TO.C,_137*% 261 | X241449643Y-104921499D03* 262 | %TD*% 263 | D14* 264 | %TO.C,*% 265 | X229997681Y-126713314D03* 266 | %TD*% 267 | D10* 268 | %TO.C,S29*% 269 | X307872323Y-118044707D03* 270 | D11* 271 | X312582417Y-116141706D03* 272 | D10* 273 | X317292511Y-114238705D03* 274 | D12* 275 | X309370003Y-121538038D03* 276 | D13* 277 | X308098346Y-115213910D03* 278 | D12* 279 | X314792596Y-121612092D03* 280 | D13* 281 | X313034462Y-110480110D03* 282 | %TD*% 283 | D14* 284 | %TO.C,*% 285 | X229997679Y-131793315D03* 286 | %TD*% 287 | %TO.C,*% 288 | X237997681Y-149573315D03* 289 | %TD*% 290 | D12* 291 | %TO.C,_136*% 292 | X129728408Y-143500467D03* 293 | %TD*% 294 | D14* 295 | %TO.C,*% 296 | X207997680Y-139413315D03* 297 | %TD*% 298 | D10* 299 | %TO.C,S21*% 300 | X182592327Y-174080350D03* 301 | D11* 302 | X187302421Y-175983352D03* 303 | D10* 304 | X192012515Y-177886354D03* 305 | D12* 306 | X181242996Y-177633617D03* 307 | D13* 308 | X184721352Y-172201054D03* 309 | D12* 310 | X185092242Y-181453738D03* 311 | D13* 312 | X191560469Y-172224758D03* 313 | %TD*% 314 | D14* 315 | %TO.C,*% 316 | X229997681Y-149573313D03* 317 | %TD*% 318 | D10* 319 | %TO.C,S31*% 320 | X293814593Y-133970479D03* 321 | D11* 322 | X298524687Y-132067478D03* 323 | D10* 324 | X303234781Y-130164477D03* 325 | D12* 326 | X295312273Y-137463810D03* 327 | D13* 328 | X294040616Y-131139682D03* 329 | D12* 330 | X300734866Y-137537864D03* 331 | D13* 332 | X298976732Y-126405882D03* 333 | %TD*% 334 | D14* 335 | %TO.C,*% 336 | X199997681Y-136873315D03* 337 | %TD*% 338 | %TO.C,*% 339 | X220997680Y-145475317D03* 340 | %TD*% 341 | D10* 342 | %TO.C,S12*% 343 | X148995630Y-94931487D03* 344 | D11* 345 | X153705724Y-96834489D03* 346 | D10* 347 | X158415818Y-98737491D03* 348 | D12* 349 | X147646299Y-98484754D03* 350 | D13* 351 | X151124655Y-93052191D03* 352 | D12* 353 | X151495545Y-102304875D03* 354 | D13* 355 | X157963772Y-93075895D03* 356 | %TD*% 357 | D15* 358 | %TO.C,MCU1*% 359 | X211377681Y-110965316D03* 360 | D14* 361 | X211377680Y-113505317D03* 362 | X211377681Y-116045317D03* 363 | X211377679Y-118585315D03* 364 | X211377681Y-121125316D03* 365 | X211377680Y-123665317D03* 366 | X211377681Y-126205317D03* 367 | X211377679Y-128745315D03* 368 | X211377681Y-131285316D03* 369 | X211377680Y-133825317D03* 370 | X211377681Y-136365317D03* 371 | X211377679Y-138905315D03* 372 | X211377681Y-141445316D03* 373 | X226617682Y-110965315D03* 374 | X226617681Y-113505316D03* 375 | X226617683Y-116045317D03* 376 | X226617681Y-118585315D03* 377 | X226617682Y-121125315D03* 378 | X226617681Y-123665316D03* 379 | X226617683Y-126205317D03* 380 | X226617681Y-128745315D03* 381 | X226617682Y-131285315D03* 382 | X226617681Y-133825316D03* 383 | X226617683Y-136365317D03* 384 | X226617681Y-138905315D03* 385 | X226617682Y-141445315D03* 386 | %TD*% 387 | D16* 388 | %TO.C,PWR1*% 389 | X220497681Y-180200315D03* 390 | X217497681Y-180200315D03* 391 | %TD*% 392 | D10* 393 | %TO.C,S25*% 394 | X337588610Y-140875220D03* 395 | D11* 396 | X342298704Y-138972219D03* 397 | D10* 398 | X347008798Y-137069218D03* 399 | D12* 400 | X339086290Y-144368551D03* 401 | D13* 402 | X337814633Y-138044423D03* 403 | D12* 404 | X344508883Y-144442605D03* 405 | D13* 406 | X342750749Y-133310623D03* 407 | %TD*% 408 | D14* 409 | %TO.C,*% 410 | X199997681Y-126713315D03* 411 | %TD*% 412 | D10* 413 | %TO.C,S13*% 414 | X150953568Y-140805297D03* 415 | D11* 416 | X155663662Y-142708299D03* 417 | D10* 418 | X160373756Y-144611301D03* 419 | D12* 420 | X149604237Y-144358564D03* 421 | D13* 422 | X153082593Y-138926001D03* 423 | D12* 424 | X153453483Y-148178685D03* 425 | D13* 426 | X159921710Y-138949705D03* 427 | %TD*% 428 | D12* 429 | %TO.C,_129*% 430 | X208497679Y-106475314D03* 431 | %TD*% 432 | D10* 433 | %TO.C,S34*% 434 | X277621603Y-144611302D03* 435 | D11* 436 | X282331697Y-142708301D03* 437 | D10* 438 | X287041791Y-140805300D03* 439 | D12* 440 | X279119283Y-148104633D03* 441 | D13* 442 | X277847626Y-141780505D03* 443 | D12* 444 | X284541876Y-148178687D03* 445 | D13* 446 | X282783742Y-137046705D03* 447 | %TD*% 448 | D10* 449 | %TO.C,S23*% 450 | X348087577Y-116141203D03* 451 | D11* 452 | X352797671Y-114238202D03* 453 | D10* 454 | X357507765Y-112335201D03* 455 | D12* 456 | X349585257Y-119634534D03* 457 | D13* 458 | X348313600Y-113310406D03* 459 | D12* 460 | X355007850Y-119708588D03* 461 | D13* 462 | X353249716Y-108576606D03* 463 | %TD*% 464 | D14* 465 | %TO.C,*% 466 | X237997683Y-134333313D03* 467 | %TD*% 468 | D12* 469 | %TO.C,_140*% 470 | X308266955Y-143500466D03* 471 | %TD*% 472 | D14* 473 | %TO.C,*% 474 | X229997682Y-144493314D03* 475 | %TD*% 476 | %TO.C,*% 477 | X237997681Y-129253315D03* 478 | %TD*% 479 | D10* 480 | %TO.C,S7*% 481 | X113585324Y-131855196D03* 482 | D11* 483 | X118295418Y-133758198D03* 484 | D10* 485 | X123005512Y-135661200D03* 486 | D12* 487 | X112235993Y-135408463D03* 488 | D13* 489 | X115714349Y-129975900D03* 490 | D12* 491 | X116085239Y-139228584D03* 492 | D13* 493 | X122553466Y-129999604D03* 494 | %TD*% 495 | D14* 496 | %TO.C,*% 497 | X199997680Y-147033314D03* 498 | %TD*% 499 | D10* 500 | %TO.C,S11*% 501 | X141878105Y-112547982D03* 502 | D11* 503 | X146588199Y-114450984D03* 504 | D10* 505 | X151298293Y-116353986D03* 506 | D12* 507 | X140528774Y-116101249D03* 508 | D13* 509 | X144007130Y-110668686D03* 510 | D12* 511 | X144378020Y-119921370D03* 512 | D13* 513 | X150846247Y-110692390D03* 514 | %TD*% 515 | D12* 516 | %TO.C,_133*% 517 | X196545721Y-104921500D03* 518 | %TD*% 519 | D10* 520 | %TO.C,S24*% 521 | X340970053Y-98524708D03* 522 | D11* 523 | X345680147Y-96621707D03* 524 | D10* 525 | X350390241Y-94718706D03* 526 | D12* 527 | X342467733Y-102018039D03* 528 | D13* 529 | X341196076Y-95693911D03* 530 | D12* 531 | X347890326Y-102092093D03* 532 | D13* 533 | X346132192Y-90960111D03* 534 | %TD*% 535 | D14* 536 | %TO.C,*% 537 | X207997679Y-141953316D03* 538 | %TD*% 539 | D10* 540 | %TO.C,S39*% 541 | X245770060Y-116495843D03* 542 | D11* 543 | X250480154Y-114592842D03* 544 | D10* 545 | X255190248Y-112689841D03* 546 | D12* 547 | X247267740Y-119989174D03* 548 | D13* 549 | X245996083Y-113665046D03* 550 | D12* 551 | X252690333Y-120063228D03* 552 | D13* 553 | X250932199Y-108931246D03* 554 | %TD*% 555 | D14* 556 | %TO.C,*% 557 | X229997681Y-147033314D03* 558 | %TD*% 559 | D10* 560 | %TO.C,S10*% 561 | X134760578Y-130164475D03* 562 | D11* 563 | X139470672Y-132067477D03* 564 | D10* 565 | X144180766Y-133970479D03* 566 | D12* 567 | X133411247Y-133717742D03* 568 | D13* 569 | X136889603Y-128285179D03* 570 | D12* 571 | X137260493Y-137537863D03* 572 | D13* 573 | X143728720Y-128308883D03* 574 | %TD*% 575 | D10* 576 | %TO.C,S35*% 577 | X270504079Y-126994808D03* 578 | D11* 579 | X275214173Y-125091807D03* 580 | D10* 581 | X279924267Y-123188806D03* 582 | D12* 583 | X272001759Y-130488139D03* 584 | D13* 585 | X270730102Y-124164011D03* 586 | D12* 587 | X277424352Y-130562193D03* 588 | D13* 589 | X275666218Y-119430211D03* 590 | %TD*% 591 | D14* 592 | %TO.C,*% 593 | X207997680Y-129253315D03* 594 | %TD*% 595 | %TO.C,*% 596 | X229997680Y-129253316D03* 597 | %TD*% 598 | D10* 599 | %TO.C,S2*% 600 | X80487595Y-112335197D03* 601 | D11* 602 | X85197689Y-114238199D03* 603 | D10* 604 | X89907783Y-116141201D03* 605 | D12* 606 | X79138264Y-115888464D03* 607 | D13* 608 | X82616620Y-110455901D03* 609 | D12* 610 | X82987510Y-119708585D03* 611 | D13* 612 | X89455737Y-110479605D03* 613 | %TD*% 614 | D10* 615 | %TO.C,S18*% 616 | X182805112Y-112689837D03* 617 | D11* 618 | X187515206Y-114592839D03* 619 | D10* 620 | X192225300Y-116495841D03* 621 | D12* 622 | X181455781Y-116243104D03* 623 | D13* 624 | X184934137Y-110810541D03* 625 | D12* 626 | X185305027Y-120063225D03* 627 | D13* 628 | X191773254Y-110834245D03* 629 | %TD*% 630 | D14* 631 | %TO.C,*% 632 | X199997680Y-129253315D03* 633 | %TD*% 634 | D10* 635 | %TO.C,S36*% 636 | X263386555Y-109378315D03* 637 | D11* 638 | X268096649Y-107475314D03* 639 | D10* 640 | X272806743Y-105572313D03* 641 | D12* 642 | X264884235Y-112871646D03* 643 | D13* 644 | X263612578Y-106547518D03* 645 | D12* 646 | X270306828Y-112945700D03* 647 | D13* 648 | X268548694Y-101813718D03* 649 | %TD*% 650 | D14* 651 | %TO.C,*% 652 | X207997681Y-147033314D03* 653 | %TD*% 654 | D10* 655 | %TO.C,S1*% 656 | X73370069Y-129951691D03* 657 | D11* 658 | X78080163Y-131854693D03* 659 | D10* 660 | X82790257Y-133757695D03* 661 | D12* 662 | X72020738Y-133504958D03* 663 | D13* 664 | X75499094Y-128072395D03* 665 | D12* 666 | X75869984Y-137325079D03* 667 | D13* 668 | X82338211Y-128096099D03* 669 | %TD*% 670 | D14* 671 | %TO.C,*% 672 | X237997682Y-136873314D03* 673 | %TD*% 674 | %TO.C,*% 675 | X207997681Y-144493315D03* 676 | %TD*% 677 | D10* 678 | %TO.C,S28*% 679 | X314989848Y-135661199D03* 680 | D11* 681 | X319699942Y-133758198D03* 682 | D10* 683 | X324410036Y-131855197D03* 684 | D12* 685 | X316487528Y-139154530D03* 686 | D13* 687 | X315215871Y-132830402D03* 688 | D12* 689 | X321910121Y-139228584D03* 690 | D13* 691 | X320151987Y-128096602D03* 692 | %TD*% 693 | D14* 694 | %TO.C,*% 695 | X199997681Y-131793315D03* 696 | %TD*% 697 | %TO.C,*% 698 | X207997680Y-149573315D03* 699 | %TD*% 700 | D10* 701 | %TO.C,S3*% 702 | X87605120Y-94718704D03* 703 | D11* 704 | X92315214Y-96621706D03* 705 | D10* 706 | X97025308Y-98524708D03* 707 | D12* 708 | X86255789Y-98271971D03* 709 | D13* 710 | X89734145Y-92839408D03* 711 | D12* 712 | X90105035Y-102092092D03* 713 | D13* 714 | X96573262Y-92863112D03* 715 | %TD*% 716 | D10* 717 | %TO.C,S19*% 718 | X147359342Y-159845297D03* 719 | D11* 720 | X152069436Y-161748299D03* 721 | D10* 722 | X156779530Y-163651301D03* 723 | D12* 724 | X146010011Y-163398564D03* 725 | D13* 726 | X149488367Y-157966001D03* 727 | D12* 728 | X149859257Y-167218685D03* 729 | D13* 730 | X156327484Y-157989705D03* 731 | %TD*% 732 | D14* 733 | %TO.C,*% 734 | X229997681Y-141953314D03* 735 | %TD*% 736 | %TO.C,*% 737 | X237997681Y-139413315D03* 738 | %TD*% 739 | D12* 740 | %TO.C,_131*% 741 | X208497681Y-178475313D03* 742 | %TD*% 743 | D14* 744 | %TO.C,*% 745 | X229997681Y-139413313D03* 746 | %TD*% 747 | D10* 748 | %TO.C,S33*% 749 | X279579541Y-98737492D03* 750 | D11* 751 | X284289635Y-96834491D03* 752 | D10* 753 | X288999729Y-94931490D03* 754 | D12* 755 | X281077221Y-102230823D03* 756 | D13* 757 | X279805564Y-95906695D03* 758 | D12* 759 | X286499814Y-102304877D03* 760 | D13* 761 | X284741680Y-91172895D03* 762 | %TD*% 763 | D10* 764 | %TO.C,S9*% 765 | X127820376Y-96622210D03* 766 | D11* 767 | X132530470Y-98525212D03* 768 | D10* 769 | X137240564Y-100428214D03* 770 | D12* 771 | X126471045Y-100175477D03* 772 | D13* 773 | X129949401Y-94742914D03* 774 | D12* 775 | X130320291Y-103995598D03* 776 | D13* 777 | X136788518Y-94766618D03* 778 | %TD*% 779 | D10* 780 | %TO.C,S30*% 781 | X300754799Y-100428214D03* 782 | D11* 783 | X305464893Y-98525213D03* 784 | D10* 785 | X310174987Y-96622212D03* 786 | D12* 787 | X302252479Y-103921545D03* 788 | D13* 789 | X300980822Y-97597417D03* 790 | D12* 791 | X307675072Y-103995599D03* 792 | D13* 793 | X305916938Y-92863617D03* 794 | %TD*% 795 | D10* 796 | %TO.C,S40*% 797 | X281215831Y-163651301D03* 798 | D11* 799 | X285925925Y-161748300D03* 800 | D10* 801 | X290636019Y-159845299D03* 802 | D12* 803 | X282713511Y-167144632D03* 804 | D13* 805 | X281441854Y-160820504D03* 806 | D12* 807 | X288136104Y-167218686D03* 808 | D13* 809 | X286377970Y-156086704D03* 810 | %TD*% 811 | D14* 812 | %TO.C,*% 813 | X229997682Y-134333314D03* 814 | %TD*% 815 | D10* 816 | %TO.C,S41*% 817 | X263599338Y-170768826D03* 818 | D11* 819 | X268309432Y-168865825D03* 820 | D10* 821 | X273019526Y-166962824D03* 822 | D12* 823 | X265097018Y-174262157D03* 824 | D13* 825 | X263825361Y-167938029D03* 826 | D12* 827 | X270519611Y-174336211D03* 828 | D13* 829 | X268761477Y-163204229D03* 830 | %TD*% 831 | D10* 832 | %TO.C,S32*% 833 | X286697067Y-116353984D03* 834 | D11* 835 | X291407161Y-114450983D03* 836 | D10* 837 | X296117255Y-112547982D03* 838 | D12* 839 | X288194747Y-119847315D03* 840 | D13* 841 | X286923090Y-113523187D03* 842 | D12* 843 | X293617340Y-119921369D03* 844 | D13* 845 | X291859206Y-108789387D03* 846 | %TD*% 847 | D10* 848 | %TO.C,S27*% 849 | X323353560Y-105642234D03* 850 | D11* 851 | X328063654Y-103739233D03* 852 | D10* 853 | X332773748Y-101836232D03* 854 | D12* 855 | X324851240Y-109135565D03* 856 | D13* 857 | X323579583Y-102811437D03* 858 | D12* 859 | X330273833Y-109209619D03* 860 | D13* 861 | X328515699Y-98077637D03* 862 | %TD*% 863 | D14* 864 | %TO.C,*% 865 | X237997681Y-131793312D03* 866 | %TD*% 867 | %TO.C,*% 868 | X207997681Y-134333315D03* 869 | %TD*% 870 | D12* 871 | %TO.C,_138*% 872 | X239259951Y-185725618D03* 873 | %TD*% 874 | D14* 875 | %TO.C,*% 876 | X199997681Y-149573314D03* 877 | %TD*% 878 | %TO.C,*% 879 | X216997682Y-145475314D03* 880 | %TD*% 881 | %TO.C,*% 882 | X199997680Y-139413315D03* 883 | %TD*% 884 | D12* 885 | %TO.C,_130*% 886 | X229497681Y-106475313D03* 887 | %TD*% 888 | D10* 889 | %TO.C,S38*% 890 | X252887586Y-134112334D03* 891 | D11* 892 | X257597680Y-132209333D03* 893 | D10* 894 | X262307774Y-130306332D03* 895 | D12* 896 | X254385266Y-137605665D03* 897 | D13* 898 | X253113609Y-131281537D03* 899 | D12* 900 | X259807859Y-137679719D03* 901 | D13* 902 | X258049725Y-126547737D03* 903 | %TD*% 904 | D10* 905 | %TO.C,S22*% 906 | X355205103Y-133757693D03* 907 | D11* 908 | X359915197Y-131854692D03* 909 | D10* 910 | X364625291Y-129951691D03* 911 | D12* 912 | X356702783Y-137251024D03* 913 | D13* 914 | X355431126Y-130926896D03* 915 | D12* 916 | X362125376Y-137325078D03* 917 | D13* 918 | X360367242Y-126193096D03* 919 | %TD*% 920 | D14* 921 | %TO.C,*% 922 | X229997681Y-136873314D03* 923 | %TD*% 924 | %TO.C,*% 925 | X199997680Y-144493316D03* 926 | %TD*% 927 | D12* 928 | %TO.C,_134*% 929 | X198735411Y-185725617D03* 930 | %TD*% 931 | D10* 932 | %TO.C,S5*% 933 | X98104087Y-119452724D03* 934 | D11* 935 | X102814181Y-121355726D03* 936 | D10* 937 | X107524275Y-123258728D03* 938 | D12* 939 | X96754756Y-123005991D03* 940 | D13* 941 | X100233112Y-117573428D03* 942 | D12* 943 | X100604002Y-126826112D03* 944 | D13* 945 | X107072229Y-117597132D03* 946 | %TD*% 947 | D14* 948 | %TO.C,*% 949 | X199997681Y-141953315D03* 950 | %TD*% 951 | %LPD*% 952 | M02* 953 | -------------------------------------------------------------------------------- /pcbs/jlcpcb/gerber/kbd-VScore.gbr: -------------------------------------------------------------------------------- 1 | %TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*% 2 | %TF.CreationDate,2024-06-30T16:48:01+02:00*% 3 | %TF.ProjectId,kbd,6b62642e-6b69-4636-9164-5f7063625858,2*% 4 | %TF.SameCoordinates,Original*% 5 | %TF.FileFunction,Other,Comment*% 6 | %FSLAX46Y46*% 7 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* 8 | G04 Created by KiCad (PCBNEW 8.0.3) date 2024-06-30 16:48:01* 9 | %MOMM*% 10 | %LPD*% 11 | G01* 12 | G04 APERTURE LIST* 13 | %ADD10C,0.150000*% 14 | G04 APERTURE END LIST* 15 | D10* 16 | %TO.C,_139*% 17 | X320221385Y-92306244D02* 18 | G75* 19 | G02* 20 | X316421385Y-92306244I-1900000J0D01* 21 | G01* 22 | X316421385Y-92306244D02* 23 | G75* 24 | G02* 25 | X320221385Y-92306244I1900000J0D01* 26 | G01* 27 | %TO.C,_132*% 28 | X231397679Y-178475316D02* 29 | G75* 30 | G02* 31 | X227597679Y-178475316I-1900000J0D01* 32 | G01* 33 | X227597679Y-178475316D02* 34 | G75* 35 | G02* 36 | X231397679Y-178475316I1900000J0D01* 37 | G01* 38 | %TO.C,_135*% 39 | X121573975Y-92306243D02* 40 | G75* 41 | G02* 42 | X117773975Y-92306243I-1900000J0D01* 43 | G01* 44 | X117773975Y-92306243D02* 45 | G75* 46 | G02* 47 | X121573975Y-92306243I1900000J0D01* 48 | G01* 49 | %TO.C,_137*% 50 | X243349643Y-104921499D02* 51 | G75* 52 | G02* 53 | X239549643Y-104921499I-1900000J0D01* 54 | G01* 55 | X239549643Y-104921499D02* 56 | G75* 57 | G02* 58 | X243349643Y-104921499I1900000J0D01* 59 | G01* 60 | %TO.C,_136*% 61 | X131628408Y-143500467D02* 62 | G75* 63 | G02* 64 | X127828408Y-143500467I-1900000J0D01* 65 | G01* 66 | X127828408Y-143500467D02* 67 | G75* 68 | G02* 69 | X131628408Y-143500467I1900000J0D01* 70 | G01* 71 | %TO.C,_129*% 72 | X210397679Y-106475314D02* 73 | G75* 74 | G02* 75 | X206597679Y-106475314I-1900000J0D01* 76 | G01* 77 | X206597679Y-106475314D02* 78 | G75* 79 | G02* 80 | X210397679Y-106475314I1900000J0D01* 81 | G01* 82 | %TO.C,_140*% 83 | X310166955Y-143500466D02* 84 | G75* 85 | G02* 86 | X306366955Y-143500466I-1900000J0D01* 87 | G01* 88 | X306366955Y-143500466D02* 89 | G75* 90 | G02* 91 | X310166955Y-143500466I1900000J0D01* 92 | G01* 93 | %TO.C,_133*% 94 | X198445721Y-104921500D02* 95 | G75* 96 | G02* 97 | X194645721Y-104921500I-1900000J0D01* 98 | G01* 99 | X194645721Y-104921500D02* 100 | G75* 101 | G02* 102 | X198445721Y-104921500I1900000J0D01* 103 | G01* 104 | %TO.C,_131*% 105 | X210397681Y-178475313D02* 106 | G75* 107 | G02* 108 | X206597681Y-178475313I-1900000J0D01* 109 | G01* 110 | X206597681Y-178475313D02* 111 | G75* 112 | G02* 113 | X210397681Y-178475313I1900000J0D01* 114 | G01* 115 | %TO.C,_138*% 116 | X241159951Y-185725618D02* 117 | G75* 118 | G02* 119 | X237359951Y-185725618I-1900000J0D01* 120 | G01* 121 | X237359951Y-185725618D02* 122 | G75* 123 | G02* 124 | X241159951Y-185725618I1900000J0D01* 125 | G01* 126 | %TO.C,_130*% 127 | X231397681Y-106475313D02* 128 | G75* 129 | G02* 130 | X227597681Y-106475313I-1900000J0D01* 131 | G01* 132 | X227597681Y-106475313D02* 133 | G75* 134 | G02* 135 | X231397681Y-106475313I1900000J0D01* 136 | G01* 137 | %TO.C,_134*% 138 | X200635411Y-185725617D02* 139 | G75* 140 | G02* 141 | X196835411Y-185725617I-1900000J0D01* 142 | G01* 143 | X196835411Y-185725617D02* 144 | G75* 145 | G02* 146 | X200635411Y-185725617I1900000J0D01* 147 | G01* 148 | %TD*% 149 | M02* 150 | -------------------------------------------------------------------------------- /pcbs/jlcpcb/production_files/BOM-kbd.csv: -------------------------------------------------------------------------------- 1 | Comment,Designator,Footprint,LCSC 2 | SW_MX_Choc_PCB_1.00u,S42,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 3 | SW_MX_Choc_PCB_1.00u,S37,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 4 | SW_MX_Choc_PCB_1.00u,S14,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 5 | SW_MX_Choc_PCB_1.00u,S8,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 6 | SW_MX_Choc_PCB_1.00u,S4,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 7 | SW_MX_Choc_PCB_1.00u,S16,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 8 | SW_MX_Choc_PCB_1.00u,S6,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 9 | SW_MX_Choc_PCB_1.00u,S26,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 10 | SW_MX_Choc_PCB_1.00u,S20,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 11 | SW_MX_Choc_PCB_1.00u,S15,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 12 | SW_MX_Choc_PCB_1.00u,S17,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 13 | SW_MX_Choc_PCB_1.00u,S29,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 14 | SW_MX_Choc_PCB_1.00u,S21,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 15 | SW_MX_Choc_PCB_1.00u,S31,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 16 | SW_MX_Choc_PCB_1.00u,S12,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 17 | SW_MX_Choc_PCB_1.00u,S25,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 18 | SW_MX_Choc_PCB_1.00u,S13,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 19 | SW_MX_Choc_PCB_1.00u,S34,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 20 | SW_MX_Choc_PCB_1.00u,S23,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 21 | SW_MX_Choc_PCB_1.00u,S7,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 22 | SW_MX_Choc_PCB_1.00u,S11,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 23 | SW_MX_Choc_PCB_1.00u,S24,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 24 | SW_MX_Choc_PCB_1.00u,S39,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 25 | SW_MX_Choc_PCB_1.00u,S10,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 26 | SW_MX_Choc_PCB_1.00u,S35,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 27 | SW_MX_Choc_PCB_1.00u,S2,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 28 | SW_MX_Choc_PCB_1.00u,S18,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 29 | SW_MX_Choc_PCB_1.00u,S36,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 30 | SW_MX_Choc_PCB_1.00u,S1,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 31 | SW_MX_Choc_PCB_1.00u,S28,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 32 | SW_MX_Choc_PCB_1.00u,S3,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 33 | SW_MX_Choc_PCB_1.00u,S19,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 34 | SW_MX_Choc_PCB_1.00u,S33,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 35 | SW_MX_Choc_PCB_1.00u,S9,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 36 | SW_MX_Choc_PCB_1.00u,S30,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 37 | SW_MX_Choc_PCB_1.00u,S40,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 38 | SW_MX_Choc_PCB_1.00u,S41,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 39 | SW_MX_Choc_PCB_1.00u,S32,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 40 | SW_MX_Choc_PCB_1.00u,S27,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 41 | SW_MX_Choc_PCB_1.00u,S38,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 42 | SW_MX_Choc_PCB_1.00u,S22,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 43 | SW_MX_Choc_PCB_1.00u,S5,SW_Cherry_MX_Choc_PCB_1.00u_nosilk, 44 | ,D15,D_SOD-323_HandSoldering, 45 | ,D30,D_SOD-323_HandSoldering, 46 | ,D3,D_SOD-323_HandSoldering, 47 | ,D5,D_SOD-323_HandSoldering, 48 | ,D18,D_SOD-323_HandSoldering, 49 | ,D13,D_SOD-323_HandSoldering, 50 | ,D17,D_SOD-323_HandSoldering, 51 | ,D28,D_SOD-323_HandSoldering, 52 | ,D35,D_SOD-323_HandSoldering, 53 | ,D39,D_SOD-323_HandSoldering, 54 | ,D27,D_SOD-323_HandSoldering, 55 | ,D11,D_SOD-323_HandSoldering, 56 | ,D41,D_SOD-323_HandSoldering, 57 | ,D25,D_SOD-323_HandSoldering, 58 | ,D23,D_SOD-323_HandSoldering, 59 | ,D32,D_SOD-323_HandSoldering, 60 | ,D20,D_SOD-323_HandSoldering, 61 | ,MCU1,ProMicro, 62 | ,D14,D_SOD-323_HandSoldering, 63 | ,D40,D_SOD-323_HandSoldering, 64 | ,D21,D_SOD-323_HandSoldering, 65 | ,D7,D_SOD-323_HandSoldering, 66 | ,D16,D_SOD-323_HandSoldering, 67 | ,D1,D_SOD-323_HandSoldering, 68 | ,D31,D_SOD-323_HandSoldering, 69 | ,D6,D_SOD-323_HandSoldering, 70 | ,D42,D_SOD-323_HandSoldering, 71 | ,D29,D_SOD-323_HandSoldering, 72 | ,D10,D_SOD-323_HandSoldering, 73 | ,D8,D_SOD-323_HandSoldering, 74 | ,D26,D_SOD-323_HandSoldering, 75 | ,D24,D_SOD-323_HandSoldering, 76 | ,D2,D_SOD-323_HandSoldering, 77 | ,D4,D_SOD-323_HandSoldering, 78 | ,D19,D_SOD-323_HandSoldering, 79 | ,D22,D_SOD-323_HandSoldering, 80 | ,D37,D_SOD-323_HandSoldering, 81 | ,D36,D_SOD-323_HandSoldering, 82 | ,D33,D_SOD-323_HandSoldering, 83 | ,D12,D_SOD-323_HandSoldering, 84 | ,D9,D_SOD-323_HandSoldering, 85 | ,D34,D_SOD-323_HandSoldering, 86 | ,D38,D_SOD-323_HandSoldering, 87 | -------------------------------------------------------------------------------- /pcbs/jlcpcb/production_files/CPL-kbd.csv: -------------------------------------------------------------------------------- 1 | Designator,Val,Package,Mid X,Mid Y,Rotation,Layer 2 | D1,,D_SOD-323_HandSoldering,88.386837,-131.704721,-112.0,top 3 | D10,,D_SOD-323_HandSoldering,149.777347,-131.917505,-112.0,top 4 | D11,,D_SOD-323_HandSoldering,156.894871,-114.301012,-112.0,top 5 | D12,,D_SOD-323_HandSoldering,164.012398,-96.684519,-112.0,top 6 | D13,,D_SOD-323_HandSoldering,165.970334,-142.558331,-112.0,top 7 | D14,,D_SOD-323_HandSoldering,173.08786,-124.941836,-112.0,top 8 | D15,,D_SOD-323_HandSoldering,180.205386,-107.325341,-112.0,top 9 | D16,,D_SOD-323_HandSoldering,183.586829,-149.675854,-112.0,top 10 | D17,,D_SOD-323_HandSoldering,190.704353,-132.059361,-112.0,top 11 | D18,,D_SOD-323_HandSoldering,197.821877,-114.442868,-112.0,top 12 | D19,,D_SOD-323_HandSoldering,162.376107,-161.598328,-112.0,top 13 | D2,,D_SOD-323_HandSoldering,95.504361,-114.088228,-112.0,top 14 | D20,,D_SOD-323_HandSoldering,179.992602,-168.715851,-112.0,top 15 | D21,,D_SOD-323_HandSoldering,197.609095,-175.833377,-112.0,top 16 | D22,,D_SOD-323_HandSoldering,349.608525,-131.70472,-68.0,top 17 | D23,,D_SOD-323_HandSoldering,342.490999,-114.088228,-68.0,top 18 | D24,,D_SOD-323_HandSoldering,335.373474,-96.471735,-68.0,top 19 | D25,,D_SOD-323_HandSoldering,331.99203,-138.822244,-68.0,top 20 | D26,,D_SOD-323_HandSoldering,324.874507,-121.205752,-68.0,top 21 | D27,,D_SOD-323_HandSoldering,317.756981,-103.589258,-68.0,top 22 | D28,,D_SOD-323_HandSoldering,309.39327,-133.608226,-68.0,top 23 | D29,,D_SOD-323_HandSoldering,302.275745,-115.991732,-68.0,top 24 | D3,,D_SOD-323_HandSoldering,102.621887,-96.471735,-112.0,top 25 | D30,,D_SOD-323_HandSoldering,295.158218,-98.37524,-68.0,top 26 | D31,,D_SOD-323_HandSoldering,288.218014,-131.917503,-68.0,top 27 | D32,,D_SOD-323_HandSoldering,281.100489,-114.301011,-68.0,top 28 | D33,,D_SOD-323_HandSoldering,273.982964,-96.68452,-68.0,top 29 | D34,,D_SOD-323_HandSoldering,272.025026,-142.558329,-68.0,top 30 | D35,,D_SOD-323_HandSoldering,264.907501,-124.941836,-68.0,top 31 | D36,,D_SOD-323_HandSoldering,257.789975,-107.325342,-68.0,top 32 | D37,,D_SOD-323_HandSoldering,254.408532,-149.675854,-68.0,top 33 | D38,,D_SOD-323_HandSoldering,247.291008,-132.059361,-68.0,top 34 | D39,,D_SOD-323_HandSoldering,240.173481,-114.442869,-68.0,top 35 | D4,,D_SOD-323_HandSoldering,106.00333,-138.822245,-112.0,top 36 | D40,,D_SOD-323_HandSoldering,275.619252,-161.598325,-68.0,top 37 | D41,,D_SOD-323_HandSoldering,258.00276,-168.715853,-68.0,top 38 | D42,,D_SOD-323_HandSoldering,240.386266,-175.833377,-68.0,top 39 | D5,,D_SOD-323_HandSoldering,113.120856,-121.205753,-112.0,top 40 | D6,,D_SOD-323_HandSoldering,120.238379,-103.589261,-112.0,top 41 | D7,,D_SOD-323_HandSoldering,128.602091,-133.608226,-112.0,top 42 | D8,,D_SOD-323_HandSoldering,135.719615,-115.991733,-112.0,top 43 | D9,,D_SOD-323_HandSoldering,142.837142,-98.375241,-112.0,top 44 | MCU1,,ProMicro,218.997681,-126.205315,-90.0,top 45 | S1,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,77.305497,-132.623737,-22.0,top 46 | S10,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,138.696006,-132.836521,-22.0,top 47 | S11,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,145.813533,-115.220028,-22.0,top 48 | S12,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,152.931058,-97.603533,-22.0,top 49 | S13,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,154.888996,-143.477343,-22.0,top 50 | S14,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,162.006521,-125.860851,-22.0,top 51 | S15,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,169.124046,-108.244359,-22.0,top 52 | S16,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,172.50549,-150.594871,-22.0,top 53 | S17,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,179.623015,-132.978378,-22.0,top 54 | S18,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,186.74054,-115.361883,-22.0,top 55 | S19,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,151.29477,-162.517343,-22.0,top 56 | S2,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,84.423023,-115.007243,-22.0,top 57 | S20,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,168.911262,-169.634869,-22.0,top 58 | S21,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,186.527755,-176.752396,-22.0,top 59 | S22,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,359.853208,-131.684087,22.0,top 60 | S23,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,352.735682,-114.067597,22.0,top 61 | S24,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,345.618158,-96.451102,22.0,top 62 | S25,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,342.236715,-138.801614,22.0,top 63 | S26,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,335.119188,-121.185121,22.0,top 64 | S27,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,328.001665,-103.568628,22.0,top 65 | S28,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,319.637953,-133.587593,22.0,top 66 | S29,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,312.520428,-115.971101,22.0,top 67 | S3,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,91.540548,-97.39075,-22.0,top 68 | S30,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,305.402904,-98.354608,22.0,top 69 | S31,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,298.462698,-131.896873,22.0,top 70 | S32,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,291.345172,-114.280378,22.0,top 71 | S33,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,284.227646,-96.663886,22.0,top 72 | S34,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,282.269708,-142.537696,22.0,top 73 | S35,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,275.152184,-124.921202,22.0,top 74 | S36,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,268.03466,-107.304709,22.0,top 75 | S37,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,264.653216,-149.655222,22.0,top 76 | S38,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,257.535691,-132.038728,22.0,top 77 | S39,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,250.418165,-114.422237,22.0,top 78 | S4,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,94.92199,-139.741263,-22.0,top 79 | S40,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,285.863936,-161.577695,22.0,top 80 | S41,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,268.247443,-168.69522,22.0,top 81 | S42,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,250.63095,-175.812745,22.0,top 82 | S5,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,102.039515,-122.12477,-22.0,top 83 | S6,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,109.157041,-104.508275,-22.0,top 84 | S7,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,117.520752,-134.527242,-22.0,top 85 | S8,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,124.638278,-116.910748,-22.0,top 86 | S9,SW_MX_Choc_PCB_1.00u,SW_Cherry_MX_Choc_PCB_1.00u_nosilk,131.755804,-99.294256,-22.0,top 87 | -------------------------------------------------------------------------------- /pcbs/jlcpcb/production_files/GERBER-kbd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kumekay/crabapplepad/3208f54d65daefd344864523d70714aa9cf61db7/pcbs/jlcpcb/production_files/GERBER-kbd.zip -------------------------------------------------------------------------------- /pcbs/jlcpcb/project.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kumekay/crabapplepad/3208f54d65daefd344864523d70714aa9cf61db7/pcbs/jlcpcb/project.db -------------------------------------------------------------------------------- /pcbs/kbd.kicad_dru: -------------------------------------------------------------------------------- 1 | (version 1) 2 | #Kicad 7 3 | #https://gist.github.com/darkxst/f713268e5469645425eed40115fb8b49 4 | 5 | # 2-layer, 1oz copper 6 | (rule "Minimum Trace Width (outer layer)" 7 | (constraint track_width (min 5mil)) 8 | (layer outer) 9 | (condition "A.Type == 'track'")) 10 | 11 | (rule "Minimum Trace Spacing (outer layer)" 12 | (constraint clearance (min 5mil)) 13 | (layer outer) 14 | (condition "A.Type == 'track' && B.Type == A.Type")) 15 | 16 | # 4-layer 17 | (rule "Minimum Trace Width and Spacing (inner layer)" 18 | (constraint track_width (min 3.5mil)) 19 | (layer inner) 20 | (condition "A.Type == 'track'")) 21 | 22 | (rule "Minimum Trace Spacing (inner layer)" 23 | (constraint clearance (min 3.5mil)) 24 | (layer inner) 25 | (condition "A.Type == 'track' && B.Type == A.Type")) 26 | 27 | # silkscreen (Kicad 7 only) 28 | (rule "Minimum Text" 29 | (constraint text_thickness (min 0.15mm)) 30 | (constraint text_height (min 1mm)) 31 | (layer "?.Silkscreen")) 32 | 33 | (rule "Pad to Silkscreen" 34 | (constraint silk_clearance (min 0.15mm)) 35 | (layer outer) 36 | (condition "A.Type == 'pad' && (B.Type == 'text' || B.Type == 'graphic')")) 37 | 38 | # edge clearance 39 | (rule "Trace to Outline" 40 | (constraint edge_clearance (min 0.3mm)) 41 | (condition "A.Type == 'track'")) 42 | 43 | # This would override board outline and milled areas 44 | #(rule "Trace to V-Cut" 45 | # (constraint clearance (min 0.4mm)) 46 | # (condition "A.Type == 'track' && B.Layer == 'Edge.Cuts'")) 47 | 48 | # drill/hole size 49 | (rule "drill hole size (mechanical)" 50 | (constraint hole_size (min 0.2mm) (max 6.3mm))) 51 | 52 | (rule "Minimum Via Hole Size" 53 | (constraint hole_size (min 0.2mm)) 54 | (condition "A.Type == 'via'")) 55 | 56 | (rule "Minimum Via Diameter" 57 | (constraint via_diameter (min 0.45mm)) 58 | (condition "A.Type == 'via'")) 59 | 60 | (rule "PTH Hole Size" 61 | (constraint hole_size (min 0.2mm) (max 6.35mm)) 62 | (condition "A.isPlated()")) 63 | 64 | (rule "Minimum Non-plated Hole Size" 65 | (constraint hole_size (min 0.5mm)) 66 | (condition "A.Type == 'pad' && !A.isPlated()")) 67 | 68 | (rule "Minimum Castellated Hole Size" 69 | (constraint hole_size (min 0.6mm)) 70 | (condition "A.Type == 'pad' && A.Fabrication_Property == 'Castellated pad'")) 71 | 72 | # clearance 73 | (rule "hole to hole clearance (different nets)" 74 | (constraint hole_to_hole (min 0.5mm)) 75 | (condition "A.Net != B.Net")) 76 | 77 | (rule "via to track clearance" 78 | (constraint hole_clearance (min 0.254mm)) 79 | (condition "A.Type == 'via' && B.Type == 'track'")) 80 | 81 | (rule "via to via clearance (same nets)" 82 | (constraint hole_to_hole (min 0.254mm)) 83 | (condition "A.Type == 'via' && B.Type == A.Type && A.Net == B.Net")) 84 | 85 | (rule "pad to pad clearance (with hole, different nets)" 86 | (constraint hole_to_hole (min 0.5mm)) 87 | (condition "A.Type == 'pad' && B.Type == A.Type && A.Net != B.Net")) 88 | 89 | (rule "pad to pad clearance (without hole, different nets)" 90 | (constraint clearance (min 0.127mm)) 91 | (condition "A.Type == 'pad' && B.Type == A.Type && A.Net != B.Net")) 92 | 93 | (rule "NPTH to Track clearance)" 94 | (constraint hole_clearance (min 0.254mm)) 95 | (condition "A.Pad_Type == 'NPTH, mechanical' && B.Type == 'track'")) 96 | 97 | (rule "PTH to Track clearance)" 98 | (constraint hole_clearance (min 0.33mm)) 99 | (condition "A.isPlated() && B.Type == 'track'")) 100 | 101 | (rule "Pad to Track clearance)" 102 | (constraint clearance (min 0.2mm)) 103 | (condition "A.isPlated() && B.Type == 'track'")) 104 | 105 | (rule "Pad to Outline" 106 | (constraint edge_clearance (min 0.3mm)) 107 | (condition "A.Type == 'pad'")) 108 | -------------------------------------------------------------------------------- /pcbs/kbd.kicad_prl: -------------------------------------------------------------------------------- 1 | { 2 | "board": { 3 | "active_layer": 0, 4 | "active_layer_preset": "", 5 | "auto_track_width": true, 6 | "hidden_netclasses": [], 7 | "hidden_nets": [], 8 | "high_contrast_mode": 0, 9 | "net_color_mode": 1, 10 | "opacity": { 11 | "images": 0.6, 12 | "pads": 1.0, 13 | "tracks": 1.0, 14 | "vias": 1.0, 15 | "zones": 0.7599999904632568 16 | }, 17 | "selection_filter": { 18 | "dimensions": true, 19 | "footprints": true, 20 | "graphics": true, 21 | "keepouts": true, 22 | "lockedItems": false, 23 | "otherItems": true, 24 | "pads": true, 25 | "text": true, 26 | "tracks": true, 27 | "vias": true, 28 | "zones": true 29 | }, 30 | "visible_items": [ 31 | 0, 32 | 1, 33 | 2, 34 | 3, 35 | 4, 36 | 5, 37 | 8, 38 | 9, 39 | 10, 40 | 11, 41 | 12, 42 | 13, 43 | 15, 44 | 16, 45 | 17, 46 | 18, 47 | 19, 48 | 20, 49 | 21, 50 | 22, 51 | 23, 52 | 24, 53 | 25, 54 | 26, 55 | 27, 56 | 28, 57 | 29, 58 | 30, 59 | 32, 60 | 33, 61 | 34, 62 | 35, 63 | 36, 64 | 37, 65 | 39, 66 | 40 67 | ], 68 | "visible_layers": "fffffec_ffffffff", 69 | "zone_display_mode": 0 70 | }, 71 | "git": { 72 | "repo_password": "", 73 | "repo_type": "", 74 | "repo_username": "", 75 | "ssh_key": "" 76 | }, 77 | "meta": { 78 | "filename": "kbd.kicad_prl", 79 | "version": 3 80 | }, 81 | "project": { 82 | "files": [] 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /pcbs/kbd.kicad_pro: -------------------------------------------------------------------------------- 1 | { 2 | "board": { 3 | "3dviewports": [], 4 | "design_settings": { 5 | "defaults": { 6 | "apply_defaults_to_fp_fields": false, 7 | "apply_defaults_to_fp_shapes": false, 8 | "apply_defaults_to_fp_text": false, 9 | "board_outline_line_width": 0.05, 10 | "copper_line_width": 0.2, 11 | "copper_text_italic": false, 12 | "copper_text_size_h": 1.5, 13 | "copper_text_size_v": 1.5, 14 | "copper_text_thickness": 0.3, 15 | "copper_text_upright": false, 16 | "courtyard_line_width": 0.05, 17 | "dimension_precision": 4, 18 | "dimension_units": 3, 19 | "dimensions": { 20 | "arrow_length": 1270000, 21 | "extension_offset": 500000, 22 | "keep_text_aligned": true, 23 | "suppress_zeroes": false, 24 | "text_position": 0, 25 | "units_format": 1 26 | }, 27 | "fab_line_width": 0.1, 28 | "fab_text_italic": false, 29 | "fab_text_size_h": 1.0, 30 | "fab_text_size_v": 1.0, 31 | "fab_text_thickness": 0.15, 32 | "fab_text_upright": false, 33 | "other_line_width": 0.1, 34 | "other_text_italic": false, 35 | "other_text_size_h": 1.0, 36 | "other_text_size_v": 1.0, 37 | "other_text_thickness": 0.15, 38 | "other_text_upright": false, 39 | "pads": { 40 | "drill": 1.0922, 41 | "height": 1.7526, 42 | "width": 1.7526 43 | }, 44 | "silk_line_width": 0.1, 45 | "silk_text_italic": false, 46 | "silk_text_size_h": 1.0, 47 | "silk_text_size_v": 1.0, 48 | "silk_text_thickness": 0.1, 49 | "silk_text_upright": false, 50 | "zones": { 51 | "min_clearance": 0.5 52 | } 53 | }, 54 | "diff_pair_dimensions": [ 55 | { 56 | "gap": 0.0, 57 | "via_gap": 0.0, 58 | "width": 0.0 59 | } 60 | ], 61 | "drc_exclusions": [], 62 | "meta": { 63 | "version": 2 64 | }, 65 | "rule_severities": { 66 | "annular_width": "error", 67 | "clearance": "error", 68 | "connection_width": "warning", 69 | "copper_edge_clearance": "error", 70 | "copper_sliver": "warning", 71 | "courtyards_overlap": "error", 72 | "diff_pair_gap_out_of_range": "error", 73 | "diff_pair_uncoupled_length_too_long": "error", 74 | "drill_out_of_range": "error", 75 | "duplicate_footprints": "warning", 76 | "extra_footprint": "warning", 77 | "footprint": "error", 78 | "footprint_symbol_mismatch": "warning", 79 | "footprint_type_mismatch": "ignore", 80 | "hole_clearance": "error", 81 | "hole_near_hole": "error", 82 | "holes_co_located": "warning", 83 | "invalid_outline": "error", 84 | "isolated_copper": "warning", 85 | "item_on_disabled_layer": "error", 86 | "items_not_allowed": "error", 87 | "length_out_of_range": "error", 88 | "lib_footprint_issues": "warning", 89 | "lib_footprint_mismatch": "warning", 90 | "malformed_courtyard": "error", 91 | "microvia_drill_out_of_range": "error", 92 | "missing_courtyard": "ignore", 93 | "missing_footprint": "warning", 94 | "net_conflict": "warning", 95 | "npth_inside_courtyard": "ignore", 96 | "padstack": "warning", 97 | "pth_inside_courtyard": "ignore", 98 | "shorting_items": "error", 99 | "silk_edge_clearance": "warning", 100 | "silk_over_copper": "warning", 101 | "silk_overlap": "warning", 102 | "skew_out_of_range": "error", 103 | "solder_mask_bridge": "error", 104 | "starved_thermal": "error", 105 | "text_height": "warning", 106 | "text_thickness": "warning", 107 | "through_hole_pad_without_hole": "error", 108 | "too_many_vias": "error", 109 | "track_dangling": "warning", 110 | "track_width": "error", 111 | "tracks_crossing": "error", 112 | "unconnected_items": "error", 113 | "unresolved_variable": "error", 114 | "via_dangling": "warning", 115 | "zones_intersect": "error" 116 | }, 117 | "rules": { 118 | "max_error": 0.005, 119 | "min_clearance": 0.3, 120 | "min_connection": 0.0, 121 | "min_copper_edge_clearance": 0.5, 122 | "min_hole_clearance": 0.33, 123 | "min_hole_to_hole": 0.25, 124 | "min_microvia_diameter": 0.2, 125 | "min_microvia_drill": 0.1, 126 | "min_resolved_spokes": 2, 127 | "min_silk_clearance": 0.0, 128 | "min_text_height": 0.8, 129 | "min_text_thickness": 0.08, 130 | "min_through_hole_diameter": 0.3, 131 | "min_track_width": 0.2, 132 | "min_via_annular_width": 0.1, 133 | "min_via_diameter": 0.5, 134 | "solder_mask_to_copper_clearance": 0.005, 135 | "use_height_for_length_calcs": true 136 | }, 137 | "teardrop_options": [ 138 | { 139 | "td_onpadsmd": true, 140 | "td_onroundshapesonly": false, 141 | "td_ontrackend": false, 142 | "td_onviapad": true 143 | } 144 | ], 145 | "teardrop_parameters": [ 146 | { 147 | "td_allow_use_two_tracks": true, 148 | "td_curve_segcount": 5, 149 | "td_height_ratio": 1.0, 150 | "td_length_ratio": 0.5, 151 | "td_maxheight": 2.0, 152 | "td_maxlen": 1.0, 153 | "td_on_pad_in_zone": false, 154 | "td_target_name": "td_round_shape", 155 | "td_width_to_size_filter_ratio": 0.9 156 | }, 157 | { 158 | "td_allow_use_two_tracks": true, 159 | "td_curve_segcount": 5, 160 | "td_height_ratio": 1.0, 161 | "td_length_ratio": 0.5, 162 | "td_maxheight": 2.0, 163 | "td_maxlen": 1.0, 164 | "td_on_pad_in_zone": false, 165 | "td_target_name": "td_rect_shape", 166 | "td_width_to_size_filter_ratio": 0.9 167 | }, 168 | { 169 | "td_allow_use_two_tracks": true, 170 | "td_curve_segcount": 5, 171 | "td_height_ratio": 1.0, 172 | "td_length_ratio": 0.5, 173 | "td_maxheight": 2.0, 174 | "td_maxlen": 1.0, 175 | "td_on_pad_in_zone": false, 176 | "td_target_name": "td_track_end", 177 | "td_width_to_size_filter_ratio": 0.9 178 | } 179 | ], 180 | "track_widths": [ 181 | 0.0, 182 | 0.5 183 | ], 184 | "tuning_pattern_settings": { 185 | "diff_pair_defaults": { 186 | "corner_radius_percentage": 80, 187 | "corner_style": 1, 188 | "max_amplitude": 1.0, 189 | "min_amplitude": 0.2, 190 | "single_sided": false, 191 | "spacing": 1.0 192 | }, 193 | "diff_pair_skew_defaults": { 194 | "corner_radius_percentage": 80, 195 | "corner_style": 1, 196 | "max_amplitude": 1.0, 197 | "min_amplitude": 0.2, 198 | "single_sided": false, 199 | "spacing": 0.6 200 | }, 201 | "single_track_defaults": { 202 | "corner_radius_percentage": 80, 203 | "corner_style": 1, 204 | "max_amplitude": 1.0, 205 | "min_amplitude": 0.2, 206 | "single_sided": false, 207 | "spacing": 0.6 208 | } 209 | }, 210 | "via_dimensions": [ 211 | { 212 | "diameter": 0.0, 213 | "drill": 0.0 214 | } 215 | ], 216 | "zones_allow_external_fillets": true 217 | }, 218 | "ipc2581": { 219 | "dist": "", 220 | "distpn": "", 221 | "internal_id": "", 222 | "mfg": "", 223 | "mpn": "" 224 | }, 225 | "layer_presets": [], 226 | "viewports": [] 227 | }, 228 | "boards": [], 229 | "cvpcb": { 230 | "equivalence_files": [] 231 | }, 232 | "libraries": { 233 | "pinned_footprint_libs": [], 234 | "pinned_symbol_libs": [] 235 | }, 236 | "meta": { 237 | "filename": "kbd.kicad_pro", 238 | "version": 1 239 | }, 240 | "net_settings": { 241 | "classes": [ 242 | { 243 | "bus_width": 12, 244 | "clearance": 0.3, 245 | "diff_pair_gap": 0.25, 246 | "diff_pair_via_gap": 0.25, 247 | "diff_pair_width": 0.2, 248 | "line_style": 0, 249 | "microvia_diameter": 0.3, 250 | "microvia_drill": 0.1, 251 | "name": "Default", 252 | "pcb_color": "rgba(0, 0, 0, 0.000)", 253 | "schematic_color": "rgba(0, 0, 0, 0.000)", 254 | "track_width": 0.3, 255 | "via_diameter": 0.6, 256 | "via_drill": 0.3, 257 | "wire_width": 6 258 | } 259 | ], 260 | "meta": { 261 | "version": 3 262 | }, 263 | "net_colors": null, 264 | "netclass_assignments": null, 265 | "netclass_patterns": [] 266 | }, 267 | "pcbnew": { 268 | "last_paths": { 269 | "gencad": "", 270 | "idf": "", 271 | "netlist": "", 272 | "plot": "", 273 | "pos_files": "", 274 | "specctra_dsn": "", 275 | "step": "", 276 | "svg": "", 277 | "vrml": "" 278 | }, 279 | "page_layout_descr_file": "" 280 | }, 281 | "schematic": { 282 | "legacy_lib_dir": "", 283 | "legacy_lib_list": [] 284 | }, 285 | "sheets": [], 286 | "text_variables": {} 287 | } 288 | -------------------------------------------------------------------------------- /pcbs/kbd.round-tracks-config: -------------------------------------------------------------------------------- 1 | Default True 2.0 3 2 | False True False 3 | --------------------------------------------------------------------------------