rbreaves / sorun

Desktop Linux for Creators
MIT License
31 stars 2 forks source link

[REQUEST] Enforce sane keypad Shift key behavior on Linux (as in Windows) #9

Open RedBearAK opened 3 years ago

RedBearAK commented 3 years ago

I've learned through recent events that Linux distros mostly do not have a certain sane default enabled for the behavior of the Shift key in relation to Numlock state. In macOS this is generally not something anyone has to think about, since the keypad is always a numpad in most cases (but an Apple keyboard keypad does work as nav/cursor keys under Linux). But in Windows, the Shift key is only allowed to temporarily toggle Numlock from on (keypad as numbers) to off (keypad as navigation/cursor keys) while you hold Shift down. The Shift key is NOT allowed to change the Numlock "off" state (keypad as navigation/cursor keys) to "on", which breaks the ability to use the numeric keypad keys for highlighting text or files with shortcuts like Shift+PgUp or Shift+Home on the keypad.

Linux distros for the most part apparently have an option available related to this, but do not generally enable this sane default. I am currently unaware why anyone would want the Shift key to be allowed to temporarily enable Numlock while using the keypad navigation/cursor functions. It makes no sense to me that anyone would actually want that, since as noted above it breaks text selection shortcuts involving the Shift key. Fortunately there are ways to fix it, and if Kairos could incorporate a function that enables the Shift-keypad sane option (i.e., make it behave like Windows) on as many distros as possible, I think a lot of people would like that.

For KDE, the option can be found under Keyboard --> Advanced tab --> Miscellaneous compatibility options --> "Num lock on: digits; Shift for arrow keys. Num lock off: arrow keys (as in Windows)".

In Fedora 34 GNOME it can only be found in GNOME Tweaks --> Keyboard & Mouse --> Additional Layout Options (button) --> Compatibility options --> "Num lock on: digits; Shift for arrow keys. Num lock off: arrow keys (as in Windows)".

How to do this via script, I don't know yet.

Here is a reference thread that started almost a decade ago now:

https://askubuntu.com/questions/57079/xubuntu-make-shiftnumpad-work-like-windows

rbreaves commented 3 years ago

Sounds useful, I've never used this feature personally, but I will test it out under Windows and macOS and see how I feel about it after that. It can be added to a yaml config for kairos even if it is not an enabled default. I plan to have all sorts of quick enable/disable type options if a user wants to selectively change templates.

As far as default layouts or templates go - it is just based on my preference and that of the users. I do think what you are suggesting is pretty sensible though.

RedBearAK commented 3 years ago

Yeah, it's difficult to even run into this unless you try to do things like text selection (or other shortcuts involving the Shift key) with the keypad navigation/cursor keys. But all the threads and bug reports I found related to this indicates that I'm definitely not alone in finding the default Linux behavior super annoying.

I plan to have all sorts of quick enable/disable type options if a user wants to selectively change templates.

Speaking of templates, I don't know how practical this might be, but I would be very convenient if a certain template of chosen options could be applied to Kairos by simply remembering a string of words. Sort of like a hash function that results in memorable words instead of a random alphanumeric code. Instead of clicking a bunch of boxes in a GUI or responding to numerous prompts about what you want enabled/disabled/installed, you just pass something like horse-staple-teapot and that results in the exact same set of options you applied to another machine when Kairos gave you that code after install.

Given that Kairos is going to be rapidly evolving and changing for quite a while, I don't know if something like this could be reasonably implemented anytime soon. Just something to think about as an end-goal. Some simple way of making sure Kairos does exactly what each user prefers every time they use it, with minimal interaction.

I have vague ideas about how it could work. Every group of options has X number of possible on/off states, so you just generate a list of common words with one word per possible state. When Kairos sees that word, it sets that entire group of options to the on/off state that matches that word in the list. So, it's like I can carry my personalized settings around with me and apply them to new machines quickly by just remembering those words or writing them down on a Post-It note.

The sticking point is when new options are added in newer Kairos releases. You'd have to retain the settings of older code word combinations and then only ask the user about the newer options that aren't covered by that word code, then generate an updated word code. Or, just make the user start over (from an existing template, maybe?), and generate an entirely new word code.

Don't know if this will make any sense to you.

rbreaves commented 3 years ago

I mean.. I guess a tag based like system in a GUI or terminal could be added. I don’t know if I plan to create a real GUI for it or not tbh. Kinto made sense for that but this is more script & text driven.

I’d really like to get google Auth working w/ it so custom preferences get saved there. An option to share might be good too - as long as users don’t share anything that ought to be private.

rbreaves commented 3 years ago

A database of templates could be created, those would then come down as flat files when needed/requested. And yes versioning & schemas & changes could in theory be followed.

I’ve been thinking some about this already.