zmk icon indicating copy to clipboard operation
zmk copied to clipboard

feat(ble): Fast switching between two recent profiles

Open Dimentium opened this issue 10 months ago • 6 comments

related to #767

I'm not a developer, so this implementation is quite basic, but it works perfectly for me.

This update introduces the ability to switch back to the previously active bluetooth profile by passing index 255 to the profile selection function. This feature facilitates quick toggling between two frequently used Bluetooth devices.

Dimentium avatar Apr 18 '24 16:04 Dimentium

This is a great idea. I personally switch between two profiles a lot and can see the benefit of being able to only use a single key binding on the base layer rather than having to have two key bindings to swap between profiles.

I would recommend to add a new command, e.g. &bt BT_ALT (short for alternate), instead of using &bt BT_SEL 255 for this.

You could also extend the code to ensure the previous profile is persisted along side the active profile, so that swapping also works directly after startup.

huber-th avatar Apr 25 '24 16:04 huber-th

Hi @caksoylar, Is there anything I need to do with this MR?

Dimentium avatar Apr 29 '24 19:04 Dimentium

I am not making the merge decision for this, but I don't see this being useful without the alias BT_ALT like @huber-th suggested. Then it also needs to be documented.

caksoylar avatar May 02 '24 17:05 caksoylar

@Dimentium I really love the idea of this feature, especially since I switch between two profiles frequently.

Since you mentioned that you're not a developer, I'd be happy to implement the improvements I suggested above as well as document the feature. We can then review the changes together.

What do you think?

huber-th avatar May 02 '24 18:05 huber-th

#1413 is meant to implement the same thing, but a more recent implementation would be good. I like the naming used there though, BT_LAST_DEV.

Nick-Munnich avatar May 10 '24 23:05 Nick-Munnich

For completeness, the goal of only needing a single key binding to switch between BT profiles can also be achieved using tap-dance.

  behaviors {
    td_bt: tap_dance_bluetooth {
        compatible = "zmk,behavior-tap-dance";
        #binding-cells = <0>;
        tapping-term-ms = <500>;
        bindings = <&bt BT_SEL X>, <&bt BT_SEL Y>;
    };
  };

huber-th avatar May 14 '24 15:05 huber-th