pop-os / keyboard-configurator

Keyboard configuration UI
GNU General Public License v3.0
261 stars 46 forks source link

Keyboard Configurator Design Updates #146

Open isaac-8601 opened 2 years ago

isaac-8601 commented 2 years ago

Changing Grouping of Keys

We're using tabs to help us organize the new keys and QMK features we want to support. Most of our current keys will go into "Basics," many of the extras will go into "Extras," and the new features for Tap-Hold and Macros will each have their own tab.

On the "Basics" tab:

On the "Extras" tab:

Basics Tab with QWERTY layout

Extras Tab

Updating Keycap Styling in Tabs

Within the keycap selection area underneath the tabs, should have a light gray fill (#e9e9e9) with a 1px inside border (#c8c8c8). There will be a 4px padding inside the keycap borders to ensure that the text never gets too close to the sides.

In the event that the text is too large for the keycap (as can happen in the top keymap), the text will be truncated with a "..." and the full text of the key can be viewed by looking at the selected key in the key selection area.

Support for Combined Modifiers

In our previous configurator, keys could only have a single modifier or key assigned. QMK also supports the ability to chain modifier keycodes. For example, one key can do both Left Shift and Left Control. Optionally, you can add another keypress along with modifiers (e.g. Left Control + Left Shift + Up).

In our new configurator, users will be able to select multiple modifiers (plus an additional keycode) by using Shift and clicking on the desired keys. This will give users the ability to replicate the function of "Hyper" and "Meh" keys for keyboards that support it.

Keys that aren't supported within chained modifiers, such as advanced keycodes or modifiers from opposite sides, will be disabled in the key selection groups when Shift is pressed after having already selected the first desired key.

Support for Mod-Tap and Layer-Tap

QMK supports keys that have different actions on hold and on tap. We're calling that feature "Tap-Hold" and giving it another tab below the Launch key map.

tap-hold

Users must select a hold action, and then a tap action. For the hold action, users can either select modifiers or access layer keys (the latter acting as QMK's "Layer Tap").

The selected key in the Launch keymap will show a split-key design with both a tap and hold action. When a hold has been selected, but a tap has not yet been selected, a lighter gray placeholder will appear saying "tap" on the bottom of the key.

When shifted The tap-hold modifiers are one example of how incompatible modifiers are disabled when Shift is depressed.

Prototype

Some features describe above can be seen in an online prototype: Link.

This prototype shows the groupings and tabs for "Basics," "Extras," and "Tap-Hold." Through the prototype you can set the spacebar to a Tap-Hold key with the actions of "Left Shift" on hold and "Enter" on tap.

ids1024 commented 2 years ago

A couple things I hadn't considered earlier:

KC_TILDE, KC_EXCLAIM, etc. just combine number keys with shift. So the "Additional Symbols" section here is just duplicating what can be done by shift-selecting left/right shift modifiers and other keys. We could still have it, but it may be confusing to have two ways to do something.

How should this look for internal keyboards? https://github.com/pop-os/keyboard-configurator/pull/141 adds "Non-US \" for built in keyboards. With this design, and without adding any more keycodes for builtin keyboards, this would leave exactly one key in "Extras", which would be undesirable.

maria-komarova commented 2 years ago

Could we add other extras to the built-in keyboards?

ids1024 commented 2 years ago

I believe built-in keyboards use PS/2 scan code set 2: https://wiki.osdev.org/PS/2_Keyboard#Scan_Code_Set_2. Things like F13 don't seem to exist, and I don't think mouse actions would be possible.

maria-komarova commented 2 years ago

So nothing that is on Extras for Launch would be possible for the built-in keyboards, right? Neither would be Tap-Hold or Macros.

ids1024 commented 2 years ago

Nothing other than "Non-US \", it seems.

ids1024 commented 2 years ago

This mockup doesn't seem to include the arrow keys in the picker?

ids1024 commented 2 years ago

Ah, those are still in navigation, as they were previously. Perhaps laying those out more like they are on the keyboard could make them easier to find.

ids1024 commented 1 year ago

The keypad in the mockup has , and =. QMK has KP_COMMA and KP_EQUALS, which are USB keycodes (for compatibility with old types of computers and maybe international layouts?), but a standard IBM keyboard doesn't and instead has double height + and Enter. So there is no PS/2 keycode for these things, which we need for internal keyboards.

btegs commented 1 year ago

@leviport and @13r0ck - This looks awesome! Can't wait to try the new design as I want to stay with the S76 official firmware and app vs just doing QMK + VIA.

jonathanmorlen commented 1 year ago

Is there a branch available with the current progress of this redesign?

leviport commented 1 year ago

I think configurator-feature-update has some of the new stuff in-progress.

g-berthiaume commented 1 year ago

This looks great ! I'm glad this is being worked on. Most of the QMK value is currently unusable with the current GUI.

Alibirb commented 8 months ago

In my opinion, these updates are really badly needed. I just opened up my Launch Heavy today, excited to customize it, and I was really disappointed by the lack of options. On the ancient gaming keyboard I've been using, I could set it so when I hit Control, it lit only the keys for shortcuts I use (e.g. C, and V), set shortcuts (like Ctrl+Fn+1 to switch to a different layer), et cetera.

I checked out the configurator-feature-update branch, but it seems it's too outdated to detect my keyboard. It seems like progress on this issue has stalled, or has it just not been pushed yet?

Alibirb commented 8 months ago

I was able to get the branch to work with my new launch_heavy_3 by applying the changes from https://github.com/pop-os/keyboard-configurator/commit/09d70814d942b4322a6e544bba3b61f0ab854f8f, plus replacing the contents of layouts/keyboards/system76/launch_heavy_3/keymap.json with https://github.com/pop-os/keyboard-configurator/blob/master/layouts/keymap/qmk.json.

zslayton commented 6 months ago

In my opinion, these updates are really badly needed. I just opened up my Launch Heavy today, excited to customize it, and I was really disappointed by the lack of options.

I'd like to echo this sentiment. I bought my Launch over a year ago and have been watching this issue eagerly ever since. The last change to configurator-feature-update appears to have been in March 2023. Is this still being worked on? Is there a way I can configure mappings that require key combinations (e.g. layer2:j => CTRL+LEFT) in the meantime?

leviport commented 6 months ago

I have no timeline predictions regarding when we can put more time into this. Most of our attention is on COSMIC DE currently. If you want more advanced functionality than what the configurator currently provides, I'd recommend manual QMK firmware customization and flashing.