I think 100% configurable is too much to ask for. Or possibly even to shoot for. Already I think the handwire matrix allows the use of more pins than can really be implemented on a hand-wired board. Maybe Matt3o could use all of the end and internal pins on the Teensy, but I don't think I could. Nevertheless, the Phantom was, IMHO, a very good choice for a template, because that is probably the most common customizable keyboard out there. So I think a slightly modified Phantom binary would be a very good next step.
For purposes of common language, I am going to call the current handwire template "HANDWIRE-TKL", because that is really what it is. And frankly as such it pushes the limit of the Teensy with the 6x17 matrix plus two LEDs. So HANDWIRE-TKL = (6x17)+2 = 25 of 25 total pins used.
I think most of the actual hand-wired boards I've seen, and certainly all that I've made, were 75% or smaller. And therefore I propose a simple modification of the Phantom binary to create a "HANDWIRE-75" template. And using a TG3 as a model, I think a 6x15 grid is the maximum physically available, and that form factor can be supported by a 6x14 matrix without much effort. However, the 6x14 for 6x15 cheat is hard to generically put in the UI, and using a 6x15 matrix uses 21 pins, leaving FOUR for LEDs. And that should be enough.
So, I propose you create a HANDWIRE-75 (6x15)+4 template with 6 column pins, 14 row pins, and 2 LED pins using Teensy pins 0-21. (For those of you who haven't done this, Teensy pins 0-21 are the ones on the side edges, and are the pins provided on a "Teensy with pins" from PJRC.) I would use pins 22 and 23 for two more optional LED pins, and leave nasty interior pin 24 (E6) for the 15th row. Here is the matrix that results from making those modifications to the Phantom binary:
[75% MATRIX]
ROW0=B5
ROW1=B4
ROW2=B3
ROW3=B2
ROW4=B1
ROW5=B0
COL0=D1 # changed
COL1=C7
COL2=C6
COL3=D2 # changed
COL4=D0
COL5=D3 # changed
COL6=F0
COL7=F1
COL8=F4
COL9=F5
COL10=F6
COL11=F7
COL12=D7
COL13=D6
COL14=E6 #interior
LED0=B6 #PWM
LED1=B7 #PWM
LED2=D4 #end
LED3=D5 #end
This leaves two PWM pins for backlighting OR indicators and adds two non-PWM pins for indicators.
Anyhow, that is what I would suggest as a simpler next step. I think it provides enough LED circuits for backlighting and indicators, enough rows and columns for any sub-TKL design, and minimizes UI changes.
Just my $.02.
Thanks as always,
- Ron | samwisekoi
Auto-typed by my JD45 keyboard using firmware by metalliqaz.The HANDWIRE hardware option is just a Phantom binary that comes with a blank grid that you can mold to any wild board you make. Phantom has two LEDs and that can't be changed.
For true 100% configurable hand-wired support, I would have to make some changes to the firmware code and create a dedicated binary, then add the configuration features to the keymapper. I am willing to do this work, but it will take some time and some planning.
Right now, I'm thinking of a generic 8x18 matrix with like 8 LED outputs that can be assigned to any combination of pins. The main change I'd have to make to support it is that the current firmware has no way of understanding that a row/col/led could be just unassigned. I would also have to make some way for the configuration of the hardware to be captured in the GUI.
There is already a request in to support multiple hardware_configuration.ini setups for different keyboards. (right now you just have to have multiple installations) Man, I think I need to hire a contractor! Are there any Python coders out there?