• What firmware version do you have?

    Firmware 2v12, Boot v0.43.

    The touchscreen stretches past the edge of the LCD, so to ensure touches actually align with the pixels the coordinates have to go past the edge of the screen (sometimes even negative) if you press somewhere past the edge of the screen.

    Through experimentation, the lowest coordinate I can get in the top left is (5, 9) and the highest coordinate I can get in the bottom right is (191, 185). I can still get values in the 180s if I tap quite solidly on the screen, with my entire finger within the screen area.

    On 'cutting edge' builds (and 2v13 when released) the touch coordinates will now be clipped to the screen coordinates (0..175) even if you tap outside

    Does this mean areas still on the screen outside of this range will become unreachable?

    I wouldn't rely on any particular value for its size

    Is this because it could be different on every watch? If I can't rely on the touch resolution being a certain size, that means I can't rely on the coordinates to correspond to the pixels the user pressed. In that case, if I have multiple on-screen buttons, how am I supposed to tell which one the user pressed?

    http://www.espruino.com/Reference is the best source of info. But if you think something is missing please let me know where and what you expect to find and I can fix it.

    In https://www.espruino.com/Reference#l_BanĀ­gle_touch, it states that xy is an "Object of form {x,y} containing touch coordinates (if the device supports full touch)". If there was a quirk like this, I'd expect it to be mentioned here. (Additionally, I don't think this explains what happens on Bangle.js 1, a device which doesn't have full touch, though that's less important to me because I don't have a Bangle 1.)

  • Espruino code uses 160x160 from digging around, mb thats a close estimate of what you should be using?
    LCD_WIDTH / 160
    LCD_HEIGHT / 160
    So these values would be your 'unit chunks' for touch grid size. So its like 0-160, is multiplies that number by LCD_HEIGHT/160 to get the amount in 'pixels', and it stores as int, so its naturally math.floor rounded down to its integer.

    But the main bottleneck concern, surely is whether your fat finger can touch that little pixels? The minimum size should be what your finger can hit and its location will not matter because the unitSize is small enough in relation to the 'fingerSize' that it won't matter.

  • Very good to know. Through experimentation, I've found that touch works OK if I clip it manually to be within 0..176. It's necessary to tap the center of the buttons, and difficult to distinguish anything much smaller than my buttons, but it works. If I get annoyed, maybe I'll try 160x160.


Avatar for d3nd3-o0 @d3nd3-o0 started