flipperzero-firmware icon indicating copy to clipboard operation
flipperzero-firmware copied to clipboard

Lefty Mode

Open B3rry opened this issue 3 years ago • 6 comments

Hi,

I’d like to suggest a lefty mode, as the hardware design of the device makes it difficult for left handed users to operate the flipper zero. Potentially rotating the display output, and 5 way controller’s input 180 degrees would be very helpful.

B3rry avatar Mar 11 '22 19:03 B3rry

I second this

Astrrra avatar Mar 11 '22 20:03 Astrrra

Feasible. I'l add it to backlog.

skotopes avatar Mar 12 '22 06:03 skotopes

Not sure how feasible this would be given the resolution and current UI design, but it would be cool to be able to rotate the display orientation arbitrarily instead of having a simple lefty toggle. My thought being that if I just flip the device upside down so the buttons are on the left, the IR blaster is no longer facing forward. As a lefty, I'd probably prefer to use the device in the orientation used by the universal remote app (with the dpad at the bottom).

alexwaibel avatar Mar 14 '22 18:03 alexwaibel

Agreed, it may not be ideal, but even a primitive flipping of all screens presented in a horizontal view would help. I actually imagine this means the solution is more nuanced than just “rotate 180 at all times” as rotation should probably stay in the default orientation when navigating a vertical view. IMO the best practice is to factor symmetrical bilateral use into the ID phase, but that is a hardware modification.

B3rry avatar Mar 28 '22 17:03 B3rry

Howdy, left-handed here who thought this might be a good first spelunking. I was able to make a proof of concept with just a few changes and confirmed mostly working on my own Zero. Kudos to maintainers for how easy it was to build and flash. It's highly encouraging towards making future contributions. foto_no_exif

In ./applications/canvas.c changing U8G2_R0: (note this won't survive apps changing orientation, similar changes are needed wherever u8g2_SetDisplayRotation is called too)

    u8g2_Setup_st756x_flipper(&canvas->fb, U8G2_R0, u8x8_hw_spi_stm32, u8g2_gpio_and_delay_stm32);

to U8G2_R2:

    u8g2_Setup_st756x_flipper(&canvas->fb, U8G2_R2, u8x8_hw_spi_stm32, u8g2_gpio_and_delay_stm32);

Ref: https://github.com/olikraus/u8g2/wiki/u8g2reference#setdisplayrotation

And within ./firmware/targets/f7/furi_hal_resources.c redefining the key items input_pins so that U/D/L/R are opposites

These changes reveal a few side effects to consider in a polished solution:

  • flipping the screen this way also flips the screen data sent over to desktop qFlipper - I am not sure of an elegant solution; it might be easier flip display output within qFlipper after receiving?
  • remapping U/D/L/R keys breaks vertical applications like the Universal Remote - it might be nice to resolve this in a way that doesn't require individual application awareness of screen flipping

richardbbrooks avatar Apr 28 '22 06:04 richardbbrooks

view_port_rotate_buttons can be used as example

skotopes avatar Apr 28 '22 18:04 skotopes

This and this.

vilewired avatar Mar 05 '23 00:03 vilewired