-
Notifications
You must be signed in to change notification settings - Fork 892
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
Canned message usability improvements #4437
base: master
Are you sure you want to change the base?
Canned message usability improvements #4437
Conversation
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested with "scan and select", "up down select" and the RAK14014/T-Watch "free-text" system.
Everything seems to be working fine 👍 Just the one request to also apply your fix to the "scan and select" input (see below).
This PR does prevent the user from exiting the canned message selection screen via a user-button press. Just with a quick test, it feels like this won't be an issue, as the timeout for this selection screen is short (20 seconds).
I would like to know that @tropho23 is comfortable with the change, though. I believe some of his designs use rotary encoder inputs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note: user button will no longer dismiss the canned message frame.
Some input methods will need to wait 20 seconds for timeout.
Merge only if this is acceptable.
is there a way to allow the user button to still dismiss the canned message frame? it's a button and it can be easily pressed by mistake. Having to wait 20sec does stop you from looking at other things that may be needed urgently. |
does this allow the escape button to still clear the message? because having to backspace a whole message may be a huge chore we didn't otherwise have to do before. |
There'd definitely be a way to make that happen. It'd mean suppressing the carousel behavior in a slightly different spot; maybe somewhere like here? |
I'm not seeing a 20 second timeout, or any timeout when I start typing and stop using CardKB. I'm running the 2.5.0 technical preview on a RAK board. Are you using some custom firmware build where this occurs? |
Here's my point-by-point observation of your observations: 1. The Screen timer jumps away from the CannedMessageModule frame while the user is typing a message. Kinda annoying.
2. The CannedMessageModule thread was not being scheduled to process the INACTIVATE_AFTER_MS timeout, because CannedMessageModule::runOnce() was running in the caller's context (e.g. the keyboard thread).
3. Don't reset half-typed messages when timing out back to regular screens, so the user can resume typing later.
4. Canned message list sometimes fails to timeout.
5. Don't inconsistently clear freetext when scrolling canned message list.
6. Restore old canned message state after displaying popup message (the user might be typing another msg). Also don't clear freetext/state after displaying popup message.
|
I saw the carousel timeout issue when testing with 2.4.2 and 2.4.3 on a RAK4631. Do you have "Auto screen carousel" set to a low number like 10 seconds? If so then I will re-check on 2.5.0 The 20 sec canned message timeout is currently nonfunctional due to a couple of bugs, fixed in this PR. |
Yes, canned message will still close on reception of a |
91ee168
to
e5dac7b
Compare
- Don't let Screen timer jump away from CannedMessageModule frame - Correctly timeout CannedMessageModule with INACTIVATE_AFTER_MS - Don't reset half-typed messages on timeout
- Reliably timout when showing canned message list - Don't inconsistently clear freetext when scrolling canned message list
- Restore old canned message state after displaying message - Don't clear freetext/state after displaying message
e5dac7b
to
d983ca5
Compare
@tropho23 - does this patch break anything for you? |
This PR fixes some usability issues I've encountered with the canned message module and a standalone keyboard.
The Screen timer jumps away from the CannedMessageModule frame while the user is typing a message. Kinda annoying.
Solution: Return early from Screen::handleOnPress if cannedMessageModule->shouldDraw() returns True.
The CannedMessageModule thread was not being scheduled to process the INACTIVATE_AFTER_MS timeout, because CannedMessageModule::runOnce() was running in the caller's context (e.g. the keyboard thread).
Solution: Pass the return value of CannedMessageModule::runOnce() to setIntervalFromNow().
Don't reset half-typed messages when timing out back to regular screens, so the user can resume typing later.
Canned message list sometimes fails to timeout. Solution: Change timeout comparison operator from ">" to ">="
Don't inconsistently clear freetext when scrolling canned message list.
Restore old canned message state after displaying popup message (the user might be typing another msg). Also don't clear freetext/state after displaying popup message.