Skip to content

Conversation

@brad112358
Copy link

With this trivial improvement, a single rotary encoder is sufficient to fully use the BaseUI. Without this change, I could find no way to access the many available information screens.

🤝 Attestations

  • [x ] I have tested that my proposed changes behave as described.
  • [x ] I have tested that my proposed changes do not cause any obvious regressions on the following devices:
    • Heltec (Lora32) V3
    • LilyGo T-Deck
    • LilyGo T-Beam
    • RAK WisBlock 4631
    • Seeed Studio T-1000E tracker card
    • [x ] Other (please specify below)
      Tested on DIY NRF52 Promicro E22 board

@Xaositek
Copy link
Contributor

Shouldn't rotary encoder up/down change frames and then Press open the action menu? Help me understand why long-press is needed to change frames.

@fifieldt fifieldt added the needs-info Needs information before we can proceed label Dec 25, 2025
@brad112358
Copy link
Author

I don't know what the design intention was, but currently, up/down immediately activates and moves through the canned message menu, no matter which frame is current.

@brad112358
Copy link
Author

I couldn't find much documentation on BaseUI using a rotary encoder, but it's clear this hasn't been tested much, given that long press doesn't work and thus, capital letters can't be selected in free text. See #9039.

If someone will let me know how BaseUI is supposed to work with a rotary encoder, I can probably make it work that way.

@Xaositek
Copy link
Contributor

If you want to match other devices like TLora Pager, it would be CW turn is next frame, CCW is previous frame. Depressing the encoder will activate the Action Menus. That would be the limit at the moment; again similar to TLora Pager.

@jp-bennett
Copy link
Collaborator

jp-bennett commented Dec 29, 2025

There are special, combined left/up and down/right events that the encoder should fire.
Edit: Apparently not any longer. We just use left/right and interpret those as up/down as needed.

@mverch67
Copy link
Collaborator

If someone will let me know how BaseUI is supposed to work with a rotary encoder, I can probably make it work that way.

There are different rotary encoder implementations and each can be configured what action should be applied to up/down GPIOs. I assume those defined actions are the root cause of your issue.

I suggest you try setting the encoder GPIO input events of the canned message module (using phone app or CLI) to 28, 29:

    moduleConfig.canned_message.inputbroker_event_cw = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar(28);
    moduleConfig.canned_message.inputbroker_event_ccw = meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar(29);

See also c0f8437.

@brad112358
Copy link
Author

I suggest you try setting the encoder GPIO input events of the canned message module (using phone app or CLI) to 28, 29:

Thanks!

Yes, this makes it mostly usable except when entering free text the longer beep generated by USER_PRESS and ALT_PRESS greatly slow down input vs the shorter beep of UP/DOWN. Note, that even when configured for UP/DOWN, rotary events are slowed down by the beep. Usability would be much improved by a shorter "click" or, buffered input events. Or, perhaps the buzzer feedback can be disabled for these events when entering free text. The advantage of the rotary encoder is supposed to be rapid intuitive movement in long lists like free text via spinning the dial, but that advantage is not realized yet. I may as well have used buttons.

Note, I had to use the CLI to set this as the android app does not offer "user press" or "alt press" as options for input events in the canned message module.

My bug fix PR #9039 still is being ignored, so upper case letters still can't be entered via my rotary encoder.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-info Needs information before we can proceed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants