GithubHelp home page GithubHelp logo

snsten / klein Goto Github PK

View Code? Open in Web Editor NEW
217.0 6.0 15.0 40.48 MB

Klein keyboard is a 36 keys, columnar staggered, split ergo keyboard

HTML 100.00%
ergonomic-keyboard keyboard kicad mechanical-keyboard

klein's Introduction

Klein Keyboard

Klein keyboard is a 36 keys, columnar staggered, split keyboard named after Felix Klein

Klein


Features

  • Column Staggered
  • Bluetooth compatible with power switch
  • Seeed Studio XIAO-BLE / Pro Micro / nice!nano* / KB2040 / RP2040(boards with Pro Micro pinout) compatible
  • Hotswap MX and Choc switches support
  • Trackpad support with FPC cable and direct wiring
  • Reversible SMD and through hole diode footprint

* nice!nano firmware not available at the moment.

Versions

Supports multiple options of micro controller and sensors.

Features Supported Microcontroller Firmware available Wired Wireless
Encoder or OLED XIAO-BLE Yes Yes
Encoder, OLED, TouchPad, Buzzer, Haptics Pro Micro Yes Yes
Encoder, OLED, TouchPad, Buzzer, Haptics KB2040/RP2040 Yes Yes
Encoder and OLED nice!nano No (Planned) Yes

Broadly divided in two types:

Wireless

  • Can be made with Seeed Studio XIAO-BLE
  • Supports either rotary encoder or OLED
  • Battery connectors JST and THT

Wireless touchpad is currently not supported in ZMK.

Wired

  • With any Pro Micro based boards
    • Can support encoders, OLED, Touchpad, Buzzer and Haptics

Keyboard Images

PCB with both Choc and MX switches Klein Choc Switches

Low Profile Choc version Klein MX Choc Switches

MX version Klein MX Choc Switches


Repo Layout and Files

.
├── BOM
│   ├── BOM-3235-SEEED.csv         <- BOM
│   └── ibom.html
├── Case
│   └── *.stl                      <- Case stl Files
│   └── Prototype                  <- FreeCad project files (Not tested)
│       └── SwitchPlateFR4         <- SwitchPlate PCB files (Not tested)
├── docs
│   └── images
├── Logo
├── PCB
└── README.md

BOM

It is available in BOM directory as csv file and interactive HTML BOM

Build Guide

Todo

  • Add Build Guide
  • Add Touchpad related 3D Models
  • Software support for Touchpad/OLED

Firmware

Refrences

These projects inspired and helped in making Klein:

klein's People

Contributors

idesignstuff avatar snsten avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

klein's Issues

Switch plate too tight for MX switches

Hi, the switch plate STL does not work with MX switches because its too tight. Do you maybe have an editable version of the STL file or revised version of the switch plate?

license and commercial request from keycapsss.com

Hello,
my name is Ben from Keycapsss.com.
This is not an issue, but i can't find a way to contact you. Feel free to delete this issue.
I wanna ask you if you allow me to add the Klein PCB to my shop?
If i can support you with some parts. Let me know.

You can contact me via mail [email protected]
or Discord Ben | EU/DE | Keycapsss.com#1469

Greetings Ben

OLED i2c pinout mislabeled or misrouted

image
In my (very limited) experience with PCB design, the square pad = GND and the pinout for a OLED on Amazon appears to have the GND pin in the first position.
image
My hypothesis is that the Silkscreen just needs to match the pinout.

Doubts on building MX wireless

I got these batteries, can I solder it using the JST method that doesn't bypass the power switch? And how should I connect it to the controller? Couldn't comprehend from guide only.

I don't have pins to socket the controller, can I build without them? What would the cons be and how do I do so if it's the case?

Does orientation matter when placing the controller?

Can I build the master side with an oled like this which I have around?

Could you help me understand how to jumper the components? I'd like to have an onled on the left side and a rotary encoder on the right side, if possible.

Regarding battery

Firstly, I apologize for my being so noob on this, but I was wondering what would be the issues of placing a larger capacity 3.7 battery over where the trackpad mount was supposed to go(building wireless ofc). I found some 1800mah batteries that are about 40 by 40 mm and 6mm high. But in your guide you suggest not to surpass 3.5mm. Considering I'll print the case and looks are not the most important, would it work placing such battery on top of the XIAOs?

A second doubt would be how can I send the pcb for manufacturing, could you add an explanation on that in the build guide?

Clearance of diodes and choc sockets

On the outside column while using the SOD123 diodes they interfere with the choc sockets. Still usable by soldering the diodes offset down about a millimeter.

Support more keys

If Klein can support 42 keys will be wonderful.
Don't know if this is possible, just want to know.

Missing Encoder route in PCB for Pro Micro Controllers

Description of Error

  • There was a typo in schematics related to Pro Micro Controllers
  • ENCA should have been same as ENC_A and ENCB same as ENC_B (can be seen in attached Image)
  • It causes the Pro Micro based controllers not be able to use rotary encoder
  • XIAO based controllers are not affected due to the additional jumper path

Schematics

Resoultion of Error

  • If you have printed the PCB already and will use wireless version with XIAO, no change is required
  • If you plan to use Pro Micro based controller everthing except encoder works
  • If you want to use encoder anyway you can connect wires from encoder to pins on Pro Micro

Summary of Fix

  • I have added the routes on PCB and fixed the typo in schematics
  • Removed the Gerbers file until I verify the new PCB works (or if someone else try it first)

Need more info

Please give info about "3 pin slide switch" and "click button" what you used in this place I can't find compatible.

And how solder the battery correctly in wireless mode? I (at link higher) saw what battery soldered to (+) (-) pins, but at your instructions everything is somehow less clear.


I promise to make an MR, to adding the information that I needed to get a working keyboard :)

Debug

Good afternoon.
I soldered all for a wired connection, flashed the ProMicro power supply this firmware https://github.com/snsten/Klein-qmk, but any my press the keys doesn't recognized.
Are there any points to check for a closure? May be need connect OLED for debug?

Jan 14 02:22:08 leviathan.lonfas.lab kernel: usb 1-8: USB disconnect, device number 54
Jan 14 02:22:12 leviathan.lonfas.lab kernel: usb 1-8: new full-speed USB device number 55 using xhci_hcd
Jan 14 02:22:12 leviathan.lonfas.lab kernel: usb 1-8: New USB device found, idVendor=feed, idProduct=0000, bcdDevice= 1.00
Jan 14 02:22:12 leviathan.lonfas.lab kernel: usb 1-8: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Jan 14 02:22:12 leviathan.lonfas.lab kernel: usb 1-8: Product: klein
Jan 14 02:22:12 leviathan.lonfas.lab kernel: usb 1-8: Manufacturer: ssh
Jan 14 02:22:12 leviathan.lonfas.lab kernel: input: ssh klein as /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/0003:FEED:0000.004E/input/input204
Jan 14 02:22:12 leviathan.lonfas.lab kernel: hid-generic 0003:FEED:0000.004E: input,hidraw2: USB HID v1.11 Keyboard [ssh klein] on usb-0000:00:14.0-8/input0
Jan 14 02:22:12 leviathan.lonfas.lab kernel: input: ssh klein Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.1/0003:FEED:0000.004F/input/input205
Jan 14 02:22:12 leviathan.lonfas.lab kernel: input: ssh klein System Control as /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.1/0003:FEED:0000.004F/input/input206
Jan 14 02:22:12 leviathan.lonfas.lab kernel: input: ssh klein Consumer Control as /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.1/0003:FEED:0000.004F/input/input207
Jan 14 02:22:12 leviathan.lonfas.lab kernel: input: ssh klein Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.1/0003:FEED:0000.004F/input/input208
Jan 14 02:22:12 leviathan.lonfas.lab kernel: hid-generic 0003:FEED:0000.004F: input,hidraw3: USB HID v1.11 Mouse [ssh klein] on usb-0000:00:14.0-8/input1
Jan 14 02:22:12 leviathan.lonfas.lab mtp-probe[20915]: checking bus 1, device 55: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-8"
Jan 14 02:22:12 leviathan.lonfas.lab mtp-probe[20915]: bus: 1, device: 55 was not an MTP device
Jan 14 02:22:12 leviathan.lonfas.lab systemd-logind[533]: Watching system buttons on /dev/input/event18 (ssh klein Consumer Control)
Jan 14 02:22:12 leviathan.lonfas.lab systemd-logind[533]: Watching system buttons on /dev/input/event17 (ssh klein System Control)
Jan 14 02:22:12 leviathan.lonfas.lab systemd-logind[533]: Watching system buttons on /dev/input/event19 (ssh klein Keyboard)
Jan 14 02:22:12 leviathan.lonfas.lab systemd-logind[533]: Watching system buttons on /dev/input/event15 (ssh klein)
Jan 14 02:22:12 leviathan.lonfas.lab mtp-probe[20942]: checking bus 1, device 55: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-8"
Jan 14 02:22:12 leviathan.lonfas.lab mtp-probe[20942]: bus: 1, device: 55 was not an MTP device
```

Do I necessary to flash both controllers? Or is one of connected to a computer sufficient?

---

p.s. I can send photos of soldering

Case file differences

Really like this board with all the best features from Dilemma, KLOR and others.

Can you point out the differences between the case files?

I understand that the case-KleinCase.stl file includes cutouts for USB, TRRS, everything what's needed for the wired version.

Regarding the case-KleinCase-Wireless.stl, might be a dumb question, but it does not seem to have the USB-Connector cutout at the back, isn't this a problem when charging the battery?

What about the temp and 4mm pad file? Thanks in advance!

nice nano zmk fw

hey, I made Klein ZMK repo for nicenano - might be useful for someone.
I assume it is possible to have 2 options in same repo, but not sure how to achieve it.

P.S.:
Few notes for future improvements:

  1. seems like with nicenano there is barely any place for screen
  2. I would suggest to have more pins for touchpad (I think azoteq tp43s is exact dimensions to fit keyboard, and I assume RDY and maybe RST pins would be useful)
  3. if it is possible to move encoder a little bit so it would be possible to use 1.5 or even 2u for outter thumb cluster buttons
  4. i would suggest to use little bit bigger on/off switch and reset buttone (like on corne wireless) as those were pain to solder manually

Ideas for a klein v2

I absolutely love this keyboard! Immediately my daily driver bringing in a lot of joy.

With that said I have a few suggestions for an eventual 2nd version for an improved version:

1-Add more keys using the nfc pads.
2-Tighter tolerances for the Switches. In my MX and choc switches were very loose making the switchplate a must.
3-Use a Xiao dedicated footprint to make it easier to solder the bat+-, rst and nfc pads.

For 2 and 3 the totem keyboard might give you some good ideas.

CSV of BOM is not in BOM dir

As a beginner at PCBA orders, I think I'm going to need the CSV of the BOM. Please and thank you!

I'm inspired by how many things you've crammed into this board! Well done!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.