Changing BTN2 menu activation

Posted on
  • Hi all,
    I'm enjoying my new Bangle.js a lot, but having trouble that it very often goes into the settings menu and hence essentially is non-active for the actual purpose. I understand that this must be caused that the BTN2 gets activated mistakenly while I'm wearing it, probably because of my shirts, my hand moving and getting it pressed. For normal usage, that's quite annoying. Is there a way to generally reassign the button for menu access to something more robust, e.g. double-press BTN2 or BTN1+BTN2, that doesn't occur so easily. Is this a setting of the clock app only or is there a general way of assigning this (an apps then using it this way)?

  • Hi! The usage of BTN2 is dependent on the clock app so while it's not generally configurable you could modify an existing clock to have the behaviour you want (I can help suggest some things if you want).

    However to get to the menu, you need to have woken the watch up (which could have been done by pressing BTN2), and hit BTN2 again to enter the menu.

    The really easy solution for this is go to Settings, LCD, and turn Wake on BTN2 Off. So now, to get into the settings menu you have to have pressed BTN1 or BTN3 to wake the watch up, and then BTN2 - which is a lot less likely than hitting BTN2 twice.

    Hope that helps!

  • Great idea, completely missed that. Turning Wake on BTN2 off seems an easy and straightforward solution. I'll give that a try and then see if I need to touch the clock apps. Thanks a lot!

  • Here's the solution I have come up with for turning the BTN2 short press into a long press. I start a timer and when I have held the button long enough I make the Bangle buzz, then I can release the button. If the button is released too early there is no buzz. I cancell the timer on release of BTN2. This works quite nicely, it mean you just hold BTN2 until the buzz then release. This will stop going into the launcher by accidently catching BTN2 with your sleeve etc. But it still allows you to get into the launcher if you want to.

    // start a timer and buzz whenn held long enough
    function firstPressed() {
      firstPress = getTime();
      pressTimer = setInterval(longPressCheck, 1500);
    }
    
    // if you release too soon there is no buzz as timer is cleared
    function thenReleased() {
      var dur = getTime() - firstPress;
      if (pressTimer) {
        clearInterval(pressTimer);
        pressTimer = undefined;
      }
      if ( dur >= 1.5 ) Bangle.showLauncher();
    }
    
    // when you feel the buzzer you know you have done a long press
    function longPressCheck() {
      Bangle.buzz();
      if (pressTimer) {
        clearInterval(pressTimer);
        pressTimer = undefined;
      }
    }
    
    var pressTimer;
    
    // make BTN require a long press (1.5 seconds) to switch to launcher
    setWatch(firstPressed, BTN2,{repeat:true,edge:"rising"});
    setWatch(thenReleased, BTN2,{repeat:true,edge:"falling"});
    
  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

Changing BTN2 menu activation

Posted by Avatar for vga101 @vga101

Actions