DIY: upgrading to V5 - or the question of new buttons

I have been thinking about the possibilities to upgrade my DIY zynthian hardware for the new way of controlling the device in V5. I checked the schematics and it looks like the main change is the addition of the 16 new buttons - and adding the RGB LEDs to all the 20 buttons, of course.

Unfortunately, the new keypad is virtually impossible to replicate in a DIY-way. And since its PCB is part of the whole V5 controller board, @jofemodo cannot sell it separately even if he would be willing to (possibly just the membrane buttons, but that is just half of the “wonder”). So, you can just add more of some more boring buttons or microswitches as Zynthian Mini does, and it may be functionally fully equivalent (if not superior, since you can choose your own layout) to the wonderful design of the official V5, but aesthetically you would lack (at the very least) the controllable RGB backlight of the buttons and their nice labels. The closest ready-made product I have found is the Adafruit NeoTrellis which could replace at least the newly added 16 buttons (4x4 matrix), including the individually controllable WS2812b LED backlight, but it has its own controller so that one would either need to modify the hardware or (probably much easier) the software. But from the visual point of view it is still not a real equivalent - the silicon buttons are rather high and completely white (and they lack the wonderful labels for zynthian, of course :slight_smile:)

So, I have also thought about another possible solution: many people use larger touchscreens in their DIY zynthians (e.g. 7" with 1024x600 resolution or even larger) and the spare screen “estate” could also be used for software based “touch keypad”. It could also replicate the behaviour of the RGB LEDs - just without the more comfortable feel of the physical buttons. I suppose this should be easily implementable in software.

More ideas or opinions?

1 Like

I’ve no problem with selling the silicone button pads separately. I haven’t done because nobody asked for it until now :wink:

I will offer the silicone pad in the shop, so those brave makers can use it in their designs.



Yeah, “brave makers”. Creating custom PCB is still a next level to just buying stock modules with encoders and MCP from Aliexpress and wiring them together. Even with services like JLPCB. … The unavoidable price for beatiful design.

And code written by Chatgpt!

Taking the easy route? I get StableDiffusion to generate a picture of the code and OCR it.

Well obviously that was my first thought. But it makes the choice of font a subject open to debate by social low lives who think marketing is simply a matter of picking their favourite colour…

Imagine if user surveys reported the site tasted of Comic Sans…?

1 Like

BTW, did you notice that our long time request to support additional buttons wired directly to the RPi GPIOs should be resolved now, @wyleu?

Except that NOW I want to have 16 additional buttons with WS2812b backlight instead of the one static that I wired there two years ago… :smiley:

1 Like

I managed to do it with some Aliexpress parts, and I am quite pleased with results.
Although keyboard does not support short/bald/long presses i worked around it by setting one key to the Alt key and setting the UI keyboard bindings to refflect the V5 kit. I could have sacrificed one key to other modifier and support more options, but it is plenty for what I need. Still I have F1-F4 keys that I dont use at all.


Why not?

Cool, I guess it’s done with one of this Ali keyboard.
Do you know “Success case” thread ?
It would be great if you share there how it’s done “under the hood”.

The layout is original and it looks overall pretty nice, congrats.

I really love this layout! It’s super fresh! Congratulations, @culfytt !

I hope you give us all the details in the success cases thread.

The best

1 Like

Because it is a keyboard basically (14.07€ 34% de DESCUENTO|Miniteclado mecánico de 16/20/24 teclas, dispositivo Macro personalizado, programación de atajo, OSU, para juegos, Windows, MacOS| | - AliExpress) so if you hold the keys it just sends repeated presses, not very useful (except for the the arrows). I am using keyboard bindings to get around the UI.

But you can emulate bold and long pushes with the keyboard bindings. We added a mechanism to do it.
Let me refresh my mind …


1 Like

Thanks, I tried to find some suitable case for it, did not find any. I considered to designed and 3d print it, but my 3d designer skills suck. Finally I made the case with HDF, sprayed it black with lack on top of it, and 3d printed top cover that hide all of the Imperfections. Sprayed it red - I went for that timeless NordStage design ( I tried at least). I was going to use RPI5 with NVME base, but managed to kill it at the finish line, I was soldering the pins for the power button and some soldering flux got away (that shit is conductive), is started alright, but few moments later some little IC went up the flames (I will post some pictures). That IC controls the power button I think, it has (well had) 8 legs, and those are gone together with the copper traces, well beyond my repair capabilites. Just as well, RPI5 was not particulary stable, all sorts of problems with it. I might buy a new one after a while. But for now 4 is working just alright with the Test image.

1 Like

Let me know if you remember, I could not worked it out. There is no help for the parameter text box, except the Zynpots number and direction.

Give us some detail about how the keyboard is connected. Standard computer keyboards and numeric keypads connected via USB or via VNC integrate directly with short, bold and long press mapping as well as push and release. The latter (push & release) are the most intuitive and preferred mechanism for binding keyboards as they perform (almost) exactly like hardware buttons, i.e. the press is detected and the release is detected, then the short, long and bold actions are triggered appropriately.

Keybinding is mapped in webconf INTERFACE->UI Key Binding. To get the preferred press/release behaviour, you bind the key to the ZYNSWITCH action with a single, integer parameter defining the switch number that it is emulating. You then use hardware binding for switches, i.e. Zynthian is configured for directly connected hardware switches and the computer keyboard emulates those hardware switches. (It sounds odd but it is very useful - I use it all the time thought VNC.)

There is also the ability to map keyboard shortcuts to various actions directly.

The auto-repeat for (USB/VNC) keyboards should be disabled to avoid holding a key triggering auto-repeat. We implement auto-repeat within the zynthian software for some actions, e.g. using key binding to encoders, where holding the key down will auto-repeat to simulate turning the encoder. Mapping encoders is done with the action ZYNPOT with 2 parameters: zynpot index and value (amount and direction of action), e.g. ZYNPOT 3,-1 to map to zynpot 3 in the anticlockwise direction.

1 Like

Hi riban, it is a programmable keyboard, first you plug it into the PC (or Mac), hell even Raspberry running Raspbian, all you need is a web browser. Then you go to the manufacturer’s website where you can set up the keyboard. There are a few “modes” you can choose from, but I used the default (it behaves like a normal USB keyboard). Then I assigned each button to specific keys. I mostly used numpads + f-keys and arrows + alt-key (which is used as modifier instead of toggle alt-mode like in V5 kit. Because you cannot set Alt mode for the key bindings. Keys can only have one UI action. So if you want to use that key for something else, you have to press it together with the Alt key (no problem).
If I understand you correctly, you set the keys to ZYNSWITCH 1-20 and then use the wiring from the V5 kit? I have not noticed anything like this in the default settings in the UI Key Binding Settings. What am I missing?

Out of the box, Zynthian has some default key binding. This can be viewed and changed in webconf INTERFACE->UI Key Binding. There is default binding for numeric keypad:

For example, pressing the numeric keypad key 1 will act like pressing the physical encoder 1 switch. Releasing that keypad key will act like releasing the encoder switch. So keypad key 1 acts just like physical encoder switch 1. You get the same behaviour as if you had pressed / released the physical encoder on the Zynthian. (There is one slight exception - the long press is not triggering until after release. This is reported as issue 1093.)

You could configure a button to act as the ALT switch to give the toggled behaviour of the keys. You can also assign key modifiers in webconf to allow temporary mapping modification, e.g. Alt+KeyM is mapped to toggle MIDI record by default.


Ok, than how many ZYNSWITCHES are there total?

You could configure a button to act as the ALT switch to give the toggled behaviour of the keys
I did not quite understood this one.

You can also assign key modifiers in webconf to allow temporary mapping modification, e.g. Alt+KeyM is mapped to toggle MIDI record by default.
Yes that is what I am usig to use one key multiple times (well 2 times to be exact - since I have only one modifier - ALT).

V1-3 have 4 switches which are the switches in the encoders.
V4 has 8 switches: 4 x encoders + S1-4.
V5 has 24 switches: 4 x encoders + 4 x 5 keypad.
Custom build has as many switches as you want…

I mean that the ALT button on a V5 is just another switch. You can map a USB/VNC computer key to the same switch and it would act like pressing the ALT button on a V5.

1 Like