-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Extras, tap-hold, and modifier keys #148
base: master
Are you sure you want to change the base?
Conversation
0b19677
to
645c03e
Compare
8c363f6
to
55f067e
Compare
I've been busy with Cosmic and Iced related things, and sizing and alignment of the keycode picker has posed a bit of a challenge, but anyway, functionally this should be working. Some things may need to be fixed, and we may want to adjust the style of some things. To test, it should now be possible to just run So the problem I've had with sizing and centering of the keycode picker: it's using a custom I spend some time trying to find a way to make the natural size it requests depending on how it reflows (which isn't really possible; but perhaps that's not the issue, or only part of it). Currently I have it set to allocate the same width as the widest group, which looks alright but seems a bit narrow on wide windows. But allowing it to scale to, say, |
Initial implementation of #146. Backend representation for mod-tap, layer-tap, and modifiers+basic keycode, with conversion to and from text format and numeric keycode. Add shift-select for modifiers with a non-modifier key, extras tab, and tap-hold section. Sensitivity needs to be set based on whether shift is held and what is already selected. Getting this to work properly is awkward with how GTK modifiers are handled. More things need to be added to extras, the layout for basic keys needs to be updated for the latest design, and various style details need to be addressed. And it needs to not show these things for internal keycodes.
Update sensitivity based on state of `shift` key. Distinguish basic from non-basic keycodes. Non-basic not allowed with shift select. Show "Left" or "Right" only once when multiple modifiers are combined. Update how internal state is handled in tap-hold, render with line separator, and handle shift-select. Show QMK features only on QMK keyboard, using a `is_qmk` `meta.json` setting. Only allow shift-select where this is enabled. Also only apply QMK features in backend crate when QMK layout is used.
This will allow parts of the picker to be defined without this style of section, and also lays the groundwork for showing different labels for international keyboard layouts. How/if to translate is still unclear.
This design allows custom widgets for specific groups, and uses one for the international keys.
Now it is centered using `halign`. This can now be better positioned relative to other widgets.
This more or less works. Scaling in increments doesn't seem to be possible, so centering is really only possible for the group box alone, or with a limit to width.
4e38fb6
to
b7e51ca
Compare
b7e51ca
to
df0e31d
Compare
Looking at the configurator and after some chat exchange:
|
Initial implementation of #146.
Backend representation for mod-tap, layer-tap, and modifiers+basic keycode, with conversion to and from text format and numeric keycode.
Add shift-select for modifiers with a non-modifier key, extras tab, and tap-hold section.
Sensitivity needs to be set based on whether shift is held and what is already selected. Getting this to work properly is awkward with how GTK modifiers are handled. More things need to be added to extras, the layout for basic keys needs to be updated for the latest design, and various style details need to be addressed. And it needs to not show these things for internal keycodes.