OK, we're still waiting for the livestream to start, but we can kick things off here. Wecome to the Hack Chat, I'm Dan and I'll be minding the shop here today along with Dusan as we welcome our friends from Adafruit. Off the top of my head, that's Limor, pt, Jeff, Kattni, Scott, Dan -- anyone else?
here we go!
Oh right -- missed that while typing. Let's go!
Is there a video stream or just text chat?
There we go!!! Thanks!
Hello and welcome!
@Steve M Potter That thing is awesome!
scott, jepler pz type intros after done typin
since not everyone is watching yr vids :)
ditto kattni and dan
I'm Jeff Epler, I've been working with Adafruit on CircuitPython for about 2 years. I've been into mechanical keyboards for an age, starting with a Model M. More recently I've hand built some keyboards and I'm excited to run CircuitPython on them.
@ adafruit, 16 years ago, founded hackaday (nothing to do with it now besides being a fan)pt, works
Hi folks, I'm the lead for CircuitPython. I made custom keyboard a while ago that runs CircuitPython on a feather that is "castelated" with side clippers
So the way we like to work is to type questions here, and the Adafruit crew answers them on the video chat. Or we can ask questions on the chat associated with the livestream
Hi, I'm Kattni! I've been with Adafruit since 2017. I handle the libraries and lot of the guides. In terms of keyboards, I've been into mechanical keyboards for the last couple of years. I've never built my own but I'm looking forward to that becoming simpler with CircuitPython.
some of the good news is that with the silicon shortage, we're releasing hardware that is available like keyboard / keeb, etc
I'm Dan Halbert. I've been doing CIrcuitPython core development for almost four years. In terms of keyboards, I just implemented the `keypad` native module in CircuitPython, which does background scanning for various kinds of keyboards.
Will do! Any questions yet?
aaaand! ask us anything about keyboards and more!
The keypad module, available in CircuitPython 7.0.0 and later, scans a set of keys or buttons in the background, while your program is doing other things, and gives you key-pressed and key-released events. The module provides three different kinds of scanners, which cover common ways of connecting keys to pins.
im ladyada, founder & lead engineer at adafruit. i do hardware designa nd software and firmware
What i like about Dan's new module is that together with the adafruit_hid module it is really very short to code your entire keyboard.
@kattni -- we have a similar lab setup. Except yours is way cleaner.
Post with 15 votes and 1892 views. Tagged with Science and Tech; Shared by tannewt. CKD63 - Adafruit Feather powered mechanical keyboard.
I can think of one -- aren't there some chips in keyboards that could be in short supply?
Okay -- so why would someone want to make their own keyboard?
@Mark J Hughes It's clean because I needed to use it recently :) It fills in slowly otherwise.
because you can't buy a good keyboard
we have started doing more keebs because they are not as affected by the siicon shortage (among other things)
Will the ESP32-C3 have a future with CircuitPython? I love that it support both BLE and USB, is much simpler to implement than nRF5 chips (not to mention much cheaper)
morgan, C3's future is with BLE. the usb support is really a serial USB peripheral only
Is it likely that we'll see a full qwerty keyboard that runs circuitpython released by Adafruit in the future?
Any plan to have USB Host in one CircuitPython supported board? I don't know what hardware exactly, but being able to read from a keyboard... and maybe be in between a keyboard and a host with a CircuitPython powered MCU could be interesting.
samd21 supports USB host...
@tannewt oh that's a shame, I didn't realize it didn't support HID
so lots of mechanical keeb things coming into the shop - keycaps and cases and swichs and more
I suppose you could roll it really old school and do something with a bunch of 74xx shift registers or something?
good news is for keebs, just about any chip can be used - as long as it has USB HID support
Any chance for low-profile mechanical switches?
which is most chips these days
we do have shift register support, and have tested it on SNES controllers and other things
morgan, yuuuuup. agree. The S3 should be USB + BLE + WiFi
and the RP2040, which slipped in right before the shortage, is a great option
Any progress in non US QWERTY keyboard mapping in CircuitPython, something friendly for developer to create mapping for their country/language.
A year ago I started down the make your own keypad and was thinking "Adafruit could make this so much better." And now you have. It's pulling more into doing projects and am thrilled you all have jumped into keyboards with Circuit Python.
@deʃhipu Yep. CHOC.
I wanted to make a custom keyboard was so that I could also control the software in my keyboard. So I did two 3d printed keyboards (one my own design) and put Adafruit itsybitsy microcontrollers in them.
derek, yay thanks!
@deʃhipu They're in the shop right now. Reds and blacks anyway.
@Kattni great, thanks
I also did a key matrix for a calculator project which is a keyboard but it doesn't (necessarily) run as a USB HID keyboard
re non-US keyboards: we would like to provide extra libraries for non-US layouts. Adding that support to the adafruit_hid library takes a lot of space, so extra libraires is the solution.
@deʃhipu Red and white, rather.
So much keyboard noise, I guess it is on purpose and very meaningfull for a chat. :-)
@Kattni the light blue are great, they are like red, but even weaker spring
https://www.thingiverse.com/thing:4129809 my keyboard design https://learn.adafruit.com/desk-calculator-with-circuitpython my calculator design
great! I clearly need to catch up on the state of CircuitPython BLE. PCBs getting sent out tonight
we do have BLE HID for nRF52840
I love the idea of circuit python to create your custom keyboards or macros.
My son can now follow up and make his own changes without having to compile or trying to understand more "traditional" programming languages like C just to get started.
dan, moost keebs do not use shift reg - its expensive and clunky. better to use keymatrix scanning & diodes. v cheap
we also have HID support in circuitpy for nRF52840 if you want wireless keebs
@jorch yah! that is the idea, young folks making their own keyboard, calculator, and even digital camera, and maybe even their own phone
The HID library is frozen into certain builds for smaller boards, so we can't add non-US layouts to the current library, but we want to refactor it to allow for separate layout libraries.
Gotcha. I was thinking more "desert island build", where you didn't have anything else.
oh I am creating a repository of layouts taht can be isntalled with circup, because it's made into a bundle
@Dan Maloney you would still need a USB microcontroller
I was originally designing for the nRF52840 but I'm just so much more comfortable with ESP32s and it seems like the hardware is *just* getting there... but not quite I guess
we have BLE peripheral support for ESP32 (not ESP32S2): see our Airlift boards
another neat thing weve done is fully dynamic and confugurable usb descriptors
so we can do NKRO
or turn on/off midi and mass storage and cdc, all dynamically
https://learn.adafruit.com/customizing-usb-devices-in-circuitpython/n-key-rollover-nkro-hid-device <-- our proof-of-concept NKRO for CircuitPython. It may be a naive design, we'll refine it
question that came in "does/can the library allow for an easy way to connect multiple controllers? I really like my IRIS keyboard and would love to make some more custom split keyboards."
or make custom HID devices like microsoft dial, or maybe a custom joystick
for inter-chip communications, I2C or UART is not too bad
random thought. hid gateway/bridge to which the keypresses/events can be sent via uart (or other ways).
the same interface for usb and bluetooth chips.
KMK uses TRS - you could use async uart, with a series 1K resistor. but really, better to just go with a TRRS
so the interface itself can be swapped on a whim. or even used as a kvm.
I've heard from KMK that TRS (3 wire) connections between split keebs are common. TRRS (4 wire) is better, you could run standard UART or I2S on it..
i2S is sound :)
yeah i2c :)
How flexible is that new USB-HID descriptor feature? Can we "pretend" at USB level to be a device we want to emulate, maybe a Watcom tablet or a joystick or some odd USB device from old gaming console (like the Buzzz).
@David Glaude YES
@David Glaude that's the idea, generally speaking
old gaming consoles are probably not usb
you can compile a custom VID/PID
Limor says it's uncommon for devices to require VID/PID to match, they just look for a matching descriptor