So If I understood it correctly.
If I set my NUM7 key (upper left corner) where V5 OPT/ADMIN key is.
And set it to Zynswith5 in Keyboard Bindings UI settings.
It would turn off the Zynthian if I hold it presses?:
OPT/ADMIN => Long-push to power off.
Do I need to change anything else anywhere else?
Zynswitch 1-4 are encoders and 5-24 is 4x5 keypad?
Beautiful integration indeed, congratulations! But I see some symbols on your keycaps - they only show clean black keycaps on Ali pictures, no indication of customization possibilities. Have you bought them separately?
I see one can also build a custom keyboard from separate keys, keycaps and frames. Some are even transparent and include RGB LEDs. However, no documentation on what kind of LEDs, pinouts, nothing (as usually). Maybe there are some standards in this âworld of custom keyboardsâ?
I donât understand this. You have a button in the top left of your keyboard with the legend âHomeâ. You have configured this to NUM7.
No - switches are zero indexed so this would be switch 4.
It offers the power off confirmation. (BTW I applied a fix for long press so update and it should give the long press behaviour without releasing the button.)
Yes I bought a custom keycaps for mechanical keyboards for like 10 bucks. Semi-transaprent with black top so I would minimize the light-leaks, but again once the LED is set you cannot change it so it is just for show. You get use to the layout pretty fast and LED are not that important.
The keycap shows HOME because it is pretty much what it is, I just picked the custom key caps that would best describe what the V5 switches do, since all the keycaps are for the normal keyboard, sometimes is is not a perfect match. Picture attached shows current configuration of the keyboard.
I am still interested in the possibility of the purely touchscreen solution. I bought the Waveshare 7" QLED 1024x600 and I really like it. The standard Zynthian V5 uses a 5" 800x480 (according to the pictures) and it seems to be quite enough. If I shrink the zynthian screen to the same size, I should in theory get space for exactly 20 touch buttons sized 100x100 pixels on my 7" screen: 8 below and 2 columns by 6 on the right side of the main contents.
I had a quick look at the GUI code and it seems that all the screens (pages) get their sizing from the global configâs attributes display_width and display_height. So I would either need to change all of them to use some attributes with reduced dimensions or let the global config provide them some âfakeâ (sub)screen dimensions via these attributes. I am not sure what would the authors consider a better solution (easier or cleaner?) - if anything at all. (Of course I could keep any modifications just for myself.) Anyway, to make it a public upstream feature, one would need to make it configurable and flexible enough to adapt for any other screen size/ratios. And it would ideally also need to use some offset attributes to allow for different layouts (moving the current screen contents to another corner of the display than just the upper left one).
I also noticed there is a multitouch thread which crashes when I enforce a smaller screen size (using the env settings) and then try to touch the remaining (unused) screen space - because it cannot get any widget to receive the touch. Makes sense.
Nevertheless, I have to appreciate how well does the current GUI scale to just about any (meaningful) resolution. Congratulations!
There is already a mechanism to show border controls. There are functions to show / hide the topbar, bottom buttons and side controls. The views (mostly) have an on_size function that draws it within the constraints of the global width & height settings you mention.
The idea of providing more customised on-scree buttons sounds useful. The current on-screen buttonsâ purpose is to provide the extra functionality that is not already provided by touch, so that you can use the Zynthian as a purely touch device. Have you tried enabling onscreen buttons in webconf? In theory, Zynthian is already useable as a purely touchscreen device. One of the activities we should do whilst updating the documentation is to validate all functionality via all control methods:
Hi Guys,
so I tried to bind my Home(7n) button to Zynswitch with parameter 4, hoping that would act as the V5 OPT/ADMIN. No luck. Is there something else I need to set, line in Wiring or so? Mind you I am using custom hardware with encoders directly to GPIO header.
Thanks for the hint, I will have a look at that! (Actually, I also thought I should check for what kind of mechanism is there behind the âonscreen buttonsâ)
Yes, the onscreen buttons are turned on (maybe even by default now?), but lately I have seldom really seen any. I think just on the instrument control screen (didnât check how you call it) ⌠? So, they are not really global buttons.
But I have noticed that it looks like I am able to control everything just from a touchscreen when I connected it to the Rpi - and nothing else. And that is where I owe you another âcongratulationâ! I did not even check the latest documentation and still I seem to be able to find out myself (after a few trials and errors) how to control basic things - both by using the encoders and using just the touchscreen! Even the relatively most âcomplexâ innovation, the multiple instrument/effect pages/banks - since I noticed someone here mentioning they are there, I seem to be able to switch them in both ways. Very practical indeed. Oram is really a great improvement!
The onscreen buttons are not global buttons. They are context sensitive. We have engineered most of their use out from Zynthian so they are almost not required but there are still a few places where we need help in the touchscreen-only workflow, i.e. we donât have touch gestures that will perform all the actions required.
The most useful and cryptic/hidden touch gesture is touching the topbar at various places that provide access to menu / back / transport control, depending on where you touch it and in what context. We are considering how best to document all UI interactionâŚ
I donât know your whole hardware and software configuration so let me try to explain the stepsâŚ
There are hardware buttons and encoders that can control the Zynthian. Some of this is hardcoded, e.g. switches 0-3 represent V1-4 encoder push switch and encoder 0-3 represent V1-5 rotary encoders. There are then additional buttons that can be configured. On V4.1 there are S1-4 that are represented by switches 4-7. On V5 there is the 4x5 grid of buttons that are represented by switches 4-23. (Note that in webconf, hardware configuration, these are called switches 1-20 which is a bit confusing.) The 4 encoder switches on the V5 are represented by switches 24-27 (21-24 in webconf). The configuration for what each of these buttons does under various conditions is made in webconf HARDWARE->Wiring (Advanced view enabled). Each button can be configured to perform various actions based on the switch action and the its sub actions (which are contextual based on the main action). You should check how these switches are configured and identify which switch you want to emulate with your USB keypad, e.g. the default V5 configuration has switch 4 (switch 1 in webconf) acting as the Menu button with this behaviour:
Short press - Menu
Bold press - Screen admin
Long press - Power off
With this information you can then go to the key binding admin view (INTERFACE->UI Key Binding). In here you configure which USB/VNC (QWERTY) keys trigger what actions. To get NumPad 7 to act like the Menu button we would bind Numpad7 to ZYNSWITCH 4. (Remember to save any changes made on these webconf pages. The binding should take immediate effect after saving.)
I wrote (refactored?) the key binding webconf page and it works really well with fast response. The other binding pages (wiring, MIDI, etc.) would benefit from a similar refactor and I would like us to combine these to be more integrated, e.g. tabbed panel, but for now you have to go to three different places to do the binding of computer keyboard, hardware siwtches and MIDI.
I hope that this logical explaination of the configuration will help you get further. In summary I am suggesting:
Bind hardware switch to Zynthian action
Bind USB/VNC key to hardware switch
So that a USB/VNC key emulates a physical hardware switch. What I havenât considered is whether this workflow works without any hardware switches configured. (I have a unit with this config so can test⌠when the replacement for its faulty touchscreen arives!)
I tried that, but was not unable to make it work.
Only Zynswitch 0-3 works when binded to keyboard. It behaves the same as Encoder switches (expected). Setting Zynswitch higher than 3 does nothing. I am running TEST image (updated today).
Custom wiring with Encoders directly to the GPIO.
Sorry you lost me there. Instructions are not quite clear to me.
I can confirm that, with wiring set to V5 I can bind the keyboard key to ZYNSWITCH and it does work. However encoders no longer work.
Check the HARDWARE- >Wiring settings. There is a comma separated list of GPI pins used for switches. This may need to have more than 4 elements, e.g. 1,2,3,4,-1,-1,-1,-1.