I’d go a step further and say that applications shouldn’t implement keyboard shortcuts at all. Ideally there’d be an integration with the OS where the application exposes the available commands and the default key binding.
That way the OS can provide consistent key bindings across all applications, so if you switch Ctrl+C to Meta+C, it just works, and opens up a lot of possibilities for weird accessibility setups, and also opens up room for changes to the keyboards.
It’s weird enough as it is if you use dvorak or more regional ones like bépo, and it’s not even a different physical keyboard it’s just a key layout. We have touchscreens and virtual keyboards, adding a Ctrl and Alt key to a virtual keyboard takes space and it’s kinda ridiculous when we could have a nice customization shortcuts ribbon so you have copy/paste and stuff handy. There’s also voice inputs.
Input needs to be decoupled from the concept of a keyboard. Steam Input is a good step towards that for games specifically, but it would be amazing as a general system so you can comfortably use Firefox from a game controller and whatnot.
dvorak or more regional ones like bépo
The way you describe it is quite genius as it’d allow the OS to automatically remap shortcuts to stay on the same physical keys when the layout is something other than qwerty by simply mapping the keys twice.
I’d like to expand your idea with virtual shortcuts for common operations. Instead of declaring
C
to mean copy, the applications would assign the copy operation to the “common copy key” which would then be controlled by the OS.
It’d likely beC
by default but the user would be able to change it in one common place for all applications.What I meant is those virtual shortcuts are all you get, at all. The application declares the shortcuts with an optional suggested key binding for it, but it’s up to the OS to ultimately handle the keys and tell the application which shortcut is called for.
That’s exactly what Steam Input does: the game specifies actions like “player movement”, “jump”, “fire”, “look” and Steam just sends those values to the game. The game doesn’t have to implement mouse, keyboard or controller inputs at all, Steam does it all for you. In return, the game can run with controllers we’ll make 10 years from now, and the player can finally just map every single button to their liking, universally. It’s so much easier to deal with when thinking of “Ok, so A is jump” rather than “So I want to press A to jump which is X in the game”.
Applications shouldn’t have to care about how you input stuff, it’s ugly and complex, leave it to the operating environment to figure that out for you.
I was being unclear; I meant the optional suggested keybinding would be bound to virtual keys for common actions.
The goal of that is to rebind common actions globally. Without this, you’d have to change each application’s individual “copy” action to your preferred shortcut. You’d do so in the OS rather than the app but you’d still have to do it for each app individually.
Alternatively, there could be a set of pre-defined common actions that applications would simply use rather than defining their own action. I think that’s what you mean.
Yeah, I’ve thought that in addition to regular keystrokes operating systems should provide logical events. If I press
Ctrl+c
don’t sendCtrl+c
to the application, sendCopy
(Maybe also with the original keystroke in case it needs to be interpreted “raw” like when using remote desktop software). We sort of have this for keyboard, there are special keys likeMute
andWeb Browser
, but I think we should extend this system for common actions that are basically universal.MacOS does this. Basically any action present on an app’s global menu can have a key bound to it in system settings.
Not every app exposes its menu to the system however.
I wish gaming companies would get this right at least. More and more, certain actions are hardcoded which begs the question why have rebinding at all if you can’t bind things to keys like F or E or so?
And it shouldn’t be F or E, but the key that’s represents F and E. That way you can change keyboard layout without the keys moving physically. I switch between Dvorak and QWERTY quite a bit (I use Dvorak my kids use QWERTY), so it’s particularly important to me since things like Ctrl+C and Ctrl+V are not in convenient places (C is above right middle finger, V is below right ring finger).
things like Ctrl+C and Ctrl+V are not in convenient places
Huh, I hunt-and-peck Qwerty and touch-type Dvorak and that has never bothered me. I can know where C and V are, and I just press them.
I don’t game much though, and could see the issue if WASD are scattered all over like they are in Dvorak and can’t be remapped.
Yup, I’ve run into some games where WASD and the like are scattered on Dvorak. What’s worse is occasionally it’s inconsistent, and they use key codes for some things and letters for others. I’ve even had cases where they somehow read the primary keyboard and I had to reorder my keyboards in the settings for the game to work properly.
Bigger budget, newer games are usually more consistent, but all bets are off with older games.
Yeah although I would accept that if at least I can rebind everything. I have no clue whether modern keyboards output non-processed signals to an API the game could even interact with (that is, whether you can get a “Key 102 was pressed” instead of “F was pressed”).
But I kinda agree, it’d be awesome if things could be done either “by position” or “by letter”.
And the very best is still Star Wars Squadrons, which even goes as far as allowing you manual control over it’s combo-keys (that is, the same key having different functions based on context). You get to freely choose whether you want to bind:
- Individual keys for each functionality.
- One combo key.
- Both, should you want to.
The sad part is: Yes, that’s how it should always work. Keybinding has become such a second-class citizen of game development, it’s super sad. And as a lefty, quite annoying.
I haven’t tried every game engine, but at least the browser provides “key.code” to get the code (fixed numeric position) and has for at least a decade, and every programming language I’ve use to detect key presses offers it.
You’re the second person this week to mention Star Wars Squadrons, I think it’s a sign I need to check it out. I played Rogue Squadron and TIE Fighter as a kid, so it’ll be fun to see how Star Wars games have progressed. I usually avoid EA games, but maybe it’s worth breaking that for this game.
Floorp has this ability, or atleast a better version than currently available
Thanks !! I had never heard about it ! I just discovered the firefox forks this week in fact, waterfox seamonkey gnuzilla icecat
If you’re on windows powertoys lets you remap keys.
Yes, I rebound ctrl+alt+t to ctrl+alt+w because that makes way more sense to undo close tab, on the same keys as close tab (ctrl+w)
can I remap my teams and screenshot buttons?
I recommend you try sharex https://getsharex.com/downloads
but with these keybinds
In particular ctrl+printscreen for a fullscreen immediate screenshot shift+printscreen is a region screenshot but it takes a video of your region instead of a picture I use that all the time
example https://youtu.be/-QzkPyEsslE
You can then cut that with losslesscut really really easily
https://github.com/mifi/lossless-cut
If your video is too big to share (25mb) then you can recompress it with handbrake https://handbrake.fr/
The worst thing to me is not just that I can’t change the browser defaults, but many actions can be overridden by websites. Like
Ctrl+h
opens my history on every single site. Except for Google Docs. Why!!! Don’t let websites hijack standard hotkeys.But I would also kill for customizable keyboard shortcuts in general. Especially if I can run custom JS from a shortcut.
Absolutely blew my mind that I had to change muscle memory for 1Password because Firefox already used their chrome key chords.
I hate that the extra mouse buttons (mouse 4 and 5 I think?) are set to back and forward. Way too many mice are super easy to read on accident, but it’s not a big deal because it doesn’t do anything except when “gaming” or if you set it up for something specific. Can’t tell you how many times I’ve accidentally gone back.
A difficult one to develop a good U.I. for.
This is a computing universal problem, like dark mode is/was
Since this is not possible yet any UI would be better than none. You could iterate upon that.
Okay what the fuck is wrong with browsers and having the stupidest hotkeys? NO, I would NOT like a shortcut for saving the webpage as html. Please disable ctrl-s by default!
Whoever made the decision to bind Ctrl-Q (something right next to Ctrl-W) as Quit/Close Window needs to be shot.
I just want my backspace key to go back a page in my history when I press it, LIKE IT USED TO BE FOR 20+ YEARS.
But no, this is apparently a “poor UI experience”, so I have to put my hand on my mouse, locate the pointer, move it to the back button, and then click.
At least Firefox allows you to rummage around under the hood and set it back.
That’s fair but you can also use Alt + right/left arrow keys to move forward and back in the page history
Or the side mouse buttons can go forward and back as well. Used to annoy me until I got used to it though
I changed them to previous tab / next tab with xmousebuttoncontrol, it’s awesome {ACTIVATE}{CTRL}{PGUP}
I use these mouse buttons in file explorers and electron apps too, it’s actually surprising the number of apps that works on.
You can fix this without an extension.
about:config, browser.backspace_action, 0
I bet that’s because people trying to type into textbox would sometime defocus, hit back and lose all their text. At least back should go back if there’s no data to lose in the tab !
Apparently you can get backspace back with
https://addons.mozilla.org/en-CA/firefox/addon/backspace-enabler/
I also just gestures to go back with
https://github.com/Robbendebiene/Gesturefy
You draw a leftward line with rightclick and it goes back
exactly, I accidentally lost a few things back when backspace was the default
alt+left is not that bad of a replacement
Yes, if I could I would un-bind all keys, then look at the list of possible actions and devise my own keyboard control scheme to my liking. And then I should be able to export that to a standardized keybinding file format and carry it with me to other computers and preserve my keybindings.
Games often suffer from the same issue.
I’ve even made a list of features a keybindings control should have.
Ability to bind multiple keys or key combos to the same action Ability to delete all keybinds, save keybinds, restore keybinds, undo keybind choice ability to bind any keyboard, mouse or joystick element to any action ability to set if the action is HOLD or TOGGLE ability to bind a key to more than one action ability to quickly find keybind duplicates all actions should have an explanatory tooltip message when binding a key that is already bound elsewhere, there can be a warning, but enter/ok should just bind the key as requested and not unbind the other there should be a way to set a key which will change the keybinding to another layout (I think they are called keymap layers, this is becoming a builtin keyboard feature) reset keybinding to default, should not be something that happens by accident keybind changes should not require pressing "save" for them to take effect it should be easy to unbind one key from an action and to unbind all keys from an action setting a keybind should not be annoying (you click the action, press the key, it is bound, don't ask a bunch of questions)