Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Does anyone use keyboard/mouse extra buttons for coding?
107 points by matt_s on July 27, 2021 | hide | past | favorite | 155 comments
Usually gaming mice have a few extra buttons that can be mapped and some gaming keyboards have extra keys for mapping/chaining functions to them in games. Of course there is also the world of people that build custom keyboards. Has anyone used these extra buttons/keys for programming uses? Is it helpful and what are the details?

My mouse (Logitech G604) has six side buttons, three extra top bottoms, and has the following programmed on it:

- copy

- paste

- enter

- forward

- back

- Zoom mic toggle[0]

- OSX screen left/right (activated by pushing the mouse wheel left or right).

- Volume up/down (on top of the mouse)

Screen left/right is the most important things I do with the mouse aside from the normal pointing and clicking. For the side buttons, copy, paste, and enter are the overwhelming winners. These alone probably reduce the back and forth between keyboard and mouse by half. I regularly forget that the other three are there.

In retrospect, the correct answer is to select whatever key combinations you end up alternating back and forth between your keyboard and mouse to enter and program it into your mouse. This will reduce switching, which is faster and reduces strain.

My keyboard (Ergodox EZ) has a “hyper” button on it, which is the combination of every modifier key on my keyboard. This lets me program shortcuts like ctrl+alt+shift+command+o, which is pretty easy to reach and guaranteed to have no collisions. I currently only use this for o (optimize imports) and i (indent document) in IntelliJ. It’s a neat trick, but the mouse stuff above has so far been more important to me.

Then again I’m also a manager now, so take that last bit with a grain of salt. I might do more keyboard wizardry if I was a full time engineer still.

0 - This was really useful right up until I built a custom zoom control box with toggle switches (with covers!) for my lights, camera, and mic. Now it’s unused, but I haven’t found anything I do commonly enough to justify putting in this spot. I need to make a post showing this off one of these days.

Same mouse, different functions: Left scroll wheel is screen left

Right scroll is right screen

Other buttons are: Show all windows Show all current windows Lock screen Screenshot cursor (shift alt 3)

The GHub software was a pain and I had to use macros and keyboard maestro to do some things.

Overall I love the mouse (bluetooth is still wonky, I use usb dongle).

Screen left/right with apple magic mouse is what I use the most.

As a developer, I have 2 screens and multiple desktops per screen.

Screen 1: Chrome on desktop 1, VS Code desktop 2.

Screen 2: Database on desktop 3, Postman desktop 4, Slack/Email Desktop 5.

Post the Zoom control box!

I’ll make a blog post soonish and post it here. I’m mostly putting it off because it’s a pain to open and photograph.

Pretty much the same mappings here. Excellent mouse!

I have a dedicated macro pad (a duckypad https://www.tindie.com/products/dekuNukem/duckypad-do-it-all... ) and I use it extensively. I have macros for lots of IDE commands, window management, launchers etc. I'm not so great at remembering keyboard shortcuts, so having the macro pad, especially one with a screen that can tell you what each button is, is a boost. I use every key on my pad frequently.

I have a programmable keyboard that I could use to achieve the same thing, but I really like having a dedicated device and find that I use it more than if it was just a function layer in QMK. IMO this is also one of the legit uses of individual key RGB on a keyboard beyond just bling-- you can color code keys.

I have a Moonlander from ZSA. Flippin' sweet keyboard.

I have a layer for mouse movement with wasd. On the same layer, I've bound hjkl to the arrow keys, so I can get vimish movement wherever. Below these keys on the same layer I have some browser navigation shortcuts.

I use evil-mode in Emacs. The key below my left thumb is control on hold, escape on tap, and it works beautifully. On my left thumb cluster, I have a key that's option (meta in Emacs land) on hold, and option-x on tap (so I can easily hit M-x in Emacs).

On another layer I have hotkeys to manage window tiling. I use Magnet for macOS; works fine for my needs. One thing I wanted that Magnet didn't have was a half-width-but-centered hotkey; I was able to build that into a macro on my keyboard.

Keyboard macros are a beautiful thing. QMK firmware is the best!

My layout: https://configure.zsa.io/moonlander/layouts/xK7zR/latest/0

The Moonlander is great.

I have Cmd+Shift+R (Refresh) and Cmd+Alt+I (Dev tools) on the two big red keys. On my navigation layer I have distinct keys for emacs navigation: C-x [, C-x ] (page forward/backward) and ESC f, ESC b (word forward/backward).

And I have Ctrl+Cmd+Space (MacOS emoji picker) on a single key.

My layout: https://configure.zsa.io/moonlander/layouts/4DrXo/XxmmW/0

Oooh, the emoji picker is a great idea! I just added that to one of my layers. Thanks for the tip!

Do you ever turn on chip-tunes mode? The first time I did I couldn't remember how I turned it on. That was a fun few minutes

I had that on for a minute to play with. There's a keycode called "Music Toggle" in the Oryx configurator. I don't think I have that on any of my keys right now.

I also have a moon lander and use Emacs. Thank you for the ideas!

I have a Dygma Raise which is a ~60% keyboard and uses layers. My layer 2 is full of useful macros. I need macros even for the keyboard arrows because my Keyboard doesn't have arrows (arrows are layer2+hjkl or layer2+esdf). I also make heavy use of custom mappings in Vim and Bash aliases.

I have a macro for ctrl+shift+v on my Keyboard since it's the Evolution (Linux mail app) shortcut for moving emails. I also have macros for ctrl+alt+left and ctrl+alt+right to switch desktops more easily.

I have a vim macro "<leader>ji" that does "<esc>:e src/dir/i-always/go/to/prefix_" and "<leader>jv" that does "<esc>:e src/other/common/dir/filename_prefix_". Also "<leader>r" types "Reviewed-by: dyingkneepad <dyingkneepad@domain.invalid>".

I also sometimes think about implementing a keyboard macro that does a BnB combo in Skullgirls :). Maybe one day lol, but that's cheating and I wouldn't do it online (also I'd get screwed on whiff or block). Maybe I could use just Xautomation for that (that uses libXtest).

But the most useful of all, by far: alias s='cd ..'

How about other QMK users share their mappings in this thread? Here's mine[0]

I've been on a minimally mapped POK3R (60%) for years (pretty much CL=l2mod, l2mod+hjkl=arrows). It's been OK but still can't touch-type properly and even after years as daily driver still prefer low-profile laptop style keys.

Just switched this week to a self-built Lily58proc Choc[1] for better ergonomics and forcing myself to touch-type. My layout is still a work in progress, I still type very slowly, and would love to see other coders' mappings for inspiration :)

[0] https://gist.github.com/3nprob/41bfaca6dd712de673a140b2b3be3...

[1] https://github.com/kata0510/Lily58

That seems like a pretty neat keyboard, thanks for the tip.

> I also have macros for ctrl+alt+left and ctrl+alt+right to switch desktops more easily.

This is done by Super+h and Super+l over here. To bring the active window along with, add Ctrl...

I kept mistaking one of my shortcuts so I made the wrong version play a sound file of John Denver yodeling. It still gets me sometimes :-)

I picked up similar cd aliases alias 1='cd ..' ; alias 2='cd ../..' and etc...

I'm not japanese (but I've got japanese family members) but I do use japanese keyboard since years and years and years.

I use it as a qwerty keyboard but... I use the extra functions keys as "super" and "hyper" in addition to ctrl/shift/alt. I love japanese keyboards because the space bar is tiny so the modifiers left and right of the space bar are easy to reach.

The "super" modifier is only for shortcuts related to my window manager (switching virtual desktops / arranging windows / launching programs etc.).

The "hyper" modifier is for my custom macros/functions (which I call from Emacs).

It's nice because these additional modifiers never clash with any other shortcuts.

And as I type this I see in this thread I'm not the only one using a japanese keyboard this way.

Now... In this day and age I probably should get a custom keyboard or make my own keyboard but... Years and years ago it wasn't that easy to make your own keyboard so back then it made sense to go for the laziest thing that would provide me with more modifiers and with "easy to reach with the thumbs" modifiers (thanks to the small spacebar). And the lazy thing to do was simply to use a japanese keyboard.

Your strongest fingers having the most buttons makes the most sense to me AND YET you had to switch to a Japanese layout to make it happen!! This is why I like Apple's relatively small 5U spacebar and why I eventually switched to ortholinear and then vertical stagger.

I own a Varmilo VA88M and I would like to replace the spacebar with a smaller one to have a bigger left alt key, similar to the MBP keyboard.

I've already googled for a shorter spacebar keycap, but without luck.

Does anybody have a suggestion?

I never noticed the extra modifiers on Japanese keyboards. That looks incredibly useful (in a tiling WM at any rate)

I am definitely putting a Japanese layout trackpoint on my birthday wishlist.

Yes! I used a German keyboard briefly and loved the extra keys. Since I'm more interested in Japanese, though, my next Mac is going to definitely have a Japanese keyboard.

I’ve really taken to hyper key idea on the Mac. It’s basically a shift-Control-command-option combo bound to caps lock, together with the escape key. Tapping on caps lock generates esc for all your Vim/evil needs, while holding caps and another key results in a pretty unique key combo that I’ve never had clash with anything else.

Super handy.


I’ve been doing this lately too. I’m still on a regular keyboard but preparing for a 60% mechanical by getting used to hyper+hjkl for cursor movement.

I found another project, which also uses Karabiner Elements, to be a good starting point for customization. I especially like moving system-wide type shortcuts like 1password to it so I have fewer conflicts with editor plugin shortcuts.



1. I change platforms too frequently, so I cannot have a custom setup; and

2. when I try to run distributed with VNC or MSRemoteDesktop, there are too many conflicts when configuration, so it makes a mess.

If you only ever work on one computer, it is a great idea, but you will find it challenging to acclimate to another computer.

This is my problem. I did find a programmable keyboard at one point that actually stores config within the hardware, so you could store hotkeys and move between OS's, but most of these sorts of things require installations and some kind of platform-specific config. I gave up using my macro keyboard professionally after taking on a client that uses Macs, with which it isn't compatible. Agreed with your last point though. If your environment is stable it can definitely help.

I had a fancy ergo keyboard + left handed mouse + nostromo pad that I used in the ... 2000's maybe? loved it. had macros for all kinds of stuff for VisualStudio, I was an automation god among myself. Then my next job was like: different PC every day. Feh.

Along the same lines:

1. How often do people use 'home' and 'end' keys ? I don't, but I know quite a lot who swear by them. Do they actually increase productivity ?

2. Should caps lock be removed as a large button in the most valuable real-estate-area on the keyboard ? I literally never use it. Even when typing long ALL-CAPS sequences. I just use 'shift' instead.

3. Do you use space bars with both hands ? I only use space with the right, and IMO, it could be shorter.

> 1. How often do people use 'home' and 'end' keys ? I don't

I'd say, what are you coding where you don't benefit from home and end?

I use both a lot while coding, usually in conjunction with ctrl+left or ctrl+right for quickly positioning the cursor where I want it, or ctrl+home or ctrl+end to quickly go to the top or bottom respectively.

> 3. Do you use space bars with both hands ?

Yes, not often while programming, but often with other applications or games where I have right hand on the mouse.

> what are you coding where you don't benefit from home and end?

The kind where my typing speed does not affect my output. Also, the type who doesn't use command line text editors.

I work in ML and mostly use python. Very rarely do I need to be efficient in how I navigate my documents/code, because it is rarely the bottle neck.

Lastly, all my laptops have both end/home positioned awkwardly, so I never found it quite ergonomic enough for my purposes.

This is also my case. I spend all my day on a computer (and then the evening for fun) but a lot is thinking.

I always wanted to learn to touch type but never needed it so much that it would be worth to dedicate time for learning.

I do code a lot but I am a poor dev so I spend time thinking how to do things out looking at the docs (despite coding for 30 years).

It was even more obvious when doing my thesis (physics). 70% time thinking about code, 30 actually typing

I guess I picked it up in the back command line era, though code editors haven't changed that much since Turbo Pascal. I use them just as much when writing Python as anything else.

But yeah, laptop, I guess that explains it. I don't use home/end any where close to as much when on a laptop. Fortunately I seldom need to use them.

> I'd say, what are you coding where you don't benefit from home and end?

In emacs, it's just Ctrl+a and Ctrl+e to go to beginning of line and end of line respectively. Those don't involve taking my hands off the home row, so they're much faster than lifting a hand up to go hit Home or End.

> In emacs, it's just Ctrl+a and Ctrl+e to go to beginning of line and end of line respectively.

This also works for most terminal emulators unless you've customized your bindings. It's really handy to go-to the beginning or end of a terminal command.

> they're much faster than lifting a hand up to go hit Home or End

Hmm, I see jumping by words is Alt+f and Alt+b, which seems more awkward to follow up with than Ctrl+Home followed by Ctrl+Left, say. Then again, mostly depends on time spent I doing it assume.

Maybe it's just my personal workflow, but I rarely feel the need to go forward/back by word. Beginning or end of line are common and useful, but otherwise if I want to get to a specific word/line that I'm looking at, I will mostly do Ctrl+s to search and basically jump there immediately or in one or two hops (or Ctrl+r to search backwards). It's hard to convey, but it feels less like "navigating" or "moving" around a 2-dimensional grid of text and instead just teleporting to exactly where I want.

1. I use home & end a lot! Actually, I've switched the bindings (in ahk) of Page Down & End. So my keyboard is Home-PageUp and then Page Down-End. The reason is that intuitively, I think Home should be to the left of End, and also Page Up should be above Page down. Having them at opposite corners accomplishes this, even if the bindings are...a little bit weird. However, I rarely use PageUp/Down. (I do on occasion, just not often.) I also use Ctrl+Home/end a lot to get to the start or end of a document or textarea or whatever, including coupled with shift followed by backspace. 2. Mine is rebound to Control and has been for over a decade, so yes but not actually, it should be Control. I would probably like the actual Control key to be an alternative modifier key because atm it's useless... 3. Just right hand.

1. I've been using home/end extensively for decades. I had a Windows computer since early 90s and started learning to code on notepad so I never learned ctrl-a/e until later on, so I stuck with home/end. In modern days work laptops are alwasy Macs so in fact I've had to map home/end to work like it does on Windows (go to beginning and end of line).

2. Similarly since I now use a Mac more often than Windows, I just map Caps Lock to Esc. This has been particularly important due to the Esc key having been moved to the touchbar. I've gotten very used to reaching for the location of the Caps Lock key when I need to press Esc.

3. I do use space bars with both hands.

1. I use home/end a lot, both for text editing and jumping to the start/end of lists with keyboard navigation.

2. I've tried rebinding to escape but just got frustrated by inconsistency, so now I just leave it unused.

3. Thinking about it, I have two modes, "gaming" where my right hand is in the mouse and left on wasd, where I tend to use my left thumb for spacebar, and "working" where I have both hands on the keyboard and just use whichever is most free at that point.

On my laptops (Windows and Mac) I remap right-ctrl/right-alt to home/end. Couldn't live without it, I use them hundreds of times a day to jump around code and the command line. Also very handy when combined with shift to select everything before/after your cursor.

Home and End are available almost everywhere in macOS with Ctrl+a and Ctrl+e. When I use someone else's computer I inevitably end up typing A and E within about 2 minutes since I'm used to caps lock as control. So I guess every two minutes or so?

I thought everyone remaps CAPS LOCK to ESCAPE?

Mapping CAPS LOCK to CONTROL is another popular option. But I suspect when one takes into account the entire population of computer users, CAPS LOCK remains CAPS LOCK and likely largely unused.

I use CAPS LOCK as language switch button.

I use ⌘-1/⌘-2 for English/Russian layouts. It's better than using a switch key because it's deterministic - you don't need to look at the layout indicator or whatnot.

The vast vast majority of people aren't remapping any keys at all.

Maybe you would also be interested in remapping a bit.

1. Almost never. ^$ and Ctrl+ae fill 90% of use-cases. My Home/End and PageUp/PageDown are on a secondary layer.

2. The button itself is useful, the CL function is useless. I remapped mine to be a layer modifier (e.g. hjkl become arrow keys, and the above)

3. Training myself off it atm. I have a split keyboard where left thumb is Space, right thumb is Enter.

Layout and keyboard in my other reply [0]

[0] https://news.ycombinator.com/item?id=27961382

1. Never. It doesn't help that they're hidden behind fn-← and fn-→ on my laptop. Years of Emacs usage acclimated me to using ctrl-a/ctrl-e and on the handful of programs that don't support it (like Word), my first step is to make them new shortcuts for that app.

2. Yes, but what should go there? One of my first steps on a new Mac is to go to keyboard/modifier keys and disable caps lock.

3. Yes, although I'm noticing that I favor my left thumb for spacebar usage. I think it's wide because of the variety of ways people use it.

You might benefit from a Kinesis Freestyle Pro keyboard.

The spacebar is split (the whole keyboard is actually) and all the buttons are completely configurable: remap and macros.

If you don't use home and end keys, or the left-side spacebar (or any key!) you can bind them to whatever you want.

Based on the wear on my spacebar, it looks like I only use my left thumb to hit space and now that I'm typing this I can clearly see that this is the case .

Dear Apple, please reduce the size of the spacebar.

I use home and end a ton, but I didn't until about a year ago. They're fantastic, and it's a bit faster than Esc + Shift-I/A in Vim, plus it works on everything (except on MacOS).

1. I use Home all the time, to get to the beginning of the line.

2. I removed the Caps Lock key from my "Das Keyboard". Kept hitting it by accident.

1. I use cmd + arrow or alt + arrow ALL the time. to the point where i fumbled around on non macs.

As a 60% kB user I use caps as my fN and can’t say I miss it at all.

Given the number of buttons afforded some mice, you could technically implement a microwiter keyboard in full upon just the mouse. I say technically possible, I personaly never played with the https://en.wikipedia.org/wiki/Microwriter in it's day or since, though read reports of good typing speeds.

But then, why stop there, just use two mice as such per hand and have the craziest developer desktop going.

Another article that has info upon one handed keyboards like the microwriter https://skippy.org.uk/home-made-keyboards-part-2-more-ideas/

Blast from the past! My parents had an AgendA around 1995. I remember making a "Choose Your Own Adventure" game for the organizer part and learning the chords.

How did you get on with the keyboard? Also feel the advent GSM mobiles which brought T9 input killed that off. But read reports iirc of 60wpm being achieved by many, which whilst not epic, is darn impressive for one hand. Though looking at the Morse code wpm world record, it seems like track and field skills from the arcade days were left untapped in today's keyboard days.

I was around 12 years old, so not super well :) But oddly I ended up working on text entry after graduating from college, working on a system called Dasher.

I type qwerty around 130wpm, so I appreciate the arcade skills. I'd love to get into stenography but it seems like the amount of memorizing involved is akin to learning a new foreign language, too much to learn as a hobby.

> I'd love to get into stenography but it seems like the amount of memorizing involved is akin to learning a new foreign language, too much to learn as a hobby.

Why learn when you can invent your own shorthand, more natural for you and unless you want somebody else to read the shorthand - not an issue and even then can just translate with a script.

When I started out programming (COBOL) in the early 80's we had a choice of typing coding sheets to send to the typing pool or use one of the terminals and type them ourselves.

So I did my own shorthand and a script (was Honeywell Bull DPS88 running GCOS 8) that would expand the shorthand into the code, of which for COBOL, was lots of typing tokenisations to be done. I expanded it to do most of the Identification etc, pop the date written in and that. Heck I even had it generating a test framework for the code and all this allowed me to churn thru programming faster than the analysts could keep up. Personal best was 26 programs written, tested and signed off by auditors in a day. In a way I kinda wrote what would be known as a framework in a sense in the end as had common aspects like error handling handled automaticlly by the translation. So in the end I wasn't having to type much in for some programs.

Moral being, why learn something complicated when you may very well be able to invent and use a more natural form yourself and evolve it from there.

> Why learn when you can invent your own shorthand

If I don't want to sign up for learning a new language, I should hardly sign up for creating one :)

I have a Logitech G700s mouse with 9 or more programmable buttons and different profiles based on the window in focus. My most useful mouse binds are copy/paste/enter buttons, backspace on the wheel tilt left. Win+tab on wheel tilt right helps to move around open windows very quickly. Also have 'q' and 'exit' for when I'm perusing terminal windows without my hands on the keyboard.

Paired with a G15 keyboard with a plethora of buttons, which include shortcuts to my most common applications as well as switch desktops left/right.

I actually use a joystick for shortcuts. I have a few commands triggered by certain joystick sequences, such as Right-Down-Diagonal-Button deletes the remainder of the line to the right the cursor. This is accompanied by a sound effect.

I love my keyboard setup! I made a little demo so you can see if you like it too: http://jkaptur.com/layout/

To me, most shortcuts gain nothing by being on mouse rather than the keyboard (which, of course, has much more room). However, when a shortcut modifies a mouse action or otherwise comes into scope while mousing—that is when you get useful leverage.

Here are the best uses I've put extra mouse buttons to:

1. Double-click. Great for selecting word-at-a-time and really relieves the RSI. If you double-click the double-click button, it turns into triple-click, which selects paragraph-at-a-time.

2. Close window. I live the "window closing lifestyle". If I'm not slamming a browser tab, I'm closing an editor or Finder window—which I often opened by mousing to a link, icon, or existing window a split second before. In fact, I can get quite a furious window-closing hurricane going, targeting window after window, focusing each with a click and then hitting the close-window mouse button. It's a great way to clean up after finishing a task.

3. Option-click. I use this almost exclusively for clicking on a different application and hiding the previous one, a standard Mac behavior that becomes smoother by being one-handed. It also activates rectangular text selection in BBEdit, as a bonus.

4. Exposé/Mission Control. Hold a button, have all your windows flatten out, then mouse to one to bring it to the fore. I have several quicker ways of unearthing windows, but this is a nice fallback when all else fails.

Those are the big 4. I have extra buttons I've been auditioning for some other bindings like Open In New Window and Back, but what I really wish for are...

5. Grab-scroll. I had this with the old ADB Kensington Thinking Mouse driver. Hold down a mouse button, yank on some scrollable content, and the content would follow your mouse pointer, just like today's 2-finger trackpad gesture. If anybody knows how to set this up today, I'd be grateful to hear it!

6. Drag window. It seems like we're all looking for faster ways to arrange windows these days: tiling managers, grid snapping, hotkeys bound to specific positions. In my perfect world, I could drag a window anywhere I pleased but without the expensive targeting of the small draggable region first. If I could place my pointer just vaguely over a window, hold a certain mouse button, and drag the window thereby, I'd be thrilled. I've never managed to set this one up but would love to hear ideas.

Funny enough—and maybe this is just an artifact of Mac software design—I've never found so-called "right click" profitable enough to actually earn it a button. :-)

Re: Drag window: One of the only things I miss about the Sun Solaris workstation I used back in my embedded days was the "Front" key. Hover the mouse over a window, hit "Front", and that window would be moved to the top of the window stack, unless it was already on top in which case it would be moved to the back. It was extremely useful both for raising a window when you could only see a little corner, and for cycling through all the windows at a particular point on the screen. You also didn't have to make it so clicks would raise a window, and then you could have a terminal in front of a browser window and you could click around in the browser without losing the terminal.

There are many things I do not miss about my SparcStation. Like, opening a web page with too many GIFs in Firefox, which would lock up the window manager, and I'd have to use a colleague's machine to telnet to my machine so I could `pkill -9 x11`.

When I was using Ubuntu I could drag a window from anywhere by holding Alt and clicking anywhere on the window. I had to use this frequently because due to resolution switching bugs I’d end up with windows where the window controls were entirely off screen.

I believe there is a Windows tool that implements Alt drag as well. On OS X I remember seeing some work in progress attempt but not sure it was ever fully polished.

I've never used them for programming / building things, but that's somewhat based on limited type of development I did. I can see macro commands being useful if I frequently need to recompile / deploy / make / push / merge / whatever. More structural type things than strict programming which I've found not repetitive enough.

That being said I've used programmable keyboards extensively for macros when in sysadmin / ops roles in the past though, from simple one line commands and shortcuts, to "do 80% of work for me". Never used programmable mice though as the buttons seemed too fiddly / inconsistent for me to be 101% which one I'm hitting.

The main reason people don't do this is that your fingers are on the keyboard most of the time, and there are already plenty of buttons if you learn how to hit Ctrl or Alt smoothly (e.g. remap Caps Lock to Ctrl) and how to create new shortcuts.

Yes. When you type 8 characters per second, it makes no sense to have to unglue your hands from the home row.

On the other hand I find that raw typing speed has barely anything to do with development speed.

> On the other hand I find that raw typing speed has barely anything to do with development speed.

I agree it's all about the thinking. However moving my hand off the keyboard slows down my thinking: I might have to move my eyes to find the mouse and then re-orient my hand on the keyboard, all of which is a small cognitive distraction. I tried the Mac trackpad and while it's quite responsive, it's still moving off the keyboard.

That's what makes Emacs so powerful: the primary cursor movement is search and the next is structured movement, not character based. All the semantic movements (jump to definition and the like) are tiny keyboard commands. I don't use the arrow keys except in other apps.

Navigation is hands down the most important aspect of reading programs or large documents. I've failed to find a tool that is superior to vim modal editing implemented. I use it for everything from Firefox to PDFs to vims and wouldn't change that.

I use KMonad for achieving QMK things on ordinary keyboards.


A couple of things

- Space Cadet Shifts

- Ctrl and Escape on Caps Lock

- RAlt + hjkl as arrow keys

- SPC + home row as number keys

I have hold/tap set up on all my modifiers on my Iris[0]. I got the idea from the (modern) Space Cadet[1] keyboard. From inside to outside my thumb buttons are (when held) Command, no hold key, Option, and Hyper (where hyper means all 4 modifiers at the same time. On tap they all do things I use a lot: the command keys are Esc and Enter on left and right. The no-hold-keys (that my thumbs rest on) are backspace and space. The option keys are opening and closing braces. The hyper keys are opening and closing angle brackets, but since I don't do any JSX or Html any more I might make those square brackets. I have control keys just outboard of where my pinkies rest (where you'd normally find capslock and apostrophe) and those are, respectively, double quote and apostrophe on tap. Shift are in the normal place but on tap they are parentheses.

In other words: every key that has a hold behavior also has a tap behavior. Several keys with tap behaviors also have hold behaviors for switching layers: home row left hand keys change the right hand to arrows, numbers, or symbols.

[0] https://stevelosh.com/blog/2012/10/a-modern-space-cadet/#s17... [1] https://keeb.io/products/iris-keyboard-split-ergonomic-keybo...

Sometimes I get frustrated with the button combinations that I have to press over and over again.

I don't do it every day, but creating a macro can help a lot in that situation.

I have a lot of Razer gear and also a few pieces of Cooler Master gear.

The real frustrations I have though involve disabling or changing buttons in deeper ways. For instance, I love the alacritty terminal, but it uses ctrl+shift+c and ctrl+shift+v to cut-and-paste. One of those buttons opens the dev tools on my browser, which I could tolerate if it didn't also scroll the browser to the top, losing my place. So disabling keys or remapping them in applications helps.

Another pet peeve is that I fat finger the "insert" button on a laptop keyboard about once per minute so it is a candidate for disabling. Tools from the likes of Razer and Cooler Master only work with their gear, even Alienware's tools only work on the extra buttons and not on your existing buttons. So you need something like


As for the mouse the value of remapping buttons is more limited IMHO since the act of pressing a button will usually cause a little bit of motion and screw up the alignment of what you were doing.

This is a little different than what the OP is asking but - I programmed an Xbox controller so that its buttons can act as left and right mouse buttons. This helps relieve fatigue in my right hand when I am working on mouse-intensive CAD work like laying out circuit boards etc.

Write-up here : https://iskender.ee/2020/12/27/Dual-Mouse.html

My mouse has built in back/forward buttons, which I use extensively to go back and forth through files. Occasionally use middle click for paste.

Nah, no need-- I just use a text expander, but it's the same idea. Set up a "macro" where you write a shortcut and it expands, such as writing ";gita" and having it expand to "git add -A"

Currently I like Espanso (mac) for its simplicity. Previously I used aText (mac) and PhraseExpress (windows)


Try KeyboardMaestro for Mac, it’s amazing. I was a long-time Textexpander user and switching for KeyboardMaestro was very worth it. I think it’s the best software of its kind, wish it was available for Windows

Ooh, Espanso seems very nice - simple, and easy to work with (cool that it works on all three OSes). Nice to be able to insert the output of shell commands into text, anywhere.

I use the Red Dragon M990 MMO mouse[1] (with 16 side buttons) for daily computing/productivity. I bought it just for funsies just to see and it was a game changer (pun not intended). Its so good that I have two different mice (the same model) for work & home.

I heavily use the Windows virtual desktop feature along with window snap, so I bound 4 buttons just for that. I also have alt-tab, copy, paste & go bound to dedicated buttons. I have a bunch of buttons also bound for media playback controls (pause/play, vol up/down, next/prev track) since I'm usually listening to something when I use a PC. Then I have some buttons to launch highly useful programs such as Everything Search [2].

I don't play games anymore, but when I did, the mouse supports upto 5 profiles, so using the four programmable buttons near the scroll wheel, I can cycle through various profiles (all color coded too!). So effectively I have 16x5 = 80 dedicated buttons that I can customize based on my computing context. I had profiles dedicated for in-game keys and shortcuts.

But wait! There's more!

I found Stroke Plus [3] which a super-duper amazing program that allows you to create global or app-specific mouse gestures. So fortunately, alot of programs share common key commands such as Find (CTRL+F), Search & Replace (CTRL+H), close tabs, cycles tabs, new window, close window, etc. So I have mouse gestures controlling that. Then I have app specific gestures for windows explorer, so browsing files is super quick.

This is a super amazing setup for me and made me 10x more efficient in navigating things and generally getting things done. When I watch people take two seconds to "hunt and click" various on-screen buttons, tabs, etc....its literally painful to watch how slow and inefficient the process is.

I cant and wont go back. The only downside is that this mouse is wired, so if they ever offered a wireless option (with decent battery life), it would instant buys for me.

[1]: https://www.google.com/search?q=Redragon+M990+Legend+mmo+mou... [2]: https://www.voidtools.com/ [3]: https://www.strokesplus.net/

I map the forward/back buttons to "Go Back" and "Go Forward" in Visual Studio Code. If I cmd+click a method or variable, I can press back to go back to where I was.

Technically I used the logictech software to map those buttons to "ctrl+-" and "ctrl+shift+-" which are the keybindings for those actions.

I use MacOS and Windows for work. I’m quite minimal on the keyboard front, I use a HHKB, no extra buttons whatsoever.

But for the mouse I use a Logitech MX Master 3 (all 3 in the series are worth your time). All the buttons are programmable, it is also possible to create application specific layouts, which are only ever used when the program is in focus.

Where it really is cool is when you configure a button as a gesture button, which maps 4 additional actions onto the button if you hold it and move the mouse either up, down, left or right.

I map desktop management to the lower thumb button, press it and move the mouse in a direction to move between desktops, spread all windows on a desktop, and spread all windows belonging to a specific application. I use the top button for media controls, play/pause, next, back, digital volume up or down.

It’s really neat.

I have a Moonlander keyboard. Here is my layout: https://configure.zsa.io/moonlander/layouts/wEX6q/latest/0

Anyone care to share theirs?

I use IntelliJ, the forward/backward button on mx master 3s is extremely helpful navigating code

I have an Ergodox Moonlander on which I have a few of the macro keys mapped to specific functions within PyCharm like auto-formatting, linting and type checking.

It’s helpful because I don’t have to remember key combinations and it means much faster feedback (and fewer broken builds).

It's nearly perfect. Just wish Ergodox would support Bluetooth.

I use a Corsair M95 mouse. I've programmed the side buttons for copy and paste, select all, refresh, and the activitation of my drop-down Tilix terminal. There are also the default forward/back and dpi buttons. It's more for productivity as opposed to programming though, as I use Vim for programming and all the commands are already easily accessible from the keyboard. The browser controls and copy and paste buttons are great for cases when I have a hand on my mouse but the other is not on my keyboard.

The downside of this is that I oftentimes tap the side of the mouse when using a different computer (and realizing that there's no button to press) thanks to muscle memory.

I recommend anyone to download powertoys, a collection of utilities, and to use the keyboard manager to remap the caps lock key to the backspace key and vice versa. The pinky distance is substantially reduced.

I use the split, column staggered iris keyboard. With another layer I can access any common key or symbol from at most one key away. Nicest thing is how the arrow keys, backspace, space, home, and end are right on the thumb cluster. I actually use the keyboard layout colemak dh but with the s and h in the same place as qwerty, otherwise this small switch gets me. Its way more optimized than qwerty, probably the best on according to what I read.

Whats the powertoys version for linux?

KMonad is a cross-platform tool to customize how the keyboard behaves.

Or if you're always working from the same desk, you could invest in a fancy QMK-powered keyboard where it's easy to customize the firmware.

no idea

Some ideas, here's what I have dedicated buttons for, using Jetbrains IDEs:

    - start/run
    - stop
    - restart
    - back/forward
    - inspect/go to impl.
That's it. Always looking for new ideas. :)

Info − In this progression, the information is ready in some helpful structure for handling. The structure will rely upon the preparing machine. For instance, when electronic PCs are utilized, https://zeeguru.com/soundcloud-music-downloader the info information can be recorded on any of the few sorts of info medium, like attractive plates, tapes, etc https://zeeguru.com/twitter-video-downloader.

You asked keyboard/mouse. I use the bucky keys on the mac keyboard extensively: control/option(meta)/command(super). Rarely have to incur the cognitively expensive burden of reaching for the mouse.

I'm doing web development on a Mac. Here are some tools I've found useful.


1. Universal keyboard shortcuts

I was using an application called ControllerMate with my Microsoft Natural Ergonomic Keyboard 4000.

I set up a bunch of hotkeys and such, and basically used the software as a translation layer. My best example follows. When I pushed the 'calculator' button on the keyboard, it would check which application was running (Chrome, Safari, Firefox, Vivaldi, etc, or Visual Studio Code) and send the appropriate keyboard shortcut to it to open the JavaScript console (or the Terminal in VS Code). I might've even set it up to start an actual Terminal and switch to it if none of those applications were running.

Likewise, I had a button to go directly to Search in relevant applications, and used the 'Zoom' keys to zoom in or out (again, ControllerMate would intercept the special key, and then change it to the appropriate shortcut for the running application).

This was great. I gladly paid for it. It doesn't work with the most recent versions of macOS :-(


2. Switching between applications

I use an application called Contexts to let me switch between applications quickly. For example, I'll set one browser window up as being accessible using Command-1, and an editor window that can be brought up using Command-2.

I often have dozens of windows up, and when I start doing this, I'll usually use about four shortcuts for different applications, and it can be darn handy.


3. Window management

I use an application called BetterSnapTool. I've got it set up so that if I press the left Command key and a number or symbol on my numeric keypad, that it'll move and size windows. This lets me put two windows side-by-side almost instantly, for example, or, indeed, four windows in different quadrants of the screen, or one taking up one third of the display and another taking up two thirds.

(I am usually using multiple monitors, where this is less useful, but I do usually remember that I love it if I'm screen sharing and limited to one display).

Information Processing Cycle

Information preparing is the re-organizing or re-requesting of information by individuals or machine to build their convenience and add esteems for a specific reason. Information handling comprises of the accompanying essential advances - info, preparing, and yield. These three stages establish the information preparing cycle https://zeeguru.com/pinterest-video-downloader.

I have keys for := and !=, and %q %s %d %v %w on a layer.

I also move most of the symbols off the number keys / pinky fingers and on to home row. With a momentary layer toggle on the opposite thumb, jkl; becomes ({}) and uiop becomes &*`~.

That's one of the best layout changes you can make, and it's also nice to move backspace somewhere where you don't have to reach. (I have it on my left thumb, but also had it on my right pointer finger, next to h, which I think I liked more.)

It’s not programming, but I use Karabiner to remap my Mac’s caps lock to command-opt-shift, and fn to command-alt. If I had another meta key over there I’d map it to command-shift, and be able to hit all the shortcuts I’ve assigned to menu items in Illustrator with one hand.

My right hand stays on my Wacom stylus, whose two barrel buttons are set to double-click and right-click. Except when I’m in a browser, where command-click to open in new tab is much more useful than double-click.

I use Kensington Pro trackballs (four buttons with a scroll ring).

I use them on Mac OS and 9front currently as my primary machines, and they're useful with both the sam and acme editors, as well as all throughout Plan 9/9front.

Chording for cut/paste, and running commands from the mouse is very fast if you've got complex things to do.

I think if I could get a reasonable chording keyboard (like Douglas Englebart demo'd or in similar spirit), I'd probably find ways to use that as well.

If you are crazy like me, here is what you could do with your mouse: https://www.reddit.com/r/KeyboardLayouts/comments/kpklnq/my_...

It's a layout to avoid switching constantly from mouse to keyboard and remain most of the time with one hand on each devices.

I can’t read the link, Reddit pops up an overlay demanding i use their app. Reloading the page doesn’t kill off the modal, it just comes back. There’s no dismiss option for the modal.

What a tire fire of a UI on Reddit.

This link should help:


But your point still stands.

I use a mouse with 3 extra buttons.

2 are for copying and pasting, and 1 is for activating a programmable tooltip.

Here are the apps to achieve above (I built them):

1. Mouse config tool for Mac https://github.com/tanin47/noo

2. Programmable tooltip for Mac https://github.com/tanin47/tip

This makes me very productive mechanically.

I use a vertical mouse and I've mapped the extra buttons on it to allow for easier navigation without using the keyboard. It has two buttons near the thumb rest. I've mapped one to be shift so I can hold it to make the scroll wheel scroll horizontally and I've mapped the other to be enter. Clicking the scroll wheel is mapped to ctrl+v. These have made one-handed terminal and design navigation much more efficient.

I have three extra buttons on my mouse. One is set to Alt+Tab, another to Alt+Tab+Tab, and the last to push-to-talk. I get by fine with one monitor now.

No. I hardly ever use any of these additional features that we've had for almost two decades nowbl. At most I sometimes use the back/forward buttons of my mice but that's it. Not for gaming, not for coding.

My Steelseries Apex Pro has all kinds of features but I mostly use the actuation point adjustment. Fingertips hurt? Make it so that keys are activated by your breath if you can forgive the mild hyperbole

Preparing − In this progression, the information is changed to deliver information in a more helpful structure. For instance, pay-checks can be determined from the time cards, or a synopsis of deals for the month can be determined from the business orders https://zeeguru.com/.

I do, although I still rely a lot on pressing shortcuts traditional way.

Here is my shortcut layer, you can try to guess my IDEs - https://configure.zsa.io/moonlander/layouts/ZrQev/0NzMK/2 :)

I also have macro for ":="

Widescreen monitor with bettertouchtool. Cmd + Shift with back/forward buttons on mouse to snap windows left/right or over to another monitor. Multiple projects open use mouse 4 to switch through app specific windows.

Similar to splitting the screen into decks of cards that you can flip through or move from one to the other. I like it.

I’ve recently used a footswitch for the first time, and I like it. Was using it for simple “cut” and “paste” kind of stuff.

Back when I used to teach LaTeX classes, I'd use emacs as the editor when we were guest users on some University's Unix system (the students were largely math department secretaries and emacs has a more natural interface than vi, especially if you're used to word processors). I remember one student observing all the different modifiers and I joked that in the future you'd use foot pedals to use emacs.

The future is now.

I’ll just say that I know I’m old because I’d get made fun of for using a mouse at all for dev work back in 2008.

I use the “recon” side button on my Corsair M65 mouse to activate “Mission Control” (or the Gnome 3 equivalent thereof). I’ve also remapped the sensitivity up/down buttons to switch virtual desktops. Not coding-related exactly but I use it as a productivity boost when I’m working with code.

I don't use a keyboard or a mouse much at all! (because I can't anymore.) instead, I've written and memorized a growing arsenal of voice commands. Saying stuff like "review approve" to approve PRs is handy, though I'm slower over all than I was with working hands.

There's something wholesome and epically 'sci-fi' about this idea. Thanks for sharing!

I currently don't use a Mouse (Laptop/Touchpad).

But if I had a Mouse I would at least map navigate forward/backward bindings and if I have more buttons I would put the most common navigation/inspection short cuts on the mouse, too (goto definition, show documentation in popup, etc.).

> I currently don't use a Mouse (Laptop/Touchpad).

Wow you must be really skilled at using the keyboard!

> I would at last map navigate


I built a custom keyboard with the arrow and navigation keys for my left hand. I pretty much only use the scroll wheel, though. Having one for both hands is a huge time saver in big documents since you keep small per click scroll precision but can input them twice as fast

Buy a Japanese keyboard and you have thumb toggles on you laptop/desktop amoung many other keys.

Do you have any suggestions for JIS layout (or even thumb-shift) keyboards easily purchasable internationally (Canada specifically)? I’ve always wanted one, but it seems extremely difficult to get one here (at least without resorting to pre-owned keyboards from eBay).

I only code using multimedia keys.

I used to use JiTouch which allowed you to draw a symbol with two fingers. I then bound each symbol to an app: C for chrome, T for terminal, F for Firefox, and so on. It was wonderful, but unfortunately development support of JiTouch stopped.

It’s not specific to programming, but I mapped the side-scroll wheel on my mouse to page through my browser tabs. Also mapped an extra button to “close tab”. It makes a huge difference for navigating a lot of tabs seamlessly.

Not keyboard shortcut but I’ve found a trackball which you can rotate the ball for scrolling super comfortable. Way better than the spin wheel on a mouse. And given how much scrolling happens on webpages it gets used a lot

I have an Expert mouse and like this more than I thought I would.

Custom "Shift+Insert" (paste, C-v alternative but work on terminal) key is my favorite shortcut. Since we never use insert for the original purpose but annoying , it's better to map this shortcut.

I am using Sinc (keeb.io) that has a Macro row on the left. I have use those keys mapped to F14, F15, etc. and use them for Keyboard Maestro macros, BetterTouchTool screen positioning and similar OS functions.

I have logitech M510 and have two additional buttons on left side. One is for Enter and second is for Delete. Using it multiple years and so used to it that I couldn't imagine my daily work without it.

Logitech G602, six buttons on the side. Going clockwise from top-left:

- Cmd+Delete (delete file)

- Ctrl+Right (go right 1 virtual desktop)

- Ctrl+Left (go left 1 virtual desktop)

- App Exposé (show all windows only of the active app)

- Back

- Forward

I find these to be the stuff I need to do a lot a lot. Really handy!

I get all of these except cmd-delete from gestures on the trackpad with my MacBook. Learning the Mac trackbook gestures was a great productivity hack (and occasionally seemed like black magic to pairing partners). I can't use a mouse anymore because I'm so trained in those gestures.

Have an Electron Huge. Button to popup Alfred. Button to popup my clipboard utility. And a few things that kick off macros in my editor. I try to use mouse less but it's handy.

What's an Electron Huge?

I suspect they're referring to the Elecom HUGE trackball:


“Chastity ball beyond imagination!”

Information can be characterized as a portrayal of realities, ideas, or guidelines in a formalized way, which ought to be reasonable for correspondence, translation, or handling by human or electronic machine.

Information is addressed with the assistance of characters like letters in order (A-Z, a-z), digits (0-9) or extraordinary characters (+,- ,/,*,<,>,= and so on)

What is Information?

Data is coordinated or characterized information, which has some significant qualities for the collector. Data is the handled information on which choices and activities are based https://zeeguru.com/y2mate-guru

I use a Kinesis keyboard with a foot pedal for the control modifier key. I primarily use it when spending a lot of time in emacs, rarely otherwise.

I'm having my MX master “programmed” to do the following:

- back/forward (web browsing)

- enter

- CMD + Tab (switch windows)

If only it has more buttons, I love to add the “Backspace” button to my mouse too.

I work all day on a command line. I just have a bunch of two character aliases which are about as easy to type as a a keyboard shortcut at least.

Nope, and they're annoying because I accidentally click them and random stuff happens because I have no idea what they're mapped to.

Roccat Kova AIMO. One button bound to show all windows on Mac. Side buttons bound to page up and page down. Much faster than the scroll wheel!

Years ago I had a keyboard with dedicated cut, copy, paste buttons and a large scroll wheel. I really missed it when it broke.

I set one of my extra mouse buttons to execute the Visual Studio debugger “Run to cursor” command. Feels really good.

Nope. Only use a TKL with Vim and Tmux. I don't actually use the mouse during coding now that I think about it

I'm using the Logitech MX Vertical, so I only get 2 extra keys that I use to jump between VS-Code tabs.

I don’t, but if I did, I’d configure them to 1) go to definition and 2) find all references in VSCode.

Mouse buttons on Atheris to go back & forth folders/pages

Keyboard shortcut for typing, creating builds etc

Map buttons to one of these things:

Common text chunks Customized editing maneuvers Menu shortcuts

I tried using those for next-word-selected, but long term nothing sticks.

I’m only using back/forward buttons on my mouse, when supported

Yes. Scroller push= comment Buttons for save, copy, paste, find

I have Swiftpoint Z[0][1] Mouse, and while the software lefts a lot to be desired, it allows me to do a lot

I suggest to look at picture[0] to follow this post, as the button layout is highly unusual

The mouse have 2 primary mouse buttons that have pressure sensing. Pressing hard Left actually triggers CTRL+Shift+LeftClick, so when I hardpress over link it opens it in a new tab and switches to it directly (as opposed to MMB click that opens it in the background)

There are two fingertip buttons (also pressure sensitive) that are at the base of primary buttons, so fingers have to curl to reach them. One is CTRL+C or CTRL+X if I press it with force, the other is CTRL+V or CTRL+V -> Enter if I press it with force.

Another two buttons (push/pull triggers) are at the base of those, but higher, and the middle of the finger rests over them. You press them not by curling your finger, but by pressing them down with the "undercnuckle" of the finger. Left one is ALT+TAB, where TAB gets released immidiately, but ALT is left held down until button is released. As long as the button is held, every 150 units of mouse movement to either direction simulates arrowkey press in said direction, allowing me to pick a program I want to alt tab to. The other is CTRL+W if pressed without mouse movement (to close tab), or CTRL+Arrow (same fashion as ALT+Arrow on the left button) to select active tab in the browser. Those two buttons also works together. Pressing them together invokes Windows+D or Alt+F4, depending if I press left or right button first. The great thing about those two buttons is that hand or fingers dont have to change their position at all. Those two buttons also can be pulled from underneath. Left one is CTRL+Shift+T to reopen last closed tab, and the other is to recalibrate gyro to 0 (tends to drift a bit, usually once a week it drifts 2 degrees, which is enough to start triggering my tilt keybind).

Two more buttons next to the side of Left Mouse Button, which are pressed by index finger having to move over them, are bound to F10 and F11, and I use them in games/work programs only.

Finally, two remaining thumb buttons are of course Back and Forward. Kinda wish for more thumb buttons tho.

For some games I also use tilt functions to bind to keys (the mouse have gyro and is made to be tilted, with magnetically held plates at the bottom, allowing you to choose the amount the mouse physically tilts (left-right) all the way to 0.)

Tilting the mouse to the right for more than 30 degrees makes it enter config mode, where with 2 buttons you can select what the little OLED (black&white) displays (current XYZ angles, force applied to one of 5 pressure buttons, DPI [and change it by mousewheel], profile name, spinning cube), change active profile (with subprofiles) or start recalibration (lay flat, wait 3 sec).

The mouse have vibrations that allow me to tell whether force or tilt action has been executed, but my choosen keybinds make it obvious anyway.


I used the mouse at home for gaming, and was carying it to work every day (I work with 3D software with terrible fixed keybinds, which I mapped to the mouse) for a month before I bent over and bought another one.

Its the best mouse I ever owned, but its not all flawless. Working with software is a pain and unintuitive. They released new version which strips control from you, or you can enter "expert mode" which throws you back into the original. Theres no way to display custom images on the OLED, and text can only be changed to predefined strings on predefined triggers, forget about putting a clock there. Updates are rare and featurewise empty.

Support is helpfull when the desired function is doable with current software and actually provide a guide how to structure the profile to achieve the goal, but for my request to be able to display clock or text pulled from outside the program the answer was "we informed the developers, mby in next version."

The magnetically held plates are nice way to easily set up your mouse, but after I found my optimal settings for it I havent changed it then. The downside of it is it being magnetic, so in the rare ocasion where I have to work on site, and only metal table is avaiable, the mouse gets stuck to the table. A mousepad solves this.

[0] picture: https://theawesomer.com/photos/2016/07/swiftpoint_z_gaming_m...

[1] mouse: https://www.swiftpoint.com/products/gaming-mice-swiftpoint-z

Back and forward buttons to navigate through code in ide (like intellij)

Applications are open for YC Summer 2023

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact