esaruoho / org.lackluster.Paketti.xrnx

Quality-of-Life (QoL) Workflow suite of tools for Renoise written with LUA - Continually ingesting and porting features from other tracker software (Impulse Tracker, Scream Tracker, ModPlugTracker, PlayerPro etc)
Other
12 stars 0 forks source link

Multi-slot loading of `KeyBindings.xml` #119

Open tkna91 opened 1 month ago

tkna91 commented 1 month ago

Would it be possible, for example, to define KeyBindings.xml with arbitrary paths for slots 1-8 and then load them with key bindings?

I came up with this because I was wondering if it would be possible to make Renoise more like the Dirtywave M8 Tracker-like operating system through keybindings settings.

Reference link:

It is shocking that this little Game Boy-like machine's cursor keys and four buttons are all it takes to do almost everything a tracker needs to do. image image

It seems to me that this is a prescription for the problem that Renoise has, which is a complicated control system. However, it would be too much work to rework the control scheme and create a new GUI similar to the M8 Tracker for that purpose. So, as a compromise, I thought that if we could freely load arbitrary KeyBindings.xml, we could solve most of the problems with a small amount of work. This is just one idea, but I feel the following would be a good one.

The default KeyBindings.xml seems to be overwritten on Renoise exit afterwards once the alternate key bindings file is loaded, but not before.

image

Therefore, it would be useful to have key bindings and GUI buttons that load the default KeyBindings.xml. Some may think that this should also be set in a slot, but I feel it would be more helpful and safer to have a separate function to restore the default settings. If Paketti can detect and process the Renoise exit process, it might be a good idea to load the default Keybindings.xml at that time to prevent overwriting with alternate key bindings. or To avoid unintentional overwriting of the default KeyBindings.xml, I thought it might be a good idea to force a "Save As" backup of the default KeyBindings.xml after using the alternate keybindings slot, and to have a separate "Do not backup default Keybindings. xml" option.

This could be used smoothly for the purpose of providing the convenient keybind system you suggested sometime ago. If we could switch between them with alternate key bindings, it would solve a lot of things. This would also solve the problem of not having enough keys to assign.

This allows for modal operations, such as separating modes for pattern editing, mixer editing, and sample editing, similar to vim in an editor.

What do you think?

tkna91 commented 1 month ago

In the meantime, I would like to know if it is possible to create a test version with only minimal core functionality. Would it be possible to add a key binding that imports the following?

esaruoho commented 1 month ago

@tkna91 the issue here is that Windows, Linux and macOS all do this in a different way. here's what Taktik said:

Screenshot 2024-05-27 at 22 46 09
tkna91 commented 1 month ago

I meant the ability to import another Keybindings.xml without restarting Renoise. We can do this manually by default. I thought that if it could be assigned to keybindings, it would make our increasingly complex keybindings system more organized. If it is not in Renoise's API, I will request it from taktik.

EDIT: I Requested. https://forum.renoise.com/t/the-api-wishlist-thread/29285/363

esaruoho commented 1 month ago

@tkna91 i don't unfortunately see a way in the API for importing keybindings. i wish it was there! hence the workaround. when i asked him about how to do it, he said the only way would be to quit Renoise and then make the change and then restart Renoise.. but it would be good for it to be there. and also a way to reset to the original KeyBindings - since that's also of use.