220 comments

[ 2.5 ms ] story [ 280 ms ] thread
Windows users can do this by pressing Win+digit with open apps or apps you have pinned on the task bar.

Linux Mint, as with many other windows shortcuts, has this also

Yep, I've been doing this for quite some time. Like the author says, it's a genuine boost to productivity.
I use shortcuts heavily, but Win+number is something I never get used to despite knowing them. They way they work when you have multiple X programs opened (say, editors, explorers..) is kinda weird and I ended up just using alt+tab, which is much easier to press anyway.
Microsoft's PowerToys has a shortcut guide that might help get you over that last hurdle towards using win+number effectively. Might want to give it a look.
Yes, I use them for launching "singleton" applications, and Alt+Tab for the rest.
It's superb for toggling pinned programs moment-to-moment, without needing to pay attention to UIs.

On smaller-than-regular keyboards, such as 60% size, function keys already require one extra key held to activate (Fn+<number>, an upside is being closer to reach while on the home row), so they're already both equivalent in keypresses for such users.

Welp. TIL. That's handy, thank you.
It's ok, but unfortunately it doesn't seem to register with "multiples of the same application" open, i.e. if I have Firefox at Win-2 then it's always the first window that was opened (which is fine most of the time) but if I need the other Firefox window then it's alt-tabbing again. No, tabs don't help here, I don't have 50 Firefox windows open, but often a second.
Win+Ctrl+number

You're welcome!

Ha, thanks. Was on Linux when I wrote that so couldn't try it. Also Win+Alt+Number opens a new window of that type. Weird hand twisting aside, this could be useful :)
I think most Linux systems have this too. GNOME definitely, for the applications pinned in the overview, and I would be very surprised if KDE didn't do this too.
Another way of doing this is assign Hyper key to Caps Lock with Karabiner and then use that to set up hyper+X shortcuts to different or macros using Hammerspoon.

So e.g. I have hyper+a for Alacritty, hyper+b for Browser etc.

i3wm workspaces + bindkeys shortcuts come to mind, this is my natural workflow in i3

meta+1-9 to switch workspaces, meta+various keys to launch applications (and can configure i3 to launch them into preferred workspaces if desired)

Yep, this was the way I use it too. I had 'qmk' shortcuts but later moved to hammerspoon approach. Right now trying this set up . Andweeb's 'Ki Spoon' [1] for much efficient workflow. It is still under development

1. https://github.com/andweeb/Ki

I do the same (though I use spacehammer which is built on top of hammerspoon). It's been the biggest game changing in my keyboard-driven productivity. I don't like how it feels non-deterministic to command-tab since the order of the apps change. With a hotkey for each I know exactly what will show up when I hit the key, and better than using function keys, I don't have to move my hand from home row, plus it works when I use an external keyboard (which is most of the time).
This is what I did in stumpwm. And I had a nice macro so I could define an app's command, what key to map to, what desktop it lives on, and whether jumping to the window or pulling it to me was the default.
You can also make your Spacebar (with a tiny delay not to interfere with typing) an app-launcher key, and then you don't even need to move your poor pinky for such frequent space+r for browser space+f for file manager, etc.
Can you please elaborate? How does this not interfere with typing?
Karabiner Hyper key plus Alfred is The Way.
~/.config/i3/config:

  # emacsclient
  set $em_daemon ~/.local/bin/em

  # make a quick launcher for specific things I do all the time
  bindsym $mod+o mode "spotlight"

  mode "spotlight" {
       ## specific files in a new emacs buffer
       # dired in home
       bindsym d exec $em_daemon ~/; mode "default"
       # ibuffer
       bindsym e exec $em_daemon --eval "(ibuffer)"; mode "default" #
       # guaranteed new scratch buffer
       bindsym s exec $em_daemon --eval '(switch-to-buffer (format-time-string "%d %b %Y %H:%M:%S"))'; mode "default"

       ## common binaries
       bindsym f exec firefox ; mode "default"
       bindsym h exec --no-startup-id zeal ; mode "default"
       bindsym j exec --no-startup-id ~/.local/share/JetBrains/Toolbox/bin/jetbrains-toolbox ; mode "default"
       bindsym m exec --no-startup-id mendeley ; mode "default"
       bindsym k exec --no-startup-id keepassxc ; mode "default"
       ## special launchers
       # ipython
       bindsym i exec zsh -c '$alacritty -e ~/.local/pipx/venvs/ipython/bin/ipython'; mode "default"
       # app switcher
       bindsym a exec "rofi -show window -show-icons -theme gruvbox-dark-hard.rasi"; mode "default"
       ## just in case we did this by mistake
       bindsym Escape mode "default"
  }
This. It makes more sense to bind apps to homerow keys with some chain or modificator to "snipe" often-used applications instead of F-keys.
More of a mnemonic in my case, not just homerow, but yeah launching frequented apps has never been more fluid than when I switched to my tiling WM.
You can also get most of this configuration-free in Gnome. [Super] key switches to a spotlight context; one alphabetic letter focuses the most frequently used app with that prefix; and [Enter] key launches it without prompt.
Not if you suffer from RSI and you want to use as few key strokes as possible. I really don't understand this trend towards minimalist keyboards. I want more keys, not fewer.

I mean, a pianist also doesn't put everything on their home row.

Funny, RSI of a different kind is what pushed me to a minimalist keyboard. I pay the cost of increased complexity to avoid the strain of reaching distant keys.
That I do understand. But, for instance, I reach for my F keys with my entire hand, not by doing funny & painful movements with my fingers.
I like what you've done. Here's a snippet from my i3 that I use atleast 5 times a day:

#generate password "pwgen -sy 32" and send to clipboard (uses s to generate more symbols) Also, the NEWLINE is stripped from the end. [tr -d '\n']

    bindsym $mod+F12 exec "pwgen -sy 32 1 | tr -d '\n' | xclip"
Exactly what I came in to say: why reach for a function key when you have ~26 good letters and a bunch of modifiers right under your fingers?
I like the mode idea, wonder if I can get an equivalent in KDE.
Maybe checkout https://vickychijwani.me/blazing-fast-application-switching-.... Personally I use jumpapp which does more or less the same thing. https://github.com/mkropat/jumpapp.
I meant for example, if I hit Meta+o then I could press any single key after that.. i.e. 't' for terminal, 'f' for file manager, 'b' for browser. KDE doesn't support that, as far as I know.. nothing built in, anyways.
True nothing fully built in. With jumpapp installed though and adding Custom Shortcuts, I have the following:

    Alt  B --> Browser (eg Firefox)

    Alt  K --> Konsole

    Alt  T --> Thunderbird

    Alt Z --> zim

    Alt D --> doom
jumpapp will open the app if it is not open and switch to it if it is open. It's way to handy to forgo IMHO. But jumpapp is a dependency, true.
lovely, I never thought of using emacsclient as a global wm entrypoint

ps: I think I need to write an i3-whichkey that displays the current set of bindings because I often forget my own config :)

wait until you find out about exwm
Oh I know about it, I'm just willingly not reading more as I'm already lagging behind :D
(comment deleted)
This is what I was thinking. Someone needs to introduce the OP author to a tiling window manager.
Can people hit their function keys without looking at the keyboard? Sure, hitting F5 to go to your terminal is less keystrokes than e.g. Cmd+tab+tab, but I can't hit anything in the function row without glancing down at my keyboard. And I put a lot of value in looking at my keyboard as little as possible
That's why the function keys are seperated into groups of 3, and you can feel which it is by feeling the gaps between them.
Not on a lot of keyboards.

(Edit: I mean no groupings at all, not about the size of groupings.)

Including Apple's
I've never seen a keyboard that does this. Just took a look around the office to confirm.
Probably a typo—groups of 4 is (was?) standard. My Das Keyboard has this, as did all(?) the keyboards I used as a kid in the 80s and 90s.
yes, i meant groups of 4, there's 3 groups in total!
(comment deleted)
Why though? I can't consistently hit it without looking, but I can hit it with barely a glance. The cost of looking at the keyboard isn't that high is it?
Nope, and I often work in dark conditions so it’s not at all easy to identify the right F-key at a glance.
Mine are in groups of four...
The function keys can be operated by touch if you use them regularly. Source: Former WordPerfect user. And WordPerfect used function keys. A lot.
Same with LTspice. Works better if you have a keyboard where the function keys are physically separated into groups.
You need a keyboard with extra space between groups of 4 function keys. Apple keyboards are horrible in this regard. I hotglued a spacer between groups to help with that.
It's possible to learn to use the function row without looking just like you can learn to use the number row without looking. It just takes getting used to your particular keyboard.

(Not having to "home" on F and J helps.)

at the risk of ruining a perfect keyboard you may super glue some tactile feedback
It's not really a perfect keyboard if you need to super glue something to it.
So, let's say F2 does something important in an open app (e.g. "Rename file" in Explorer) - does that mean it would not work anymore?

Or am I missing something obvious?

The author sounds like they are using macOS, where the F keys aren't used much.
Yeah I use F2 constantly for rename, not just in explorer but very useful in lots of apps. In Unity (the game engine) it's invaluable. Also F3 is generally "Find next" when you have a search box open. F12 and Shift-F12 do code navigation in VS and F10 and F11 are useful in the debugger. There are lots of nice things you can do with the F keys which this tip spoils.
F5 webpage refresher checking-in to say hi.
I bind mine to virtual desktops, but I have the same applications on each desktop all time, so the workflow is quite similar.
No. My function keys are used for things I do more often, like change color profiles, toggle a single app into dark mode, etc.

My favorite trick is not the function keys but other "useless" keys: like Caps is remapped to be Esc (when released before another key is pressed) or Control (when used in conjunction with another key: act as a modifier), my 2 shifts and 2 alt do their normal modifier function (when used in conjunction with another key) but when used by themselves act as PageUp/PageDown Home/End

Going up 2 pages up in the browser? Shift Shift. Top of the page? Alt. Bottom? The other Alt.

For the Control keys, as I don't need that many I've experimented with a few remapping, but BackSpace/Delete are very handy.

Going to the previous page in the browser? Alt+Control.

I’ve tried _so_ many different desktop workflows (including writing two custom window managers!), and I’ve finally settled for the exact same workflow - F -keys bound to my most common apps, all fullscreened. It becomes muscle memory within two weeks, and it’s faster than anything else I’ve tried by a mile. I use Thor for MacOS if anyone wants to replicate it, it’s a no-fuss version of the author’s setup.

If I ever do need to see two things side-by-side, I’ve also got Rectangle for window positioning. A single cmd+caps lock+H/J/K/L for left-half/restore/maximise/right-half is all I’ve found is necessary.

(comment deleted)
Would be nice to have a usb keypad and perhaps a little oled screen in each keycap to implement this… my function keys are pretty overloaded with stuff now.
You know, the CTRL-Fn combinations are usually mapped to virtual workspaces on Linux, what is much more powerful than applications and give you the same kind of speedup.

Who organizes things around application anyway, instead of windows?

Anyway, no, it's bad to remap the Fn keys. They have been used to fast intra-application navigation since they appeared, and they are still in wide use. (Does the author not use application shortcuts?) Combining them with another key is just obvious.

And Ctrl+Alt+F[n] to virtual terminals.

I only mention this because it reminded me of one of my old laptops where Ctrl+Alt+F{1,3,5,7,9} worked, but Ctrl+Alt+F{2,4,6,8,0} didn’t, or the other way round, due to a bad keyboard matrix. That was inconvenient, because I was deliberately using three distinct X sessions at that time (personal, work, and I forget what the third was). For some reason that quite escapes me now, instead of just using every second virtual terminal, I instead added Ctrl+Alt+{1–9} mappings inside i3 to chvt {1–9}. I still occasionally have cause to pull out a second one, though mostly I use workspaces within the one session.

> Who organizes things around application anyway, instead of windows?

macOS. There's no Alt+Tab, for example: no way to switch between two arbitrary windows on the Z-stack¹. The not-equivalent that exists is ⌘+Tab, and it switches apps; the usability of it, vs. Alt+Tab, is horrendous. (It fronts stuff you don't want, covering up stuff you do want.)

There are workspaces … but I have found them hard to get productive with: macOS will reorder keystrokes around workspace changes. That is, the keyboard input "abc ^→ (workspace change) def" is a race condition: typed quickly (within the animation delay), it becomes as if you typed "abcdef ^→".

¹no, ⌘+` does not count.

You can use the up arrow with an application highlighted in the command-tab picker to select a particular window of the application.
How would a window-based ⌘+Tab even work? It'd be a million miles long and take forever to cycle to the thing you want.
How many windows do you have opened? How many things are you doing at the same time?

Is this because you lose configuration if you close them, or because they take too long to open? Because you can't really use so many of them to make switching not viable on a single virtual desktop.

I tend to have a ton of apps/windows open at any given time due to a combination of tasks often requiring a fairly wide array of apps, but also to reduce the friction of context switching to a minimum (even with a lightning fast SSD, closing one set of apps/documents and opening another takes time). So at any given time I probably have apps/windows open for a few different tasks open.

Virtual desktops get heavy usage from me, but (Cmd|Alt)-Tab switching being caged off per-desktop would actually pose a problem, because when I reach for an app with that shortcut I'm not actively thinking about which desktop it's on — I just want to go to it, wherever it happens to be, even if it's been intentionally placed on a particular virtual desktop.

So app-scoped Cmd-Tab works well for me, because the number of entries it has is always reasonable to tap through and it includes entries from all desktops on both screens.

I have 14 windows open, currently. That's not hugely unreasonable to display in a window switcher … not to mention that every other OS manages it? I've had more, but I mean, how many more are we even talking?

(And if you have a huge number more open, well, how does exposé function?)

And the window switcher on other OSes usually orders the choices by Z-order, which is essentially in recently-used order. The window you want is often only one or two hits away.

(And, if not, the one in MATE in Linux is also navigable by arrow keys or by mouse, so nothing's too far away.)

Control+F4 switches between arbitrary windows, in most-recently used order.

You can rebind it in settings, though at that point you may as well get the bonus features of 3rd party implementations.

> Who organizes things around application anyway, instead of windows?

My guess is Apple users, as window switching in macOS is terribly fiddly when compared to application switching.

I have a Stream Deck that I set up to change the LCD's based on what the current in focus application is. I also have a button on each of the custom screens that gets me to the "Main Macro" pad.

I strongly recommend them for programming.

They save me so much time.

No, you're using the computer wrong. See, you should use a tiling window manager with several workspaces and shortcuts without having to look at your keyboard, e.g. Meta+4 to go to workspace 4 where you have your chat apps.
Ha, this was my first thought, though I've got a built-in damper on being that annoying guy who brings up tiling WMs in every workspace conversation.

It is a little amusing to see such a dramatic headline supported by the extremely elementary thesis that you should have kbd shortcuts for your favorite applications.

On top of that, numbered shortcuts for arbitrary apps is way worse than using Super+[arbitrary key].

Yep. Came to say this. Having say, meta+4 for "chat" is far better than having f4 for "a chat app".

You arrive to your chat workspace, your works slack side by side with your favorite irc and matrix clients, all positioned and scaled perfectly every time. Adding more / fewer / swapping apps in is just a matter of invocation, and there the new configuration sits waiting.

The concept is expanded greatly. Shoutout to i3 and xmonad, for my personal setups.

I do this as well, but on KDE. (I flip between KDE and Sway depending on my mood)
(comment deleted)
Any recommendation for Mac?
I've been doing this for >10 years with https://manytricks.com/butler/. Works great! You can also bind snippets of text, scripts, etc.

I can't overstate how important it is to have a keyboard that groups function keys into "islands" of (generally) 4 so you can touch-type them. An ergonomics consultant once observed that the source of my neck pain was that I looked at the keyboard while typing. As a touch-typist, I found this puzzling—until we realized it was just the function keys. :-)

Btw, LaunchBar (https://obdev.at/products/launchbar/index.html) makes an excellent 2nd-level util for things not common enough to merit a single keychord.

Is your tiling-manager also automatically focusing a window on that workspace? And are workspaces limited to a single screen, or do all screen simultaneously change state? Because those are the main reasons why I switch to specific apps instead of desktops/workspaces/tags/whatever you call it. Apps are reliable, but desktops seem too heavy and pointless for me.
It should automatically focus a window on that workspace yeah.

You can assign workspaces to different monitors, if I understand the question correctly

Or, use tiling window manager, but also have symbolic mnemonics for the apps (not have to remember on which desktop it's on, nor change your muscle memory if you change what desktop it's on).

For example mnemonic "M" for mail/email, so my xmonad.hs has something like:

    , ((mod3Mask, xK_m), raiseNextMaybe (spawn "/usr/bin/someemailprog") (className =? "Someemailprog"))
Anytime I hid modifier+M, it will either go to the desktop and window with the mail program, or start the mail program if it's not yet running.

Personally, my mail program is usually on desktop 1, but some of the other program, like Web browser, I move between desktops as needed for tasks. Hitting modifier+W always gets to it.

That's not unique to tiling WM's. In Gnome too, you can just assign the keyboard shortcuts "Switch to workspace <n>" to Meta+<n>.
> See, you should use a tiling window manager with several workspaces and shortcuts without having to look at your keyboard, e.g. Meta+4 to go to workspace 4 where you have your chat apps.

That's basically what I do. A tiling WM and then one modifier key (Super in my case but whatever) and then keys to go to any workspace/virtual desktop I want.

And most of my workspaces are always organized in exactly the same manner, so I know exactly where is what.

> without having to look at your keyboard

Function keys are faster / more direct for people that do 100% touch typing, right?

s,tiling,floating like CWM.

Same keybindings.

win+a = app launcher

win+s = search windows

win+m = rename window

win+1-4 = wspace 1-4

shift+win+1-4 move to wspace 1-4

win + q = close window

win + r = reload cwm

Also, if you are a programmer and use non-ASCII punctuation (Spanish, French, German, Nordic):

        setxkbmap us -option ctrl:swapcaps -option compose:menu -option compose:rwin 
The US layout it's the best for programming, and with that setkbmap trick you can compose á-ú/ñ letters with ease.
I've tried tiling WMs several times and they inevitably drive me nuts because on normal computer screen sizes, windows frequently end up awkwardly-sized adding scrolling requirements that wouldn't be present with overlapping windows that are sized to fit the content…

If I were to commit to a tiling WM I think I'd have to replace my main monitor with a 4k TV large enough to run at 1x UI scale without the UI elements being tiny so each window gets the virtual real estate required without effectively making the "tiling" part of the tiling WM moot by maximizing every window.

This probably boils down to the type of programs one uses though… someone living in chromeless text editors and terminals all day will probably fare better with tiling than someone who spends all their time in IDEs, graphics editors, and web browsers.

> each window gets the virtual real estate required without effectively making the "tiling" part of the tiling WM moot by maximizing every window.

The tiling part is just there to making your windows manageable without the mouse and in a predictable way. Out of my 5 preassigned workspaces, 3 are fullscreen windows, 1 is split in 2, and 1 is split in 3 usually.

When I want a new program running big, then I either 1) close and make space in some workspace I'm not using right now, 2) send it to one of the empty "non-preassigned" spaces, or 3) change the current space layout into "all windows fullscreen" temporarily (with the new window on front, obviously).

My mind works differently. I need to put together a set of apps I'm using for a task, say, editor + browser + terminal for software development, or DAW + bunch of instruments + browser + player to work with music, or, say, GIMP + Krita + Inkscape for graphics.

Tiling helps, but I just have a bunch of shortcuts that tile a particular window just so under xfwm4.

Or, do that stuff but without a tiling window manager (:

That's what I do. I use fluxbox, but even Windows 10 has pretty decent built-in multi-desktop functionality.

> You're using function keys wrong

You are using computers wrong.

Apple is the only one that lacks this. Windows and most linux WM have this for at least 20 years!

windows you just use WIN+[1,2,3,4...] to alternate between your quick launch apps.

Linux obviously you have a myriad of options. Including the top comment here now about using virtual desktops which is even better than application (but you can mix them too!)

And all that while still keeping your Fkeys functionality on each application!

The time I was forced to use a Mac for development was the time my productivity was lowest and frustration highest.

I'm fully convinced that Macs exist only because managers (and wanna be managers) make those decisions. Not to mention i've worked on employeer provided apple, dell, hp, lenovos... macs were the only ones i had to send to IT with failing keyboards, dead screens, etc.

I'm always puzzled by the stubbornness with which Apple refuses to make window management on macOS ergonomic. They think about so many subtler points, they can't fail to notice the elephant in their room. It bothers me every time I have to use macOS.

I wonder who should leave the macOS team to have this finally addressed, like Jony Ive had to leave to make the Macbook hardware reasonable again.

I've mentioned in a previous discussion here that I believe that macOS has the worst UX of all the major OSes. And that belief is mostly because of how horrendous window management is (and Finder but that's a different discussion altogether). The lack of hotkeys for switching workspaces was one of my biggest gripes.

And the culture that has formed around macOS users is to just accept it and buy numerous third apps to fix things that should be a standard feature of the OS.

I honestly had to glance down at my keyboard to see if it had function keys.
I like my hands resting near the bottom of the keyboard, so Cmd-tab is very quick as it is within reach and does not require using my eyes. To use those function keys I’d have to look at the keyboard, which feels like a waste of time.

Though I’d rather have function keys back instead of the touchbar, as changing volume/brightness now requires looking at the keyboard as well as a certain precision/dexterity.

Edit: formatting.

If macOS didn't added a very annoying fade-out/fade-in delay when switching Spaces, you could simply use them with maximized apps and hotkeys for switching them. Another design mistake from Apple.
Sounds a bit pedantic, but this was the reason I could just not use macOS as a daily driver. IIRC, there was a brief period of time where this anti-feature could be disabled by some obscure command, and the switch was instantly. But this was later gone in an update, which ultimately taught me the lesson that one should not be at the complete mercy of some OS updates.
Is there any way to change the delay for that? I would think that tucked away somewhere under the hood there’s a setting that controls the animation duration.

Being able to turn that down or off would be a boon to my productivity.

(comment deleted)
My guess is that there’s a Reduce Motion option in the accessibility preferences like on iOS.
I must be missing something because my Mac OS does not do that. There is a slide-in/over animation, but it's nearly instant.
"Nearly instant" is a massive loss of usability compared to "instant". The quicker the transition the less disruption there is to your short term memory. If it's instant then switching between virtual desktops is almost as good as having multiple monitors. If I have to wait for even a brief animation (and MacOS's animation is painfully slow) I'm likely to forget details, which means I'll have to switch again, and risk forgetting even more.
You can change the default slide-in/over animation to a faster fade-out/fade-in one by enabling "Apple menu -> System Settings -> Accessibility -> Display -> Reduce Motion", but you cannot disable the animation completely.
The function keys are too far away for such frequent operations, so it's much better to map apps to regular alpha keys (some can also have a mnemonic benefit like 'f' for File manager) with a modifier, e.g., CapsLock or even Space (though these would need to be behind a tiny delay not to interfere with typing), with a proper keyboard remapping app like Karabiner
I think this workflow is interesting and the title unfortunately clickbait-ish. We can read about things we find interesting without claiming X is better.
(comment deleted)
In this kind of discussion people often focus solely on frequent actions, but there is one class of action that should have priority for the limited keys: the infrequent urgent. That is, tasks that don't happen that often, but when they do they are very urgent. For me the best example is the sound volume controls, I don't change sound volume nearly as often as I alternate between apps, but when I need to change the sound volume I need it right now, so that is what I'm using my F-keys for.
Agreed.

Some keyboard come with dedicated volume +/-/mute keys which is great and frees up function keys.

I have "screenshotting" as a frequent need -- which in some occassions is an urgent one too :)

I use 3 different types of screen capture (current window, select a region, repeat last region) mapped to F6 F7 F8 on all my machines now which gets a lot of use.

I use sharex and screenshot and region snip a lot. I have it override the screenshot key and then just ctrl and shift for region. Screen. And current windows modifications.

F keys are in my opinion better used elsewhere when you can override screenshot key for screenshots.

I know lots of apps that use those F keys you've overriden.

https://getsharex.com/

That is a fine use, but multimedia keys use 3-7ish (depending on how crazy you go) of the 48-ish function keys readily available. By which I mean, unmodified, SHIFT, CTRL, and ALT, and that's without counting multiple modifiers. I've got volume, mute, pause, fast forward and reverse in there but it's far from the only things I've got. (Well... technically FF, reverse, and pause are WIN-right, WIN-left, and WIN-up respectively, but same principle.) I'm not even close to using up all the function keys.

I've mapped these in something like the last four window managers I use, and they've survived across probably a dozen physical keyboards now. Physical buttons for these things come and go but "WIN-Up" (or Super-Up if you prefer) has always been there.

(I did use a mac with a touch bar for a bit. Was that ever a train wreck for me, as you might expect. Fortunately, people don't seem to be copying them and dumping the function keys. I'm actually perfectly happy with them being a reduced-height bar across the top, as most laptops seem to have now. They don't need to be full height.)

In general, I say to anyone who makes a living on a computer... take control of your keyboard! I don't obsess on not using the mouse at all, but the keyboard can do a lot. There's a lot of keys on there, even ignoring the letter keys (which are densely enough "taken" by a lot of other things I don't tend to override them much).

>…but multimedia keys use 3-7ish…

Mute is the only one that has real urgency. The others are all second tier.

To all of the "No, youre using computers wrong" responses all I can say is they did declare that they are a web developer...
While talking of function keys—

My greatest annoyance with keyboards is that Fn keys (as found to one side of the left Ctrl/Control key; ubiquitous on laptops and common on other keyboards) are always implemented in firmware, and simply don’t do anything with most of the keys, but implement them in such a way that I can’t either.

My laptop’s keyboard has one Fn key, and 82 others.¹ I can only use Fn with 20 of them—one is legitimately handled in firmware², one does nothing³, two emit combos⁴, and 16 emit distinct key codes. The remaining 62 keys? They just get passed through as though I weren’t holding down the Fn key.

I really wish I could use that Fn key just as a regular additional modifier. I use Super+[hjkl] in my tiling window manager, why can’t I use Fn+[hjkl] instead if I want to?

Yes, I know that shifting it all from firmware to driver would cause inconvenience in some situations. Look, perhaps we could at least begin by adding a key code for Fn when it’s tapped by itself or with any of the 62 keys. I dunno, Hyper or something (is Hyper a thing at that level? or is there some other extra modifier available?). That’s sufficiently pragmatic, right?

—⁂—

¹ Asus Zephyrus G15 (2021), GA503QM. I included the power button as one of the 82 keys, as I use it that way: I have XF86PowerOff switch to a Sway/i3 mode where pressing it again shuts down, r reboots, h hibernates, &c. It’s fun being like most projectors with their “press the power button again to show you actually meant it”. But you know my favourite key on the keyboard? XF86AudioMicMute. Really not looking forward to the inevitable day when I get a laptop without one again.

² Fn+Super disables/enables the Super key. Windows things. Wish I could disable this feature, because just occasionally I accidentally trigger it, and I will never want it.

³ As far as I can tell, Fn+Space just gets swallowed. evtest on the appropriate /dev/input/event* file doesn’t show anything being emitted.

⁴ Fn+F6 = Super+Shift+S, and Fn+F9 = Super+P, because those are standard Windows shortcuts. I don’t get why they did it this way, though they’re both very common, given how much more interesting stuff they’ve done than most others. Mostly I’m just grumbling about duplicates because I already want Super+P to do something else, so now Fn+F9 is a dead weight, though I would otherwise have used it.

If you haven't already gone down the custom keyboard rabbit hole, I suspect you might like it. There's a pretty large enthusiast community out in the world, and there's a lot of ways to go custom - build your own from scratch, use a kit, use a pre-built with flashable firmware, etc.

The firmwares used (e.g. QMK) allow you to build the sort of thing you're talking about into your keyboard and more.

Custom keyboards are great. :-)

In addition to custom firmware, the other benefit is some custom keyboards have designs which are more coherent than typical keyboards. (e.g. replacing the gigantic spacebar, with more keys so that the thumbs can be more useful).

Seems like a cool thing to try! Where should someone curious like me start?
The best productivity hack is to get a keyboard with programmable QMK firmware and remap the keys however/wherever you want.
For the macOS folks, I prefer rcmd to accomplish the same thing with less cognitive overhead: https://lowtechguys.com/rcmd/
I have this set-up but after alt-tabbing for 20 years its kinda hard to stop.
I haven't ever noticed a productivity hit from alt-tabbing.

Many of the devs I work with use Spaces and the three-finger slide to move between apps. However this doesn't work if you're not using the trackpad or Magic Mouse.

Additionally, since I'm usually just moving between a few apps (VSCode, terminal, browser, Teams) it's usually pretty easy to just alt-tab or alt-tab-tab with no loss of context.

Me too - I just think that its a main factor of my left wrist pain because one does it maybe a thousand times per day...
Yep, I can certainly recommend ⌘ rcmd as well!

Source: am developer of the app ^_^

Came to post this. Haven’t yet tried their Hammerspoon-integrated feature but I’m interested.
This kind of use case should have been what the Touch Bar supported.

I was actually excited when the Touch Bar came out because I though I would finally be able to just have named buttons, even click-through menus, instead of having to memorize what f1-f12 did on a given app.

Imagine if instead of “ok, f1 opens my [some application], I just need to memorize that” you could just add a button that says [some application]”.

Sadly the support for the Touch Bar was pretty middling to poor.