keymapperorg / KeyMapper

**DEVELOPMENT STOPPED**.πŸ“± An Android app that change what the buttons do on your devices!
http://docs.keymapper.club
GNU General Public License v3.0
946 stars 147 forks source link

Feature: interact with screen element #1182

Open pixel-shock opened 8 months ago

pixel-shock commented 8 months ago

Hi @sds100,

this is the follow up for PR https://github.com/keymapperorg/KeyMapper/pull/1168 ...

I created this branch before my vacation so solve all merge conflicts and to test the features in my vacation on my tablet which I am using on my motocycle with the silverfox controller. Everything went well and I was able to control my tablet with the controller on my bike flawlessly.

I just merged the latest develop branch from you into this branch to keep in in sync

So if you have some time please do a review of this one - thank you very much πŸ‘

TODO

Closes #257

sds100 commented 8 months ago

Thanks! I'm taking a look now.

How come we need to use a database to record UI elements? Can it not just be stored in memory temporarily?

pixel-shock commented 8 months ago

Hi,

I would say "yes we need a db" because it is not an easy or fast process to record the elements for the user. So it is a lot easier if the user can open the apps which should be controlled and navigate through them an then go to wkeymapper and do all the settings. Beside that it's really annoying to do the record stuff every time again I would say. So the DB seems the best solution for me at this point. πŸ˜„

sds100 commented 8 months ago

Some suggestions for improving the UI πŸ˜„

  1. Only enable the record button if the accessibility service is turned on. You can Show an error message the service is disabled. I was wondering why the button wasn't doing anything.
  2. Make the items go to the top of the screen. Make sure the recyclerview fills the screen and is not wrap content. and the gravity of the items is to the top. Screenshot_20231022-113723
sds100 commented 8 months ago

I'm going to try removing the need for a database. I think just storing it in a variable will simplify the code a lot

pixel-shock commented 8 months ago

I'm going to try removing the need for a database. I think just storing it in a variable will simplify the code a lot

Alright - I thought it is a good idea πŸ˜‰ but if you want to store it temp. it's totally fine for me ...

sds100 commented 8 months ago

I've never seen the "dynamic strings" feature before. It seems quite clunky/smelly to use that feature. There is a warning as well that its bad for performance optimization as well. Can you just use a switch/when statement instead?

pixel-shock commented 8 months ago

I've never seen the "dynamic strings" feature before. It seems quite clunky/smelly to use that feature. There is a warning as well that its bad for performance optimization as well. Can you just use a switch/when statement instead?

I removed it πŸ‘

sds100 commented 8 months ago

Can you also add the description as a text field in the configuration screen instead of a dialog. Look at fragment_config_intent for an example

pixel-shock commented 8 months ago

Can you also add the description as a text field in the configuration screen instead of a dialog. Look at fragment_config_intent for an example

Done βœ…

pixel-shock commented 5 months ago

@TechMan205 I agree that @sds100 maybe not know how much impact this app has ... I would also be willing to pay for this app, but the problem here is that Seth isn't doing this as his main job and if you are charging for an app or a service than you have to be always on point and you have to deliver, you know? And that's maybe the main reason for him to not do so.

sds100 commented 5 months ago

Yeah, that's the main reason I'm not working on this anymore. I've been considering how to make this a worthwhile endeavour in terms of cash but I don't think it's possible. It's not the kind of app that gets a lot of screen time. Also, the fact it is free and FOSS is an attractive feature for a lot of people. And you're right, once you start charging people for something you've got to deliver and keep delivering.

pixel-shock commented 5 months ago

Agree! So ... if I would have a better understanding for android development, then I would love to be part of this ... but as you can see based on my PRs I am not as fit in Android Dev and Kotlin as I should be to do more maintenance ... even if I am kind of relient to this app because I am using it to control my tablet via the SilverFox handlebar controller on my motocycle ... that was also the reason why I tried to implement those features (I mean 2 got merged πŸ₯³ πŸ₯³ πŸ₯³) ...

But maybe there are some proper Android Devs who want to be part of this and to like create a team behind this app? Would it be an option to do like a hint on the website and here on github that you're "searching" for maintainers?

pixel-shock commented 5 months ago

PS: For any non-devs

It is really exhausting to do a main job and then to do a "after work work" to maintain such big projects ... I did it myself for a couple of years but here is the thing: you're running into a burnout as long as you have other things to do like family or non-tech hobbies ... I had it and I had to stop immediately any private projects to get healthy again ...

sds100 commented 5 months ago

I think it would still be a lot of work to find someone willing to takeover. Most people have the same problem I am having right now. I could only work on this so much because I was still in high school and when COVID hit i had nothing else to do since I was on a gap year before uni πŸ˜… I would love there to be some sustainable way to monetize this but I'm not sure it is competitive with working on the side at uni as a software developer. Also, I really want the core functionality to still be open source so maybe I can keep some more advanced features closed source and behind a paywall. Another issue is that the majority of my users are actually young people using it for Minecraft and they love it because it is free. I wonder if adding ads would be too disruptive.

I've gone in circles multiple times about this and always come to the conclusion that there is no way it could be competitive with working. Many people thought I was crazy at the time to not monetize this initially but I didn't want to be overburdened with being a business/entrepreneur. Also, it might never have been as successful as it is for my public image if it wasn't free and open source. I've landed multiple jobs and requests from people because of this project being all over the internet (which was the hope I had).

Edit: if this was a game or something with more screen time then one could make a lot of money with these user numbers.

pixel-shock commented 5 months ago

Dude! Calm down and please use some formatting. It is nearly unreadable.

If you have bugs then open a proper bug report with as much info as you can on how to reproduce.

pixel-shock commented 5 months ago

Sorry do say that, but people like you and comments like those from you are the reason why devs are running into burnouts and don't continue developing apps ...

I don't know what you're trying here but if this is driving you nuts then try to learn kotlin and android dev and develop by your own ... I am also sad about the "dev end" of this app but what you're doing here isn't helping anyone ...

@sds100 I am closing this PR because of @TechMan205 running crazy here ... if you have time I would be happy about merging this PR so feel free to reopen it

sds100 commented 1 month ago

@pixel-shock Do you want to continue working on this?

pixel-shock commented 1 month ago

@sds100 as far as I remember I was kind of done but you had some changes mind which you wanted to do. I think you did not like my db integration. I am currently renovating my house. So I can work on this after that (4-6 weeks hopefully) πŸ€”πŸ˜‰

sds100 commented 1 month ago

I've pushed my changes, in the PR description I put a TODO of what still needs fixing. Whenever you're free you can pick them up.

pixel-shock commented 1 month ago

Awesome man πŸ™πŸ™Œ I'll let you know when I am done with it.

And by the way: your app is in use every day while riding my bike and conrolling my apps with my silverfox controller. Still the best app available for android. Much kudos for you 🍻🍻🍻

GfEW commented 1 month ago

I think it would still be a lot of work to find someone willing to takeover. [...] I would love there to be some sustainable way to monetize this but [...] the majority of my users are actually young people using it for Minecraft and they love it because it is free. I wonder if adding ads would be too disruptive. [...] I've gone in circles multiple times about this and always come to the conclusion that there is no way it could be competitive with working. [...] Edit: if this was a game or something with more screen time then one could make a lot of money with these user numbers.

Just stumbled across this. If your main question is to "charge or not to charge", I'm not sure that's all there is. Have you considered communicating this dysbalance openly to every keymapper user, and actively inviting donations? Whilst most likely that's not a way to making "a lot of money", it might help to balance the (limited) time you're continuing to dedicate to this precious app, and to feel better about doing so. I'm not suggesting donations could replace a proper job, but there are open source projects that, for the time share they require, more or less get by on donations.

pixel-shock commented 1 month ago

I think it's more about the fact that with money comes a certain obligation. And when there is little time left, as is currently the case with Seth, then it is difficult to reconcile. But I understand what you mean, I would also donate €25 or more straight away.

sds100 commented 1 month ago

Well, asking for donations is also easier said than done. I think it breaks google play's terms of service unless they also get a cut, and asking for donations might not be allowed anyway? I think the best route at this point of maturity would be to start making closed-source and paid "pro" features that can be unlocked with In-app-purchases. That way I only have an obligation to maintain and support users that use those specific features.

Also, the vast majority of my user base seems to be using it in minecraft and are very vocal for better or worse, so would never donate or pay.