Acknowledged

Feature request: Suppress user shortcuts

I'd like to let my user cycle through input/menus quickly in my app by holding the up or down keys. I built an implementation using onKeyPressed() and onKeyReleased() that can detect the state of the key and works well on a simulator.

Unfortunately on my Fenix 6, holding the down key causes the music player to open on top of my app. Worse still, when it launches it prevents the onKeyReleased() callback from reaching my app/view, so when I return to my app it thinks the key is still being held and is caught cycling endlessly until my code receives more user input and detects the issue.

This known limitation has been raised before: https://forums.garmin.com/developer/connect-iq/f/discussion/351737/disable-shortcut#pifragment-1298=1

Long presses are a highly useful feature in general. By enabling two different behaviors for each key, it effectively doubles the size of the user input space and enables much richer functionality. So I'd really like to see support for long presses.

Here is my feature request:

1) I would like to see the API changed so that the developer can decide to suppress a user shortcut, which may not be appropriate/intended behavior in the context of some apps. Maybe this can happen whenever true is returned from onKeyPressed()?

Additionally, the behavior I described where my app loses track of user input is not ideal.  I would like to see either or both of the following features added to enable workarounds:

2) Provide a mechanism where I can access the current state of the buttons, so my view/delegate can check in onShow() whether a key is still held and prevent an erroneous long press behavior.

3) Provide a mechanism to check whether there is a shortcut registered on a button. This way if there is, an app can smartly disable long press behavior in the context, but in other contexts/for other users it can still provide the richer functionality.

Parents
  • How do you control the optionality? Is it a setting the user inputs manually?

    If a system shortcut / hotkey is not assigned in user settings, then it should be available for CIQ apps. (To be clear I haven’t tested this since fr935, which is an 8-year old device).

    For example, on most music watches, such as my fr955, the Hold DOWN hot key is pre-configured to open the music player.

    On my fr955, I can disable this hotkey / shortcut as follows:

    - Hold the UP button for menu

    - Select System > Hot Keys (this is called “Shortcuts” on newer watches like Fenix 8)

    - Select Hold DOWN and reassign it to None

    Note that despite the fact the action for Hold DOWN is a user-configurable setting, it’s also documented in the manual. Same goes for Hold BACK on Fenix watches.

    So it’s basically default functionality that can be changed or disabled.

Comment
  • How do you control the optionality? Is it a setting the user inputs manually?

    If a system shortcut / hotkey is not assigned in user settings, then it should be available for CIQ apps. (To be clear I haven’t tested this since fr935, which is an 8-year old device).

    For example, on most music watches, such as my fr955, the Hold DOWN hot key is pre-configured to open the music player.

    On my fr955, I can disable this hotkey / shortcut as follows:

    - Hold the UP button for menu

    - Select System > Hot Keys (this is called “Shortcuts” on newer watches like Fenix 8)

    - Select Hold DOWN and reassign it to None

    Note that despite the fact the action for Hold DOWN is a user-configurable setting, it’s also documented in the manual. Same goes for Hold BACK on Fenix watches.

    So it’s basically default functionality that can be changed or disabled.

Children
No Data