WootingKb / wootility-issues

A place to report issues with the Wootility and help with feedback on existing issues
24 stars 3 forks source link

Transparent keys for layers #294

Open SamuilDichev opened 1 month ago

SamuilDichev commented 1 month ago

Is your feature request related to a problem? Please describe.

It's very frustrating when I setup a layer, then link that layer on all of my profiles but can't make the WASD keys and others continue to function the exact same as the base layer ( including keymap, actuation points, advanced keys, etc )

I see Wooting has named its keymaps "layers", but they do not function as layers. The whole point of "layers" is that you can "layer" them on top of each other. See how QMK does it. Multiple layers can be active at the same time with the top most layer having the ability to inherit the keys it doesn't explicitly assign from the layers below it.

See https://docs.qmk.fm/keymap for a more thorough explanation.

Describe the solution you'd like

Add an additional key in the "Remap" tab called "Transparent". When that key is assigned to a layer, then that key in that layer will always inherit the mapping and all settings ( actuation point, advanced keys, etc ) for that key from the layer underneath it. If you assign a "Transparent" key to W in layer 1, then it should do whatever W does in layer 0. Including all of its settings and advanced keys functionality.

Note that when the layouts are linked for all of your profiles, transparent keys should inherit from the currently active profile's layer 0. That means, if you are using the Racing Profile, then the WASD keys in layer 1 ( or any other key you've made transparent ) should inherit the mapping and settings of the WASD keys in Racing Profile's layer 0. If you later switch to the Typing Profile, then layer 1 should inherit from the Typing Profile's layer 0.

What this allows is to create a single layer 1, which can automatically inherit all of the settings of certain keys ( like WASD ) from the main layer without you having to re-define those settings and re-configure them again. Additionally, any time you make a new profile or edit an existing one, layer 1 will continue to work without modification, inheriting the functionality of WASD from the main layer of that profile and greatly reducing keymap maintenance effort of users while reducing the possibility of mistakes ( e.g. editing layer 0 and forgetting to edit layer 1 to match it )

Describe alternatives or workarounds you've considered

The only workaround is disabling layout linking and manually managing all of your profiles and layers. You'd have to re-make the same bindings, actuation points, advanced functionality, etc for your WASD keys ( or any other key ) for each additional layer per profile. That means if you have 2 extra layers on top of the main layer and 4 different profiles, that's 2x4 = 8 total layers you have to configure one by one. And for each one, you have to be careful to set it up exactly the same as the main layer for the WASD keys. And if you change how your WASD keys work in the main layer, you also have to remember change layer 1 to match that configuration which makes managing configurations not just exhausting but also error prone.

Real world example

Imagine the following mappings:

Now, imagine F13 is bound in-game to some ability while WASD are my movement keys.

The above configuration allows me to access F13 without losing access to WASD because WASD's functionality will be inherited by layer 1 and I will continue being able to control my character in-game. Just like when you press "shift", you don't suddenly lose access to WASD nor do they lose their actuation points and other settings, similarly pressing FN1 should not suddenly deactivate keys from layer 0 that aren't even being overwritten by layer 1.

In effect, FN1 can function as a modifier and instead of switching to an entirely new keymap it only switches certain keys while the rest ( the transparent ones ) continue to function the same as the main layer.

Wootility and Firmware version

Wootility v4.6.21 Firmware 2.9.1-beta.0

Keyboard Type

Wooting 60HE