Acknowledged
CIQQA-3370

Instinct 3 Solar has System.DeviceSettings.isTouchScreen in Simulator and on Device

The Instinct 3 Solar exposed the System.DeviceSettings.isTouchScreen-property. It is set to false, but this property is widely used to discern device that have a touch-screen from devices that do not have a touch screen.

In my opinion it should not be exposed on devices that don't have a touch-screen.

The property is exposed in the simulator and on device for the Instinct 3 Solar.

Parents
  • What is the best practice to find out of a device has a touch-screen built in? (please don't say junglefiles)

    If you can limit yourself to devices with CIQ 3.4 or higher, you can use the personality UI system, which provides a bunch of UI-related constants based on CSS-like style definitions for each device. See below for more details.

    If you need to support older devices, then I guess you're stuck with using jungle files (or resources) with hardcoded values :/

    --

    Some background:

    - the device library is installed alongside the SDKs under the ConnectIQ folder. The folder structure looks a little something like this:

    ...\ConnectIQ\
    |
    ----- Devices\
    |         |
    |         ---- fr955\
    |         |
    |        ---- instinct3solar45mm\
    |        |
    |        ...
    |
    ----- SDKs\
             |
             ----- connectiq-sdk-win-8.2.1-2025-06-19-f69b94140\
             |                                          |
             |                                          ---- samples\
             |                                          |
             |                                          ...
             |
             ----- connectiq-sdk-win-8.1.1-2025-03-27-66dae750f
             |
             ...

    - note that the SDKs are versioned (and multiple versions can coexist), while the device library is unversioned (you're stuck with the latest version of the device files)

    [1/3]

Comment
  • What is the best practice to find out of a device has a touch-screen built in? (please don't say junglefiles)

    If you can limit yourself to devices with CIQ 3.4 or higher, you can use the personality UI system, which provides a bunch of UI-related constants based on CSS-like style definitions for each device. See below for more details.

    If you need to support older devices, then I guess you're stuck with using jungle files (or resources) with hardcoded values :/

    --

    Some background:

    - the device library is installed alongside the SDKs under the ConnectIQ folder. The folder structure looks a little something like this:

    ...\ConnectIQ\
    |
    ----- Devices\
    |         |
    |         ---- fr955\
    |         |
    |        ---- instinct3solar45mm\
    |        |
    |        ...
    |
    ----- SDKs\
             |
             ----- connectiq-sdk-win-8.2.1-2025-06-19-f69b94140\
             |                                          |
             |                                          ---- samples\
             |                                          |
             |                                          ...
             |
             ----- connectiq-sdk-win-8.1.1-2025-03-27-66dae750f
             |
             ...

    - note that the SDKs are versioned (and multiple versions can coexist), while the device library is unversioned (you're stuck with the latest version of the device files)

    [1/3]

Children
  • For example, if I build an app for fr955, the following file is created as part of the build output:

    bin\gen\006-B4024-00\source\rez.mcgen

    Here we can see that hasTouchScreen can be accessed as follows:

    const hasTouchScreen = Rez.Styles.device_info.hasTouchScreen;

    [3/3]

  • - you can easily open ...\ConnectIQ\ on your computer by opening the command palette in VS Code, selecting "Monkey C: Open Samples Folder", and navigating up 3 levels

    - on windows, the location is %appdata%\garmin\connectiq

    - on macos, the location is $HOME/"Library/Application Support/Garmin/ConnectIQ"

    - each device has its own folder under the device library

    - each device folder contains important device config files such compiler.json and simulator.json

    - for devices which support the personality library, the corresponding device folder contains personality.mss

    - personality.mss contains the property device_info.hasTouchScreen (true or false)

    But how can I access this information at runtime, you might ask?

    It would be great if this was documented, but it isn't. You have to successfully build an app for your CIQ 3.4 (or higher) device, and you'll see some auto-generated resource code which corresponds to personality style information.

    [2/3]