WhiteMagic / JoystickGremlin

A tool for configuring and managing joystick devices.
http://whitemagic.github.io/JoystickGremlin/
GNU General Public License v3.0
323 stars 46 forks source link

A few Bugs + Suggestions #330

Open BenBlake79 opened 4 years ago

BenBlake79 commented 4 years ago

Bugs Editor: -When changing Modes in Editor the Activation jumps back to the 1st button when then pressing the desired button it doesn't react, you have to press another button first -Editor doen't react to Hat Input when not assigned -Axis-Merge from parent Mode is not passed through - is this indended?

Suggestions: -Editor should scroll to activated function to not have to scroll manually -Option to select Modes to be displayed side-by-side in editor -One klick mode change (maybe small buttons?) -Feature to take over the config of another mode for a button for further editing -Selection of Hat directions in the Action Window (scroll down menu or check boxes?) -global Shift-Key declaration and Shift-Key-Check-Boxes in Action Window -Auto Split Axes for Virtual Buttons (Input of steps, evenly segmented), Option (Check Boxes?) to link range boundary (currently change them in the xml-file) to move the upper boundary of one range together with the lower boundary of another

Still like JG, just want to help making it better. ;) I put off learning Python for a while (today I just pragram EXCEL VBA for work (but on pretty high level ;) )) - maybe this is the occasion to start finally? Do you have a tip for good Tutorials?

WhiteMagic commented 4 years ago

Mode change: Yeah, it's a random quirk of the UI thing and the pain of tracking state. Hat input: Works fine on my end there must be some other aspects to cause this. Merge axis: Yes and no, due to the nature of the merge axis they live outside of the normal action processing, just as the user plugins, and thus do not propagate to child modes.

Autoscroll: This is a ton of UI code messing for little gain compared to other things I could implement. The new UI code may do this on it's own, but there are tons of other things I will implement before bothering with something like this. Side by side mode: That's not going to happen, this effectively requires writing an entirely new UI. With the R13 code based this is a terrible idea. With the code base for R14 this might be doable but is not something I will endevaour to do. While I can see why having two modes side by side could be nice, to me this is something that's very far down on the "nice gimmick" list. Single click mode change: That would require changing how the modes are displayed, taking up space for something that's not used that often and lose the tree visualization. Currently I don't have an idea of how to make the mode selection "quicker" without it interfering with the rest of the UI or lacking important visuals. Duplicat actions: This is a large part of why R14 is taking ages to do as support for this means a complete change of the underlying profile structure which leads to redoing the entire UI because a large part would change anyhow, see http://whitemagic.github.io/JoystickGremlin/r14/ for the initial plan which still mostly holds. Also #102 and #175 are the same kind of feature. Hat direction selection: I'm not clear what this refers to. Global modifier keys: Again it's not clear to me what this refers to. Axis banding: This effectively is a new container type that just applies to axis, not necessarily hard to implement but also a rather specific thing though it comes up every now and then. Linked boundaries: Not really something that's possible as these things know nothing of each other be that in the conditions or the virtual button. And this independence is not something that I foresee changing.

As for learning Python, I don't have any tutorial I could recommend as it's been ages that I've learnt Python. Though the official webpage has some pointers https://wiki.python.org/moin/BeginnersGuide and the learning python reddit appears to have a good collection of links etc. https://www.reddit.com/r/learnpython/wiki/index which should be another good starting point. The only thing I can offer is that for me learning a language was always easiest when I had a project I wanted to accomplish. So pick something you want to make and implement it using whatever language you want to learn. Obviously you'll need some of the basics of the language but at some point doing simple exercises or reading the API won't teach you as much as trying something and running into problems and having to figure out how to solve them.

BenBlake79 commented 4 years ago

Hat Input: I will have a look again...

Please du not feel put under pressure ;) The one or the other idea is surely just nice to have or even less ;) As Autoscroll, Side by Side mode

Single click mode change: What I have in mind are buttons in the icon bar, Hotkeys would work as well. I thought about about AutoHotkey as workaround but I do not know if that's possible as there is no tab-switching in JG Duplicat actions: So I think I will do that by simply copying the desired sections in the xml file... ;) Hat direction selection: As it is now you have to switch over to the "virtual buttons" tab, set it there and then switch back. And in the "Action" tab you do not see which action belongs to which direction - to keep an overview you need to set up your convention (1st is up, 2nd is right and so on) and scroll up and down to find out where you are (Tempo/Double Tap, each with one ore two Shift buttons)... If the checkboxes where in the head of the "Action" Tab instead of a tab of there own or in a column beside the Action Window you would always know... Global modifier keys: This is the same in green - if you choose one or more buttons as a SHIFT button you alway have to make a "When SHIFT button ist pressed/released" Condition and you do not know which is which when you are in the "Action" tab. If there was an "Use as SHIFT button" action or another global declaration (which still lets you assign this button vor Tempo or Double Tap - I love the potential ;) ) which you can refer to with Checkboxes in the "Action" tab it was much easier to handle... Axis Banding: This is already possible but you have to set up each band seperately, which I do by editing the xml file currently. The same goes for linking boundaries. And that's OK so far - I'm getting used to it ;). Was just an idea...

I am the "learning by doing" type of guy as well. When I started a new job in spring last year I started to overhaul (had begun with small fixes until I thought that was not enough, and there are many forks as well) the complete measurement evaluation files which where setup up to 15 years ago and then edited and forked yet again over the years - a pretty mess. ;) And so I started working with VBA in Excel. I learned BASIC as a child and turbo pascal in the 11th grade at school (programmed a hangman game with Vector Graphics as an examination) and for 20 years I didn't have anything to do with programming. I have a good understanding for the underlying logic and how computers work and so I'd say I know pretty well what is possible and how to make it. And I've got a good feeling for potential issues and error. My problem is that it is difficult for me to learn a freign language - programming or real life, I am glad my english is good enough to communicate on a fairly simple level but that's it. And in programming I huddle everything I know and cannot recall the syntax I need in a particular moment and so it is pretty burdonsome... And I never really learned object oriented programming - though I understand the principle i never got used to the grammar and I do not really know how to use the possibilities effectively... I think the plugins for JG could be the project to start with Python, as I think these could be powerful toys. And a year ago I found a YouTube Channel of an mathematics professor (to refresh my mathematical knowledge) who teaches mathematics for computer science students and so refers to Python in particular very often. And his new book is directly linked to this language... I think I will pickup your hints as well...