├── LICENSE ├── README.md ├── images ├── MX36 │ ├── 20230623_180005~2.jpg │ ├── 20230623_180352.jpg │ ├── 20230623_180442.jpg │ ├── 20230623_180524.jpg │ ├── 20230623_180551.jpg │ ├── 20230623_180608.jpg │ └── 20230623_180624.jpg ├── README.md └── flow_logo.png └── stl └── MX36 ├── MX36 flow plate.stl ├── MX36 plate.stl ├── MX36 std.stl ├── MX36 tball.stl └── README.md /LICENSE: -------------------------------------------------------------------------------- 1 | CERN Open Hardware Licence Version 2 - Permissive 2 | 3 | 4 | Preamble 5 | 6 | CERN has developed this licence to promote collaboration among hardware 7 | designers and to provide a legal tool which supports the freedom to use, 8 | study, modify, share and distribute hardware designs and products based on 9 | those designs. Version 2 of the CERN Open Hardware Licence comes in three 10 | variants: this licence, CERN-OHL-P (permissive); and two reciprocal licences: 11 | CERN-OHL-W (weakly reciprocal) and CERN-OHL-S (strongly reciprocal). 12 | 13 | The CERN-OHL-P is copyright CERN 2020. Anyone is welcome to use it, in 14 | unmodified form only. 15 | 16 | Use of this Licence does not imply any endorsement by CERN of any Licensor or 17 | their designs nor does it imply any involvement by CERN in their development. 18 | 19 | 20 | 1 Definitions 21 | 22 | 1.1 'Licence' means this CERN-OHL-P. 23 | 24 | 1.2 'Source' means information such as design materials or digital code 25 | which can be applied to Make or test a Product or to prepare a Product 26 | for use, Conveyance or sale, regardless of its medium or how it is 27 | expressed. It may include Notices. 28 | 29 | 1.3 'Covered Source' means Source that is explicitly made available under 30 | this Licence. 31 | 32 | 1.4 'Product' means any device, component, work or physical object, whether 33 | in finished or intermediate form, arising from the use, application or 34 | processing of Covered Source. 35 | 36 | 1.5 'Make' means to create or configure something, whether by manufacture, 37 | assembly, compiling, loading or applying Covered Source or another 38 | Product or otherwise. 39 | 40 | 1.6 'Notice' means copyright, acknowledgement and trademark notices, 41 | references to the location of any Notices, modification notices 42 | (subsection 3.3(b)) and all notices that refer to this Licence and to 43 | the disclaimer of warranties that are included in the Covered Source. 44 | 45 | 1.7 'Licensee' or 'You' means any person exercising rights under this 46 | Licence. 47 | 48 | 1.8 'Licensor' means a person who creates Source or modifies Covered Source 49 | and subsequently Conveys the resulting Covered Source under the terms 50 | and conditions of this Licence. A person may be a Licensee and a 51 | Licensor at the same time. 52 | 53 | 1.9 'Convey' means to communicate to the public or distribute. 54 | 55 | 56 | 2 Applicability 57 | 58 | 2.1 This Licence governs the use, copying, modification, Conveying of 59 | Covered Source and Products, and the Making of Products. By exercising 60 | any right granted under this Licence, You irrevocably accept these terms 61 | and conditions. 62 | 63 | 2.2 This Licence is granted by the Licensor directly to You, and shall apply 64 | worldwide and without limitation in time. 65 | 66 | 2.3 You shall not attempt to restrict by contract or otherwise the rights 67 | granted under this Licence to other Licensees. 68 | 69 | 2.4 This Licence is not intended to restrict fair use, fair dealing, or any 70 | other similar right. 71 | 72 | 73 | 3 Copying, Modifying and Conveying Covered Source 74 | 75 | 3.1 You may copy and Convey verbatim copies of Covered Source, in any 76 | medium, provided You retain all Notices. 77 | 78 | 3.2 You may modify Covered Source, other than Notices. 79 | 80 | You may only delete Notices if they are no longer applicable to the 81 | corresponding Covered Source as modified by You and You may add 82 | additional Notices applicable to Your modifications. 83 | 84 | 3.3 You may Convey modified Covered Source (with the effect that You shall 85 | also become a Licensor) provided that You: 86 | 87 | a) retain Notices as required in subsection 3.2; and 88 | 89 | b) add a Notice to the modified Covered Source stating that You have 90 | modified it, with the date and brief description of how You have 91 | modified it. 92 | 93 | 3.4 You may Convey Covered Source or modified Covered Source under licence 94 | terms which differ from the terms of this Licence provided that You: 95 | 96 | a) comply at all times with subsection 3.3; and 97 | 98 | b) provide a copy of this Licence to anyone to whom You Convey Covered 99 | Source or modified Covered Source. 100 | 101 | 102 | 4 Making and Conveying Products 103 | 104 | You may Make Products, and/or Convey them, provided that You ensure that the 105 | recipient of the Product has access to any Notices applicable to the Product. 106 | 107 | 108 | 5 DISCLAIMER AND LIABILITY 109 | 110 | 5.1 DISCLAIMER OF WARRANTY -- The Covered Source and any Products are 111 | provided 'as is' and any express or implied warranties, including, but 112 | not limited to, implied warranties of merchantability, of satisfactory 113 | quality, non-infringement of third party rights, and fitness for a 114 | particular purpose or use are disclaimed in respect of any Source or 115 | Product to the maximum extent permitted by law. The Licensor makes no 116 | representation that any Source or Product does not or will not infringe 117 | any patent, copyright, trade secret or other proprietary right. The 118 | entire risk as to the use, quality, and performance of any Source or 119 | Product shall be with You and not the Licensor. This disclaimer of 120 | warranty is an essential part of this Licence and a condition for the 121 | grant of any rights granted under this Licence. 122 | 123 | 5.2 EXCLUSION AND LIMITATION OF LIABILITY -- The Licensor shall, to the 124 | maximum extent permitted by law, have no liability for direct, indirect, 125 | special, incidental, consequential, exemplary, punitive or other damages 126 | of any character including, without limitation, procurement of 127 | substitute goods or services, loss of use, data or profits, or business 128 | interruption, however caused and on any theory of contract, warranty, 129 | tort (including negligence), product liability or otherwise, arising in 130 | any way in relation to the Covered Source, modified Covered Source 131 | and/or the Making or Conveyance of a Product, even if advised of the 132 | possibility of such damages, and You shall hold the Licensor(s) free and 133 | harmless from any liability, costs, damages, fees and expenses, 134 | including claims by third parties, in relation to such use. 135 | 136 | 137 | 6 Patents 138 | 139 | 6.1 Subject to the terms and conditions of this Licence, each Licensor 140 | hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, 141 | royalty-free, irrevocable (except as stated in this section 6, or where 142 | terminated by the Licensor for cause) patent licence to Make, have Made, 143 | use, offer to sell, sell, import, and otherwise transfer the Covered 144 | Source and Products, where such licence applies only to those patent 145 | claims licensable by such Licensor that are necessarily infringed by 146 | exercising rights under the Covered Source as Conveyed by that Licensor. 147 | 148 | 6.2 If You institute patent litigation against any entity (including a 149 | cross-claim or counterclaim in a lawsuit) alleging that the Covered 150 | Source or a Product constitutes direct or contributory patent 151 | infringement, or You seek any declaration that a patent licensed to You 152 | under this Licence is invalid or unenforceable then any rights granted 153 | to You under this Licence shall terminate as of the date such process is 154 | initiated. 155 | 156 | 157 | 7 General 158 | 159 | 7.1 If any provisions of this Licence are or subsequently become invalid or 160 | unenforceable for any reason, the remaining provisions shall remain 161 | effective. 162 | 163 | 7.2 You shall not use any of the name (including acronyms and 164 | abbreviations), image, or logo by which the Licensor or CERN is known, 165 | except where needed to comply with section 3, or where the use is 166 | otherwise allowed by law. Any such permitted use shall be factual and 167 | shall not be made so as to suggest any kind of endorsement or 168 | implication of involvement by the Licensor or its personnel. 169 | 170 | 7.3 CERN may publish updated versions and variants of this Licence which it 171 | considers to be in the spirit of this version, but may differ in detail 172 | to address new problems or concerns. New versions will be published with 173 | a unique version number and a variant identifier specifying the variant. 174 | If the Licensor has specified that a given variant applies to the 175 | Covered Source without specifying a version, You may treat that Covered 176 | Source as being released under any version of the CERN-OHL with that 177 | variant. If no variant is specified, the Covered Source shall be treated 178 | as being released under CERN-OHL-S. The Licensor may also specify that 179 | the Covered Source is subject to a specific version of the CERN-OHL or 180 | any later version in which case You may apply this or any later version 181 | of CERN-OHL with the same variant identifier published by CERN. 182 | 183 | 7.4 This Licence shall not be enforceable except by a Licensor acting as 184 | such, and third party beneficiary rights are specifically excluded. 185 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![flow-MX36](https://raw.githubusercontent.com/jsallan/flow/main/images/MX36/20230623_180005~2.jpg) 2 | ![flow-logo](https://raw.githubusercontent.com/jsallan/flow/main/images/flow_logo.png) 3 | 4 | A product line of sculpted split ergo mech keyboards. 5 | 6 | **\*\*Note:** as of 24-June-2023, the flow-MX36 is released and the flow-choc40 is in dev. 7 | # Main Attributes 8 | - integrated 34mm trackball using the PMW3360 sensor 9 | - ceramic trackball bearings 10 | - options for both choc v1 switches and MX switches 11 | - USB-C interlink cable 12 | - uC trays for PI Pico and Pro Micro (in dev) 13 | 14 | **\*\*Note:** I think that a row and/or col could be added with some effort. I'm curious if this would make these keyboards more accessible. If you have time, I'd love to hear your perspective...here's a [survey](https://forms.gle/6ikiyWEq5DA8FnEW9). 15 | # Motivation 16 | There's a number drivers for the keyboard series. Below is a summary of the top 3: 17 | - proven comfort from previous split designs, [MX](https://www.thingiverse.com/thing:5404852) and [choc](https://github.com/jsallan/trinidox) 18 | - trackball mandatory for enhanced convenience 19 | - a finished look, e.g. hidden switches, smooth lines, hidden plate etc. 20 | 21 | # Design Details 22 | ## Process 23 | These keyboards started life as dactyl manuforms. The dactyl generators are great to quickly optimize key position, tenting angle etc. Once the design reached a point of comfort, the dactyl design was imported into Fusion 360. The dactyl was used for key and trackball positioning. 24 | 25 | The MX variant didn't have an existing trackball, so it took a number of iterations to nail down a comfortable position. 26 | ## Trackball Placement 27 | The trackball position of the trackball was designed to be used by a "row shift" relative to the home-row, i.e. fingers on top row with thumb on trackball. The top row can be mapped to mouse keys which is a good complement to VIM navigation (HJKL for arrow keys)...however your keymap needs to make sense to you! 28 | 29 | ## MX and choc differences 30 | Through a period of discovery, the comfortable trackball position relative to the thumb keys is quite different between choc and MX. This is ultimately the reason for the different keyboards. Of course the thickness of the key matrices are different, but I initially thought that could be overcome by clever design features. However once it was determined that trackball positions had to be different, two designs was the only path forward. This actually worked out well because the MX and choc key matrices on the reference designs were quite different, meaning a merge conflict was avoided. 31 | 32 | # Print List 33 | The print list assumes you want to print a trackball on the right and no trackball on the left. 34 | | **Item** | **Mirrored?** | **Qty** | **stl** | 35 | |----------|----------|---------|---------| 36 | | left case | Yes | 1 | [MX](https://github.com/jsallan/flow/blob/main/stl/MX36/MX36%20std.stl) or choc | 37 | | right case | No | 1 | [MX](https://github.com/jsallan/flow/blob/main/stl/MX36/MX36%20tball.stl) or choc | 38 | | plate| 1-yes and 1-no | 2 | [MX](https://github.com/jsallan/flow/blob/main/stl/MX36/MX36%20plate.stl) or choc | 39 | | bearing holder | No | 3 | [here](https://github.com/jsallan/trinidox/blob/main/stl/tball_bearing_holder%20v14.stl) | 40 | | uC holder | No | 2 | [PI Pico](https://github.com/jsallan/uC-trays/blob/main/models/PI%20PIco/PI%20Pico%20tray.stl) or ProMico | 41 | 42 | # Part List 43 | Please note that the links below are intended as examples. These happen to be the same products that I bought, but I'm not an affiliate and have no business relationship with the sellers. 44 | ## Required for the case 45 | | **Item** | **Qty** | **Link** | 46 | |----------|----------|----------| 47 | | uC | 2 | PI Pico: [WeAct at AliExpress](https://www.aliexpress.com/item/1005003708090298.html) or [Raspberry PI](https://www.raspberrypi.com/products/raspberry-pi-pico/)| 48 | | 34mm trackball | 1 | [Amazon](https://www.amazon.ca/Perixx-PERIPRO-303-1-34-Inches-Trackball/dp/B08DD7ZDTG?ref_=ast_sto_dp&th=1&psc=1) | 49 | | 2.5mm ceramic bearings | 3 | [AliExpress](https://www.aliexpress.com/item/4000829130283.html) | 50 | | brass inserts M3 x D5.0 x L4.0 | 10 | [AliExpress](https://www.aliexpress.com/item/1005002526998853.html) | 51 | | torx screws 50pcs M3, 8mm | 10 | [AliExpress](https://www.aliexpress.com/item/1005002369233576.html) | 52 | | USB-C breakout board | 2 | [AliExpress](https://www.aliexpress.com/item/1005003245060475.html) | 53 | | USB-C interlink cable | 1 | [AliExpress](https://www.aliexpress.com/item/1005002811739151.html) | 54 | | Furniture bumpers | 10 | [AliExpress](https://www.aliexpress.com/item/1005003044229837.html) | 55 | 56 | **You'll also need one PMW3360 sensor board.** You can either purchase one from [tindie](https://www.tindie.com/products/jkicklighter/pmw3360-motion-sensor/), or [make your own](https://github.com/Ariamelon/Ogen). 57 | 58 | ## Parts for the electronics 59 | The list below is not comprehensive because the items involve a lot of personal preference...some folks use hotswaps, some don't. Don't even get me started about keyswitches. 60 | | **Item** | **Comments** | 61 | |----------|----------| 62 | | keyswitches | omg the options | 63 | | keycaps | omg the options | 64 | | hotswaps | makes it real easy to try different switches or reuse in another board | 65 | | amoebas pcbs | not required, but a nice quality-of-life improvement. Essential if you want RGB. | 66 | | diodes | gotta have em...unless you type 1 click at a time with no rollover (no one does) | 67 | | wire | I use enamel coated wire, but there's lots of options | 68 | | headers on uC | makes swapping out the uC easy | 69 | | Short dupont cables | if using headers on uC, get these from [AliExpress](https://www.aliexpress.com/item/4000203371860.html) | 70 | | magnetic adapter and cable | if you like to change keyboards often, these are useful from [AliExpress](https://www.aliexpress.com/item/1005002356514892.html) | 71 | 72 | # Build Guides 73 | There are many great build guides already written by people with a much better command of the english language than myself...so I'm not intending to put together a comprehensive how-to. Instead, below are some links that I've found super useful as I've built keyboards, and I hope they can serve others as well. 74 | - [Minidox Amoeba build](https://www.dlford.io/keyboard-build-guide-per-key-rgb-leds/) - very good overall build guide, especially if you intend to use amoebas and RBG LEDs. 75 | - [Sofle RBG build guide](https://josefadamcik.github.io/SofleKeyboard/build_guide_rgb.html) - useful for LED pinout. 76 | 77 | # Gallery 78 | If you've built one, I'd love to add a picture of it below :-) 79 | ## flow-MX36 80 | ![flow-MX36](https://raw.githubusercontent.com/jsallan/flow/main/images/MX36/20230623_180352.jpg) 81 | ![flow-MX36](https://raw.githubusercontent.com/jsallan/flow/main/images/MX36/20230623_180442.jpg) 82 | ![flow-MX36](https://raw.githubusercontent.com/jsallan/flow/main/images/MX36/20230623_180524.jpg) 83 | ![flow-MX36](https://raw.githubusercontent.com/jsallan/flow/main/images/MX36/20230623_180551.jpg) 84 | ![flow-MX36](https://raw.githubusercontent.com/jsallan/flow/main/images/MX36/20230623_180608.jpg) 85 | ![flow-MX36](https://raw.githubusercontent.com/jsallan/flow/main/images/MX36/20230623_180624.jpg) 86 | 87 | -------------------------------------------------------------------------------- /images/MX36/20230623_180005~2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsallan/flow/1d97809025a849eef06d89275aab73e3dfd9c9c2/images/MX36/20230623_180005~2.jpg -------------------------------------------------------------------------------- /images/MX36/20230623_180352.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsallan/flow/1d97809025a849eef06d89275aab73e3dfd9c9c2/images/MX36/20230623_180352.jpg -------------------------------------------------------------------------------- /images/MX36/20230623_180442.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsallan/flow/1d97809025a849eef06d89275aab73e3dfd9c9c2/images/MX36/20230623_180442.jpg -------------------------------------------------------------------------------- /images/MX36/20230623_180524.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsallan/flow/1d97809025a849eef06d89275aab73e3dfd9c9c2/images/MX36/20230623_180524.jpg -------------------------------------------------------------------------------- /images/MX36/20230623_180551.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsallan/flow/1d97809025a849eef06d89275aab73e3dfd9c9c2/images/MX36/20230623_180551.jpg -------------------------------------------------------------------------------- /images/MX36/20230623_180608.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsallan/flow/1d97809025a849eef06d89275aab73e3dfd9c9c2/images/MX36/20230623_180608.jpg -------------------------------------------------------------------------------- /images/MX36/20230623_180624.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsallan/flow/1d97809025a849eef06d89275aab73e3dfd9c9c2/images/MX36/20230623_180624.jpg -------------------------------------------------------------------------------- /images/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/flow_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsallan/flow/1d97809025a849eef06d89275aab73e3dfd9c9c2/images/flow_logo.png -------------------------------------------------------------------------------- /stl/MX36/MX36 flow plate.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsallan/flow/1d97809025a849eef06d89275aab73e3dfd9c9c2/stl/MX36/MX36 flow plate.stl -------------------------------------------------------------------------------- /stl/MX36/MX36 plate.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsallan/flow/1d97809025a849eef06d89275aab73e3dfd9c9c2/stl/MX36/MX36 plate.stl -------------------------------------------------------------------------------- /stl/MX36/MX36 std.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsallan/flow/1d97809025a849eef06d89275aab73e3dfd9c9c2/stl/MX36/MX36 std.stl -------------------------------------------------------------------------------- /stl/MX36/MX36 tball.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsallan/flow/1d97809025a849eef06d89275aab73e3dfd9c9c2/stl/MX36/MX36 tball.stl -------------------------------------------------------------------------------- /stl/MX36/README.md: -------------------------------------------------------------------------------- 1 | 2 | --------------------------------------------------------------------------------