Split Keyboard w/ Teensy 4.1 - Can it be done?

entity-unknown

New member
Howdy! I mainly just want to know if this is possible w/ the Teensy 4.1 cuz the documentation abroad is sparse and somewhat conflicting. Maybe I'm just confused since this will be my first time building a keyboard too hence why I'd just like some basic guidance :)

Goals:
A key notable: I can type 80-120 WPM so I need a VERY reliable keyboard.
Split keyboard w/ 123 keys. The key layout is a 6x7 I gather w/ the 6 thumb buttons each side and the ErgoDox expanded index finger keys. Here's the dactyl manuform visualizer link with all my parameters filled in so you can see how it will be setup. I'm also adding a 10 key pad to the right hand of the model as well which is where I come up with 123 keys. 50 keys for each half, then 23 extra keys for the "10 key" pad i.e. 123 total. I'm certain none of this will be as easy as 1-2-3 tho :D

I'll be modifying the 3D model to add an RC aircraft flight stick as an X-Y mouse input (left half) and 3 tactile buttons for the mouse buttons (right half). The flight stick is a hall effect gimbal with the standard 3 wire for each axis so 6 wires total to control it. There will also be an LED array for each key and an Arduino passive piezo controller board. The piezo will function similar to a Kinesis Advantage2 if you're familiar with that keyboard (typing on that now and why I'm goin this route ;) ), basically connect, a half is separated, and certain key strokes will have a unique audible added. I need it to be fully recognized without question/failure on Linux (primary OS), Windows, and really anything that accepts a keyboard and mouse as input. It will be connected via USB to the "computer" which really is to the KVM then to the two computers the KVM connects to. I use a KVM that support EDID simulation but more importantly there I need it to work flawlessly with the KVM as well.

I think I might get away with one controller and maybe an expansion board but I see most builds use two controllers, one for each half. I'm totally cool with two controllers so long as it makes sense and more importantly is doable.

I will be using the Amoeba King PCBs for all the keys and the recommended diodes/LEDs/hot swaps for it.

Only a few keys will ever be re-assigned IF I re-assign them otherwise for the most part what I build/code will remain static for life. Some of those keys will be combo keys such as a single key press for "CTRL+SHIFT+Left Arrow" (love that short cut! and CTRL+Backspace! among many others).

I will have keyboard button for to disable the LEDs for the keys in case I need to go incognito mode. I also need a reset switch to reset the whole assembly, I suppose reboot it? in case it loses it's mind (Back to flawless function, ideally this should never be an issue but I gather issues from the coder (me) can occur).

So the main question is CAN the Teensy 4.1 do this? If so, should I get 1 or 2 of them? Do I need a GPIO breakout board in either scenario? If 2 Teensy 4.1s should be used, how do you make them communicate? I plan to use a GX12 connector with 6 pins but maybe a 4 pin instead as well if this helps.

Any special guidance, tips, tricks will be THOROUGHLY appreciated too :) I do have a few forum posts on here pulled up to give me some of those guidelines too i.e. yes I did use the search feature before posting. Even used Google and really just not finding much info here :\

Thank You in Advance!
 
Split keyboard w/ 123 keys. The key layout is a 6x7 I gather w/ the 6 thumb buttons each side and the ErgoDox expanded index finger keys. [...] I'll be modifying the 3D model to add an RC aircraft flight stick as an X-Y mouse input (left half) and 3 tactile buttons for the mouse buttons (right half). The flight stick is a hall effect gimbal with the standard 3 wire for each axis so 6 wires total to control it. There will also be an LED array for each key and an Arduino passive piezo controller board.
I would use a pair of Teensy 4.0's, with either WS2812 or similar digitally-controlled RGB LEDs to limit the number of I/Os needed, or a dedicated LED matrix controller IC; with a nice shielded 6-wire (RX+GND twisted, TX+GND twisted, 5V, GND) cable between the two Teensies using high baud rate UART for communications (minimizing any latencies, only one of the Teensies connected to the host/KVM).

My very first project was an arcade plank (a literal birch plank with an arcade digital joystick and a few buttons embedded in it) for use with Flash/web games, using a Teensy 2.0++ as a keyboard. I used a 4-bit absolute tactile encoder to select between up to 16 different keyboard layouts –– for example, W/A/S/D for direction, SPACE as main button, ENTER as secondary button, and so on. Worked like a charm,

Later stuff includes a Teensy LC button matrix for 32 buttons and 9 potentiometers, for similar use in arcade cabinets. I've found infinite rollover a must, so I always use diodes (dual common cathode or common anode Schottky diodes in SOT-23) in the key matrix. I also always use my own software debouncing using the dead-time approach (first change causes the effect, press or release, but for a fixed debounce time afterwards, the changes are ignored) with a relatively high-frequency fixed-frequency matrix scanning approach.

I guess the answer is no or at least it's not a good/reliable solution. I suppose a Pi board is the way to go then! Thank You!
I'm sure you are an excellent fit into the Pi community; the snideness and passive aggression certainly fits.
 
Back
Top