Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

after 2v14 release: Add settings menu item for left-handed wearers #1040

Closed
ruswerner opened this issue Dec 9, 2021 · 14 comments
Closed

after 2v14 release: Add settings menu item for left-handed wearers #1040

ruswerner opened this issue Dec 9, 2021 · 14 comments

Comments

@ruswerner
Copy link

I've searched the wiki, the docs, GitHub and all the settings on the Bangle 2 and can't figure out how to flip the screen so I can wear the watch on my right arm (for left-handed users). The button should be on the left when looking at the watch.

Is this something that was considered? If not, can you please point me in the direction of where I would have to modify the firmware to accomplish this?

Cheers

@gfwilliams
Copy link
Member

There's nothing in there right now, but you can implement this basically by going to the custom boot code app and entering:

(function() {
  g.setRotation(2);
})();

However, quite a few other things (touchscreen, launcher, etc) don't work too well, so I think this would require some actual firmware changes to do nicely - inverting touch coordinates/directions and also fixing g.setClipRect when rotated

@thyttan
Copy link
Collaborator

thyttan commented Apr 10, 2022

Too me this could make sense for us wearing the watch on left wrist as well. As it is now you can accidentally press the button when you angle your left hand back towards the watch. Having the button on the other side of the screen would eliminate that risk.

Edit: The bangle 2 button isn't as pronounced as the bip one. I have yet to press the bangle button on accident.

On a traditional watch it makes sense to have the wheel on right side for right-handed people since it's easier to turn it that way. But with a button there isn't really any benefits to it as i see it, other than familiarity.

Another note: If implemented, would this mess with accelerometer readings?

@gfwilliams
Copy link
Member

Just saw another request for this at http://forum.espruino.com/conversations/375520/#comment16505901 so there's definitely interest.

I just made a change to the main Espruino firmware at espruino/Espruino@f772bd5 so that now the touchscreen obeys g.setRotation(2); - so actually if you stick that in, the watch is pretty much usable left-handed now.

However there's still an issue with scrollable lists - I'll look into that. But once done we can make it an option in settings

Another note: If implemented, would this mess with accelerometer readings?

Right now they are left as-is. I guess it depends what you intended to use the readings for. Step counting/etc would work fine.

@gfwilliams
Copy link
Member

gfwilliams commented May 3, 2022

Ok, text rendering issue is now fine - so if you do as mentioned in this comment: #1040 (comment)

The Bangle should now work pretty well left-handed.

edit: leaving this issue open as we should add an menu option in settings for left-handed mode. However there's no point adding it until the 2v14 release as the firmware won't support it correctly.

@gfwilliams gfwilliams changed the title Flip Screen/Left handed mode/Button on Left after 2v14 release: Add settings menu item for left-handed wearers May 3, 2022
@gfwilliams
Copy link
Member

Just a bump - someone could add this now easily...

@thyttan
Copy link
Collaborator

thyttan commented Oct 12, 2022

Just testing what you suggest in #1040 (comment) on FW 2v15.31.

Touch screen-touches seems to work pretty good in apps, but behaves weirdly on the widget field.

Targeting the widgets is a little hard and touching might fire them twice with one touch.

When trying to press the red back button it will (more often) fire the "Light switch widget" which sits on the other side of the widget field - the other way around does not happen. It is possible to hit the red back button as well though.

When rotation=2 and using "Light switch widget" to change brightness level it works for the most part. But if draging to the very top of the touch screen (higher than the LCD) the brightness will be set to minimum value instead of maximum value - it seems some touch-pixels at the very bottom hasn't followed along in the rotation to become top-pixels, if that makes sense.

Swipe/drag directions seem to not have updated. So e.g. scrolling menus, or navigating Desktop Launcher becomes inverted. However as said above, drag works mostly as expected for draging on "Light switch widget" to change brightness.

But just reiterating my edit from before:

Edit: The bangle 2 button isn't as pronounced as the bip one. I have yet to press the bangle button on accident.

So at least for me this is not important if you have other things to prioritize.

EDIT: I have a branch where left handed setting is introduced under LCD settings. But I don't know where the code for rotating the screen should go - in setting.js, in firmware or somewhere else?

@thyttan
Copy link
Collaborator

thyttan commented Oct 20, 2022

Just tested the suggestion in #1040 (comment) again (Fw 2v15.47)

Regarding #2181 (comment),

Swipe/drag directions seem to not have updated. So e.g. scrolling menus, or navigating Desktop Launcher becomes inverted.

still stands. Other than that everything works much better - as good as without rotation==2 as far as I can tell.

@gfwilliams
Copy link
Member

Ahh, ok - do you think you could try and narrow it down to exactly which events are wrong?

As far as I can see Bangle.on('swipe' looks wrong, but that's it? I'd thought this was handled but the events come straight from the touchscreen so weren't modified.

@thyttan
Copy link
Collaborator

thyttan commented Oct 21, 2022

Sorry, drag events work as expected - only swipe events have not rotated along with the screen on rotation==2.

(I had 'Swipe menus' installed when I tested yesterday so menus acted on swipes instead of drags..)

@gfwilliams
Copy link
Member

Ok, fixed now! I guess we're ok to add the setting.

It might also be worth allowing 90 degree rotations to be used too, since it can be nice if the Bangle is on a charging dock.

In those cases, there still seems to be some issue with clipping when scrolling, but it's still usable for most things

@thyttan
Copy link
Collaborator

thyttan commented Oct 21, 2022

Just,

EDIT: I have a branch where left handed setting is introduced under LCD settings. But I don't know where the code for rotating the screen should go - in setting.js, in firmware or somewhere else?

So I don't know how to do it completely :P I can try to work it out eventually though, but not right now.

@gfwilliams
Copy link
Member

Just dump it in here: https://github.com/espruino/BangleApps/blob/master/apps/boot/bootupdate.js#L94

if (s.leftHanded) boot+=`g.setRotation(2);\n`;

It might be nice to store the rotation amount though, so it can go sideways.

Also in your settings I'd change g.setRotation() on onchange, do a clear, and force a redraw of the widgets. The issue is that if you change to left-handed and change back, we wouldn't get a g.setRotation(0); otherwise (and we don't really want it in boot code all the time).

@gfwilliams
Copy link
Member

Actually I'm doing this now...

@gfwilliams
Copy link
Member

Just sorted - it's in the development app loader: d49728f

You can rotate all different ways, and can even mirror it (might be cool if you're looking at it through a mirror for some reason!)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants