zmk
zmk copied to clipboard
feat(ble): Fast switching between two recent profiles
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.
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.
Hi @caksoylar, Is there anything I need to do with this MR?
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.
@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?
#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
.
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>;
};
};