Hacker News new | comments | show | ask | jobs | submit login
Vim Clutch – A hardware pedal for improved text editing (2012) (github.com)
513 points by mfrw 40 days ago | hide | past | web | favorite | 261 comments

I love seeing this. I worked in the university computing department in college and this sort of thing wasn't an uncommon sight under the desks. People also had all manner of exotic keyboards.

The most elite setup, as I recall, was the Kinesis Advantage combined with pedals. The keys on the Kinesis are recessed in these sort of cups that your fingers rest above. The idea is that this reduces the distance that your fingers travel moving between rows. I could never get the hang of typing on one of them, but people swore by them. Adding the pedals for shift/ctrl/esc was supposed to further reduce the need to stretch your fingers and get them into awkward positions. People also swore it made them faster and of course it looked and sounded super cool.

I'm a longtime Kinesis user and I had the pedals about 15 years back but I never made much use of them.

I don't know if the Kinesis reduces the finger movement between rows, but your hands definitely sit in a much more relaxed way. The thumb has quite a bit more responsibility too and you don't do any stretch moves like using the pinky for the twiddle or a lot of control pressing. Love the keyboards.

As for the pedals, they are programmable and the general thinking was control/option/alt type configurations for them. I just never got in to heal-toe typing, the pedals got dusty and I never really used them much. Had I actually had CT or something, I think I might have been more motivated to make use of them.

The kinesis pedals require the foot to move which is requires a lot of energy which produces a lag of about 1 second between you wanting to press a key and pressing it with your foot. This lag turned me off pedals, but in theory it sounds great.

Indeed, a pedal sounds tiresome, unless the switch pressure could be tuned so that the foot could be relaxed and require only a small pressure to activate the switch(es).

The trouble is tuning it so that you don't need to actively hold your foot to prevent it actuating, and also having enough feedback on actuation.

I felt that some kind of wireless, in-shoe, toe-activated device might be the best option. But that's not really very practical!

Probably not, the toes really aren't built for fine motor action the way the fingers are. You would probably get RSI pretty quickly. You'd want to stick to motions that are more typical, such as stepping the foot.

That makes me think of motorcycle foot levers, where the back of your foot is supported by and pivots around a peg, allowing you to comfortable and quickly push the lever down.

hm. Yes, and with a pretty significant (by keyboard button standards) amount of pressure required.

Actually, in a situation where I can't require significant force, the 'upshift' almost seems like it would be more comfortable.

As a motorcycle rider, I'd prefer upshifting all day to downshifting all day.

What if we mount a foot switch upside down above our toes so we just flip our feet up and hit the switch? + sticky keys on the foot switch modifiers

The answer is a keyboard for your toes

I've been eyeballing a Kinesis for a while, but am curious to know what kind of mouse or trackpad you use alongside it — especially if it's something particularly ergonomic, a vertical mouse, etc. I remember seeing someone mount a Magic Trackpad on the blank spot in the middle of the keyboard but am curious what normal mouse usage looks like with one.

I can completely replace my mouse with the keyboard so I never even have to take my hands off the keys.

I use karabiner on 2 versions older of macOS, which allows you to use a special keyboard way to control the mouse... You hold the D-key then use other letter keys to move the mouse up,down, left, right, click, scroll up, scroll down etc... Works so much better than you'd expect. It literally allows me to do everything including screensnap selections, making keypoints without mouse etc.

Because karabiner doesn't work on latest macos, I've been busy writing my own replacement from scratch.

I did also initially start by mounting a trackpad in the middle of the kinesis - but ultimately this isn't perfect. My mouse keys setup simply blows everything away, even compared to just using a regular trackpad for most things, since you never take your hand off the keyboard, and can get about 70 percent as fast using the keyboard as mouse as using a real trackpad.

Could you possibly share your project? That sounds very intriguing. I have been trying to eliminate the mouse but have been unsuccessful.

My own code works almost as well as Karabiner.

My code is in such a disorganized state, I have never coded MAC stuff before, this was my first try, creating a test project scaffold with xcode. I mixed old school C-code with objective C because I don't know objective C ;->

Finally I manually injected my compiled binary into another app's package structure, just to make it work. You have to grant it accessibility permissions in preferences to work!

For now I have downgraded my MacOS-X and gone back onto Karabiner, because I literally refuse to work with computers without this awesome thing.

It takes a bit of time to get fast and accurate, but eventually it is all just muscle memory moving a pointer around on the screen. Some stuff with keyboard-mouse is even better than normal mouse(trackpad). But overall I am so happy with it that I do video editing and all other document editing with it, and wouldn't dream of going back to my trackpad or mouse. (I also get RSI pains from using pointing devices, but as I say, it is devine to never lift your hands OFF your Kinesis Advantage keyboard).

I suspect part of what makes this really great is using it on the Kinesis. When I work on the train on my MBP I still use mouse-keys, but sometimes use the trackpad intermittently.

I would really recommend trying Karabiner if you have an older mac, otherwise I could email you a binary.

I will probably clean up the project, and use fancier tecniques like direct hardware access from user-space instead of the eventtapper, and copy some tricks from Karabiner-elements.

Eventually I will create a github and maybe a project site ;-> If by the time I am somehow forced to upgrade MacOS and there still isn't a good solution out there, I will certainly make mine work, otherwise I am screwed!

I never used Karabiner’s mouse movements, but I did love its sticky keys. Karabiner Elements finally supports them again on new versions of macOS. Have you tried it to see if the mouse movements work?

Last I looked Karabiner-ELEMENTS did not have this mouse-key feature. Karabiner mouse-keys really works amazingly well, so well in fact that I was willing to downgrade both my MAC's macos to be able to keep using it until my own fully replaces it !

I've used a Kinesis for years and have found my favorite 'mouse' pairing to be a Kensington Slimblade. Switching to the trackball made a big difference for my RSI and it really sits pretty nicely next to the keyboard to let you switch to it with a small movement of your arm so my wrist always stays in a nice neutral position.

Same combination here. I tried many mice before settling on the Slimblade trackball.

Since this is a vim-inspired thread: among other mappings, I swap Escape with Delete, and swap ↓ with ↑ so they line up with J and K.

With delete seems exotic, doesn’t it get confusing?

I use caps-lock for escape. It’s really nice but whenever I use a coworkers computer I find myself suddenly writing with caps-lock on even though I’m the only vi-user at the office.

This is on a Kinesis keyboard where there is a delete key right under the left thumb. I re-mapped it to Alt, but it is a very handy spot to remap to something as delete just isn't that useful.

I have a vertical mouse, but install vim keybindings in every program I use with any frequency. I don't use the mouse often.

What do you use for vim bindings in a browser?


And I hear good things about Vimperator on Firefox.

Just to mention other options, in Firefox I use Vimium and on Safari Vimmy.

A totally different direction from the Kinesis, but this has kept me happy for the past 5 years: http://www.pckeyboard.com/page/product/96U1114

There are trackball buttons on the top of the keyboard. When using it, my right hand curls around the corner and my thumb is over the trackball. I have the 2nd mouse button set to scroll-lock, and scrolling up and down web pages and through terminal histories never felt better.

I have been using an Anker vertical mouse for about a year now. It's far from feature rich, but the build quality is impressive for a $20 mouse, and it's very comfortable. AAA battery life is good-great (it's not rechargable). I have medium-large hands for a male, and it sits in my hand great. As you get used to it, you do have to be careful you don't send it sailing across your desk when you go to reach for it!


I tried using one of these Evoluent ones which has a pretty high price tag (I think?) http://a.co/e8u6qen

Ended up going back to the trusty $20 Anker cause it feels more comfortable on my hand/forearm. Go figure.

I use a CST L-Trac (trackball) on the left side of my Kinesis Advantage. I'm right handed, but my right hand also had worse problems than my left. I figured if I was going to switch to using my left hand for pointing device, I might as well try switching to a trackball as well.

I'd actually started with a Kensington Expert Mouse (also a trackball, despite the name). I switched to the CST because it has a higher resolution. The one thing I didn't like about the CST was the placement of the middle button, but the CST is easily hackable so I added a "sidecar" with a button for my thumb, and it works really well.

Here's a photo of my setup:


I seem to remember that one of my buddies who had the Kinesis used a vertical trackball mouse. It was definitely a trackball and the ball was very large, maybe a little larger than a golf ball. I can't seem to find anything about vertical trackballs Googling it though.

Everyone I've seen with a Kinesis who actually had a mouse had one of these.

They're also fantastic once you're used to them. I frequently consider switching to trackball, but my favorite option is still the Trackpoint. IBM/Lenovo really screwed the pooch there though.

This was always my question too. What’s the point of a 300$ keyboard that minimizes movement when you have to move your entire hand every time you you need a mouse?

Completely avoiding the mouse isn’t an option for some workflows.

I wish there were more keyboards with IBM-style trackpoints.

> What’s the point of a 300$ keyboard that minimizes movement when you have to move your entire hand every time you you need a mouse?

Because I rarely use the mouse (trackball in my case), and if I type on a 'regular' keyboard for any extended period of time I will experience discomfort; whereas on the Kinesis Advantage I don't experience any discomfort.

300$ seems like a steal to me!

(Not that I paid. My company did.)

What’s the point of a 300$ keyboard that minimizes movement when you have to move your entire hand every time you you need a mouse?

The point is to reduce strain and fatigue of the fingers and wrists, not to reduce movement for the sake of reducing movement.

Mouse ergonomics is a completely separate can of worms.

I was talking about reducing strain and fatigue. Moving your whole hand over the mouse over and over again introduces quite a lot of fatigue. This is why the keyboard and mouse aren’t separate problems.

A keyboard that doesn’t have an integrated mouse solves only part of the problem. That’s why I like having a trackpoint for small mouse movements.

The Advantage in my case helped reduce the strain of the positioning of the hands. When I have to travel and switch back to the MBP's keyboard, the position of my hands on the keyboard definitely causes discomfort if I have to type for more than a few hours a day.

I don't mind having to switch to the mouse. It gives me time to take both hands of my keyboard and change their positions even if for a little bit.

I've been meaning to hack a trackpoint into my Kinesis. It's been done before, mounted where you can control with the thumb so you don't need to move your hand at all.

Are there trackpoint kits? Or do people disassemble old keyboards?

Only seen it done with ones removed from old keyboards. On at least some (including the IBM SpaceSaver IIs that I have), it's on a separate little board. I believe the outputs are pretty simple to decode.

I miss using a macbook keyboard for exactly this -- could easily use the trackpad with my thumb with little hand movement. My ideal keyboard would be something similar to the current microsoft surface natural keyboard with a macbook trackpad below it.

Ultimate Hacking Ketboard willnhave trackball and trackpoint modules.

Right. There’s also tex yoda 2. Both of these cost about as much as the kinesis, but they don’t seem as well designed.

The ideal for me would be a two-in-one. An ergonomic, well designed keyboard like the kinesis, with the addition of a trackpoint to avoid lifting a hands for small mouse movements.

The TeX Yoda has a terrible built in mouse. Highly recommend steering clear. I've been a thinkpad guy for the past 15 years or so, and I jumped on the opportunity to buy one when it came out. The sensitivity on the trackpoint has a really weird velocity curve and I never managed to get it to feel even close to right on any platform.

Building keyboards has been a hobby for a minute, I've settled on an HHKB that I've gutted and replaced the controller with a Teensy 2 so I can program all my mouse keys and shortcuts in hardware, therefore avoiding the inevitable discussion on who's mappings to use when pairing. You can often find good offerings for sale/trade on reddit/r/mechmarket.

Been a user of a Microsoft Natural, then switched to a Kinesis Freestyle, and now I've migrated to an ergodox.

They are not curved like the Kinesis Advantage are, but I have really long arms and the ability to move both keyboard parts around is so good on my elbows and wrists.

As per mouse, I have been looking at trackballs, but I was kinda scared to get one so far. Having large hands, I previously used a Razer Mad Cat, because I could adjust the mouse to a size so I don't have to grab inwards, and I could just hold it without effort. That thing recently broke, and I changed to a slightly angled, equally large trust mouse.

I also picked the Ergodox over the Kinesis, though I only tried the Kinesis for a day.

I had spent 10+ years working nomad style on a Thinkpad, and when I got a desk I got one of those USB Thinkpad keyboards with the trackpoint in it. Turns out if you zap them with static 2-3 times a day for a couple years, they'll eventually stop working... One day it just up and died, and a co-worker had the Advantage and Ergodox Ez and I'd been meaning to try them.

I had switched to a tiling window manager a few years before that, i3, so I could do a lot of the navigation without using the mouse. I've at times toyed with the idea of putting a trackpoint in the Ergodox, and if they made one I'd probably buy it, but I'm pretty happy with my current setup.

For most navigation I use my keyboard. Since I have 3 monitors, using the mouse is not a great experience anyway. I mostly use the mouse for web browsers (never really been happy with the mouseless navigation experience there).

Love the Ergodox Ez. I've also got an Ergodox Infinity with Cherry Brown, I kind of prefer those keys, but I like the Ez's tenting kit. I also picked up an Ez with Gaetron Blue, which is honestly too loud for my work environment and doesn't feel enough better to be worth it. My normal keyboard is Ez with Gaetron Brown. I just noticed they have a new Ez that has switches you can remove and replace (without a soldering iron), and they have switched to Cherry. A good move, IMHO.

I have a kinesis advantage and an ergodox. It might just be my preference but the advantage is worlds better. It’s just so much more comfortable. I’d highly recommend trying one.

I tried a vertical mouse, but settled on a Kensington Orbit Trackball.

Works well. With my Kinesis Advantage forget pair programming; except with those in the office I have converted to the Kinesis Advantage of course!

I used a mighty mouse with it as the last mouse. I've been using a magic trackpad lately. Definitely not the most ergonomic option but I like the hand gestures.

Took maybe 3 days to get used to the movement between them mouse and the keyboard. I think it would be more uncomfortable to have one in the middle space in the keyboard, your hands sort of naturally fall away to the side but they have to reach in to the middle space.

I have a Kinesis and have a trackball to the right and a magic trackpad to the left.

I tried velcroing the trackpad to the middle, but the angle is weird. I like it better to the left.

I use a Logitech Cordless Optical TrackMan [1] alongside my Kinesis Advantage.

[1] https://www.amazon.ca/Logitech-Cordless-Trackman-Discontinue...

I stuck a Cirque touchpad in the middle of the keyboard. I use that mainly for window switching with focus following cursor in I3. It's not that great for pointing, so I usually have a regular mouse on the side for web browsing.

I have been using an evoluent with my kinesis for the last 10 years. Great ergonomic setup.

Check out the Dactyl. You can get one 3D printed for about the same cost as a Kinesis.

I use my Kinesis Advantage keyboard with an Apple Magic Trackpad 2 next to it, and it works perfectly! I had some issues with RSI a couple years ago, and this keyboard has helped me get over it.

I invested last year in two Elecom left handed trackballs (find them on Amazon). One at work and one at home.

Once you mastered the Kinesis Advantage you don't want to go back. Your hands move way less on the Kinesis than on a normal keyboard. Maybe this is also the reason why I always found the use of ESC in vim an odd choice, i.e. you have to move your hand to reach the ESC key. Moreover, the Kinesis has the arrow keys below the "c" "v" "m" "," keys so you can navigate without moving your hands, this is similar to vim but without the annoying mode switches.

> without the annoying mode switches.

Hmm, I've used Vi and other editors long enough that I find it annoying that most editors enter text when in normal mode.

The choice of escape in Vi was because it was originally developed for a keyboard like this terminal.


Where escape is in a similar place to tab on PC keyboards. Also note the arrows on the home row.

Most dedicated vim users will move to using C-[ probably with caps lock mapped to Ctrl.

Other alternatives are map caps lock to escape or even have caps lock as escape when pressed and ctrl when held.

Ctrl-[ instead of Esc has probably saved my life.

My dream keyboard would be a Kinesis advantage with some significant modifications to make it good for taking it on the go, since I travel a bunch and work from public places. In order of importance:

1. more compact. No extra surface, instead just have separate wells connected either by a wire like the Kinesis Freestyle, or fully wirelessly ideally. Kinda like the ErgoDox keyboard.

2. lightweight. Don’t want to be carrying a brick in my backpack. I’m totally fine with using low travel keys like how a MacBook or any decent chiclet keyboards feels, I mostly just want the layout.

3. wireless. Bluetooth with ability to switch multiple inputs like the Logitech K811 would be incredible.

If anyone knows how someone would start to hack something like this together, please tell me! I have never done hardware but I would love to mess around with something like this as a project.

tons of small keyboards inspired by kinesis has been developed. Iris, Dactyl, Split Plancks, and more. Depends on what you really need from the Kinesis. Is it the thumb buttons? The cups? The split layout? There are several other designs that are more compact, but I don't really remember the specifics. /r/mechanicalkeyboards is a good place to watch for the designs (yes, among all the expensive conventional keyboards there)

For me the most important are split layout and portability. The cups and thumb layouts are just icing on the cake, tenting on a flat layout would be sufficient too.

Iris and dactyl look like the sort of things I’m thinking, though I’d probably want to find a way to either have f keys or configure some of those thumb keys to hit certain common f keys, I assume that’s doable though! Thanks for the resources, just mentioning names and where to look really helps :)

I have the Diverge and it's very nice.

of course, you can make it whatever you want! it's fully programmable. just hit me up if you need anything!

- Get different kinds of keyswitches (the kinds used in DIY keyboards) and examine how they click into place etc

- Start playing with 3D modeling software

- Figure out what the base/frame should look/work like and have that professionally made somewhere (ie a cheap CNC place)

- Invest in a good 3D printer (I hear the cheap kit/"project" ones are terrible) or find one you can rent/borrow, and 3D print attachments to the base for iteration purposes

I realize this approach describes several months of work but is probably a "99.9% solution" - as in it'll be likely to (viably) get you the absolute closest to exactly what you're looking for.

There was a geekhack post on this sort of general idea, but it hasn't seen activity for a while now: https://geekhack.org/index.php?topic=84985.0

Looks stunning to me. The rather underrated Cherry ML switches strike the balance of low travel and good feel for me. Maybe one day someone will get sufficiently inspired to make such a thing.

I used a Kinesis when I worked at Microsoft, which I credit for heading off impending RSI. It took about a week to get back up to speed, and then it was great. I had a pedal connected to the shift key because of all the LONG_CAPITALIZED_C_CONSTANTS in Microsoft code.

I type enough capitalized constants (and plain-text abbreviations) nowadays that I actually un-remapped Caps Lock and put it back in its default spot.

I imagine some frustrated IBM programmers in the late 80s saying "fuck it, I'm just putting caps lock where Control used to be."

I've got one of the thumb keys on the left of the Kinesis mapped to shift; never quite got used to it though and I'm always mistyping when holding it.

Yes, that's interesting recollection, now that I think of it the late 90s seems like a period of considerable experimentation with user input, e.g. the Microsoft Natural keyboards were somewhat popular, various trackball mice even for desktops, 2/3 button mice with various buttons on the side, trackwheels (lots more combinations that these days), wacom tablets, etc. I guess this stuff is still available, but much more niche now.

I wonder what happened? Maybe since computers are cheaper, more ubiquitous and people might use several (home, work, laptop), it's much less practical to use an exotic setup these days?

Even just finding a mouse with extra buttons is difficult nowadays.

My Logitech with side buttons finally wore out, and the only symmetrical standard mouse with five buttons was a Razer gaming mouse. I bought it, but I feel a bit silly with it on my desk at work.

You should see the look on people's faces when they realize my SteelSeries Sensei has a small LCD on the bottom - https://steelseries.com/gaming-mice/sensei

Bought it because you can do simple macros for buttons which are stored on-device. Also allows for mode switching with rotating profiles that are differentiated by LED color.

If you're on a budget and don't care about on-device macros or looks then there are branded variants, like the Guild Wars 2 one when I initially tried it out and now there's a CoD one.

The downside is that the branding paint job wears out with use. Especially problematic on the white GW2 one I had (yellowing under fingers). Don't try to clean it with IPA (rubbing) alcohol though, it dissolves the matte sides and the paint job (learned from experience). https://www.amazon.com/SteelSeries-Call-Black-Gaming-Mouse/d...

I switched from Logitech to Roccata few years ago. The Type mouse has worked pretty well for me, with 14 programmable buttons


I think the keyword they use is ambidextrous. E.g. Zowie makes some decent ones that look fairly normal.

Gaming mouse, razer naga and naga hex have plenty of extra buttons. 15 and 6 respectively.

Don't forget FingerWorks, which made the first consumer, multitouch track pad. Sadly, Apple bought them and they disappeared from the PC market.

I started feeling a slight discomfort in my wrists a few months in to my first job. My manager suggested that I expense a new keyboard, recommending the kinesis advantage.

It took me a good 2 weeks to become proficient on it, but that was four and a half years ago and I haven't felt any RSI symptoms at all. I think I'm now faster on it than my old keyboards, mostly due to the thumb clusters. I recommend it to everyone who asks about it.

I use a setup that's similar in spirit. My custom keyboard has palm keys (kind of like the https://shop.keyboard.io/), which I have mapped to control and shift (on a mac). I have a Sublime Text keymap file that has a bunch of vim-like bindings under control, so basically it is like vim but the state of my palms is the editing state, holding one down is movement, both is selection. It's really nice.

You can see the keymap here: https://github.com/trishume/SublimeTect/blob/master/Default%...

The keyboardio is the only keyboard I know of that has the palm keys, but I've been interested in buying or making a keyboard that has them. Any writup on your build?

I use the left control key on a full sized desktop keyboard as my "palm" key (I press it with the heel of my left hand). Being an Emacs user, it made my left pinky so much happier.

This doesn't work on laptops because of the low profile keys, so I stack some 3M "dual lock" squares on the control key to raise the profile. They can be removed (except for the one glued to key) when I need to close the laptop.

The Emacs keyboard chords were worked out on keyboards that had the Control keys nearest the Space bar - the intention was that you would use your thumbs to press the Control and Meta keys. Turns out this is really useful not just for Emacs but for any program that uses Control modifier shortcuts. I have not had any hand pain after doing this key remapping on my systems:


Similarly, I use the same bindings I mentioned above on my laptop keyboard, and there I have the right command key bound to control. Since it's right next to the spacebar I can easily hold it down with my thumb while using other keys to move around.

Wow this is really detailed. Thanks!

I converted a set of pedals for a dictation machine to work with my Kinesis keyboard.

It wasn't as useful as I expected. Having to keep my foot in the same place all the time became quite uncomfortable, and I found that synchronising my foot with my fingers (these pedals were configured as modifiers rather than escape - I mostly use Emacs) was quite difficult.

an intriguing experiment. I am playing the piano and don't expect to have difficulties synchronising the foot and the fingers. But I may be wrong!

I guess with practise it may well have improved. I just didn't find it comfortable enough to persevere.

You should consider 2 “presses” for the pedal:

1) quick press-release: changes mode

2) long press-hold-release: changes mode on press and then changes mode back on release

This allows the user to not have to hold the pedal down if they dont want.

User can specify a time threshold used to determine the difference between a quick press and a long press

Perhaps if it’s released before another key is pressed, the mode stays changed. If another key is pressed first, it changes back on release.

Why not have an automatic transmission instead, like vi goes, hey these haven't been real words for the last 8 characters, bet they were esc commands.

"cruise control" for vi :)

The pedal idea is funny, but there are too many useful ways to enter insert mode (i, I, a, A, o, O, c, C, cc, cw, c2w, cit, ci), vi}c, vf.c, v0c, etc.). It seems like having a pedal for `i` would encourage a way of using vim that avoids the most efficient keybindings. I rarely press the `i` key to enter insert mode.

I had the exact same thought about the "clutch" aspect of this, but am wondering if simply having a foot pedal that issued ESC when tapped could still be of value. On most keyboards the ESC key is the longest reach with my shortest finger so it winds up requiring a wrist motion.

> On most keyboards the ESC key is the longest reach with my shortest finger so it winds up requiring a wrist motion.

Try to learn using "Ctrl + [" instead of ESC. It helps.


I map it to Capslock along with Ctrl using xcape. Tap for ESC, hold for Ctrl.

Ctrl+C is even easier.

Only if you don't like/use modern shortcuts for System-wide clipboards.

When I started using Vim, I found ESC to be too far of a reach and ctrl-[ to be too unfamiliar. I used ctrl-c for years, but that caused muscle memory problems when switching between other editors that use vim keybindings.

Eventually, I got used to ESC. I move my hand more than bend my wrist, so it isn't so bad. I hit ESC with my left ring finger. I also try to plan my next keystrokes and/or move my right hand into next position while my left hand reaches for ESC.

I've found that moving ctrl to the capslock key also helped reduce wrist motion, though it makes using other people's computers more annoying, since I try to do everything on the keyboard with pure muscle memory.

When I first started using vi in the late 80s it was on the (old even then) ADM-3A terminals in my dorm's basement computer lab. I still miss that layout, which had Control where Caps Lock usually is now and Esc just above it (where Tab is now usually found). Sadly I've found that trying to use custom mappings is just too crippling when I have to use some other computer than my primary one.


For a while, I used vim bindings that used Tab for Esc and encouraged you to use tab motions (> and <), and auto-tabs instead, with the slight accommodation of binding Shift+Tab to (positive) Tab.

It was a fascinating set of key bindings, but a problem with it was that it wasn't very portable, and I hit too many problems with Vim modes in other editors not supporting rebinding Tab or causing too many accidental side-effects.

(I try to keep CapsLock bound to Backspace so there is a Backspace on each hand. It's a good use of the key. Though maybe real Backspace might make a good, Esc in a Vim binding, hmm, I'm going to think about that now.)

Nice keyboard layout. I didn't start using vim until around 2005 or 2006.

My computer use is so dependent on muscle memory that I can't comfortably use anyone else's computer, even without the moved keys. Every time I get a new computer, there is a long adjustment period too. I find the trade-off worthwhile though, since I'm rarely far from my laptop and rarely type more than a few sentences on other computers.

I use Happy Hacking Keyboard, which is close to the layout you describe: https://elitekeyboards.com/proddata/doc/hhkbp2_basic_layout1...

What worked for me is binding ESC to 'jk' in vim. It's perfect because you basicly never need to actually type 'jk' in any text and its located where the right hand rests anyway. If you have never tried this you should give it a shot.

For those who want to try it:

    " In insert mode use 'jk' as Escape key
    :inoremap jk <esc>

Just a tip which not everybody might know; since the last couple of versions, macOS natively supports remapping the Caps Lock key to Escape.

Go to System Preferences -> Keyboard, then on the lower right, click the Modifier Keys button.

Even though I would probably never go though the effort of it, I am impressed and love the idea of it. One philosophy that I hear a lot of VIM users prescribing to is don't make too many custom changes to the bash file that you can't use someone else's computer. I wonder if you got used to this setup if you would find yourself pounding the floor on someone else's computer. I drove stick for years and still occasionally find myself with phantom clutch syndrome.

No serious user of Vim would ever suggest that you not customize it. It's worth knowing the basics of a stock Vim configuration for simple use cases on a new system or in an environment where you can't or don't want user config, but if you're writing software all day in a stock Vim configuration, you're a masochist or a fool.

The advice I’ve followed is that when customizing vim, you should try to only extend it, not modify existing behavior. For example, in development it’s very useful to have a fuzzy finder. On a server, I won’t need it, and even if I reflexively did the shortcut to open it, nothing would happen. Same goes for things like linters, syntax highlighters, global search tools etc. Priceless on your primary dev machine, but you’re not completely hobbled without them.

I think the same applies to the pedal. Maybe you’ll try to use it when it isn’t there, but so what? It might slow you down for a second, but I don’t think it’s going to be a major inconvenience.

As a beginning VIM user I started out with the stock keybindings idea. After using it for nearly a decade, my finding is that it's like learning multiple spoken languages. It's not hard to switch context and use vanilla VIM despite normally using lots of customization. But, I do try to keep things idiomatic and predictable and not override frequently used key bindings.

This has been my experience as well. My vimrc is full of little niceties that I could live without, but if I end up in a vim without my shortcut keys I'd be like 'Oh this again I guess I have to :bn :bn instead of <C-q><C-q>'

I haven't really forgotten any of the long form commands that I create shortcuts for, but it's really annoying using the long forms when typing them out over and over was the reason why I created shortcuts for them in the first place...

> No serious user of Vim would ever suggest that you not customize it.

My .vimrc has the following lines:

    source /usr/share/vim/vim80/vimrc_example.vim

    colo desert256

    set ai
    set et
    set sts=4
    set sw=4
    set t_Co=256
    set ts=4
On systems that I don't have my .vimrc on, I have no problem working with them because what's in /etc/vimrc works well enough for me since I really don't have to much to change other than the colorscheme (since vim mode lines take care of the rest).

Yes, and this is the trouble with vim -- everyone needs to customise it, and that makes it difficult for the community to have standarised ways of doing things.

Everyone has their own workflow preferences and some will prefer using a lot of custom abstractions in their work environment. Others may apply a very minimal set of customizations (if they bother at all).

I believe it's better to allow people to choose how they configure their editor rather than making that decision for them.

But it would be better if the default configuration was good enough for most people.

Instead, Vim has a very spartan default configuration. There are good historical reasons for this. But it is a sad history, because it means, most long-time users end up with fairly heavy customisation. And those customisations will routinely be different from everyone else's set up, not just when they want to enact some personal preference.

That's true, I have more customizations to vim than I can count, however the idea that someone had tried to convey to the parent was probably not that he shouldn't customize it, but that he should remain idiomatic. I don't, for example, change the functionality of common keys, as I need to use them when I'm on an environment that's not my computer. Instead, I add functionality that didn't exist before or change defaults to my preferred settings. If I do change a key, it's a key I will never use, like caps lock.

When I'm much older, or, for dramatic effect, perhaps on my death bed, I hope someone asks me what the most important event of my life was, or what my fondest memory is, that sort of question.

I'm going to tell them: "Remapping caps lock to delete".

Not in Vim, but system wide.

Interesting. I mapped mine to ESC but I can see that being equally useful. Usually when deleting, I leave insert mode and use `d` or `x`.

I should have said: I don't use Vim at all. I get by with Notepad++ for the tiny amount of G-Code editing I need to make a few tweaks to laser cutter programs.

I use AutoHotKey to remap caps lock to delete and shift + caps lock to caps lock.

Years ago, I got into the habit of using ctrl-[ to get out of insert mode instead of pressing Esc. I find having CapsLock useful for typing all-caps constants in source code when needed.

I map CapsLock to Ctrl, where it belongs. I've recently gotten into the habit of using Ctrl-[ for Escape, though, because I'm stuck on a MacBook with one of those horrible touchbars, and I had to turn it off to remain sane.

Can't think of a good reason to type out constants.

Don't vim have decent autocomplete?

(I mostly use it when ssh-ing into servers but figured people who code in it must have set it up as an IDE?)

> Don't vim have decent autocomplete?

It does, but it requires that the word to be autocompleted is present in one of the other loaded buffers. If you're typing out a new variable name, it won't work.

So it doesn't take libraries into account?

I was referring to the regular complete feature (rather than omnicomplete). The default setting is supposed to take included files into account, but that feature doesn't appear to work with imports in python.

Not unless you use a plugin like YouCompleteMe

Question for anyone who knows: is there a vim command or plugin to transform the word the cursor is under to upper/lowercase (or camelCase, kebab-case, snake_case, while we're at it)?

g~w will swith lowercase letters to uppercase ones and vice versa. gUw will change all letters in the word to uppercase. guw will change all uppercase letters in the word to lower case. See :help case for more details.

There are probably plugins to change words to camelCase, snake_case, etc, but I'm not aware of any built-in command to do that (other than manually editing it).

I went with ctrl-[ for a bit and still do use it when I use another computer, but I find caps = esc to be so much more relaxing for the fingers.

I believe all the goods of Vim comes from lightness and portability. There are plenty of Vim emulators on other editors. Emacs for example are ricer's heaven.

What is the meaning of "ricer's" in this context?

The only thing that springs to mind is 'Racing Inspired Cosmetic Enhancements'.

Ricer is a slang term for a supped (souped?) up/tricked out Japanese car, usually with lots of aftermarket parts which make it go faster than stock. Think civics and supras.

He’s making an analogy between those cars with tons of modifications and the extent of customization that seems common in emacs.

Yes, we're talking about the same thing.

See https://www.urbandictionary.com/define.php?term=rice

Race Inspired Cosmetic Enhancements. (R.I.C.E.)Parts put on cars to make them look fast, when they have no internal tuning, and are actually slow as hell. Parts usually consist of excessivley angular bodykits, large rear spoilers, neon, sponsor stickers, chrome rims, fake "coffee can" exhaust tips, and loud, annoying paint jobs and/or vynils. Sometimes parts are do-it-yourself installed and are basically duct taped to the car. Most commonly known for being done to Honda Civics, but can also be done to slow domestic vehicles, such as a Chevy Cavalier, etc.

In the common vernacular where I live it's generally meant as a pejorative.

I'm pretty sure that's a backronym and that "ricer" is a contraction of "rice rocket," i.e. a pejorative and slightly racist term for performant asian automobiles.

That sounds pretty likely.

I’ve been using Vim as my primary text editor for 9 years and i soon decided not to maintain a vimrc shortly after I began using Vim because I use a lot of different conputers here and there. That has worked out perfectly fine for me.

OTOH I’ve been using the Dvorak keyboard layout and custom keyboards for the same period of time but usually I get by if I need to type just a little and if I need to type a lot I bring one of my keyboards.

By other computers you mean SSHing to them or working at them physically? If the latter, this sounds like a very odd excuse. If you use a custom KB layout on your main machine(s), it is a way bigger showstopper for being effective at the rest of them. As you said, you do not care about those other machines much, so why stint yourself and not use handy customizations at least on the main computer?

I suffer from this "phantom clutch syndrom" myself. Slowing smoothly to a stop and SLAM full on panic stop because I pressed the brake to the floor with my left foot.

I broke the (foot activated) parking break or my wife's old car by doing this...slamming on it like it was a clutch. She's never let me live that one down.

I've been driving manual transmission vehicles for around 25 years at this point. It's gotten to the point that when I drive a vehicle with an automatic transmission, I'll actually use the parking brake to hold it in place when stopped at a traffic light (while the car is in neutral). Before I start, I'll put the car into drive, release the parking brake and then press the accelerator to start moving. With a foot operated parking brake, it's sort of like using a clutch when starting :)

Bit of a tangent we're on here, but I wonder if HN disproportionately drives stick.

Many Europeans here I guess.

Automatic is frowned upon by many of us ;-)

Yes, people with automatic licenses are a running joke!

I guess when electric takes over that's all we'll have. I'll miss manual gears for sure.

New car has a CVT. I really wish it had a gear ratio "throttle" control, making it a manual (but no need for a clutch).

You can put your custom .vimrc online somewhere (like Github) and download it to new computers with wget. For quick edits on someone else's computer, using plain Vim isn't much trouble though.

I typically use vi for quick edits on servers and other developers computers.

That is is what drives me away from novel input methods and over-configured setups in general. On one hand it feels silly, but it feels a lot worse to be bewildered by a default setup.

Who is bewildered by a default setup, though? I think this is a ridiculously implausible straw man.

Ask any long-time DVORAK user and they'll tell you how hard it is when faced with a standard QWERTY.

I've used Dvorak as my primary layout for ~12 years now, and I'm just as capable at typing on QWERTY. Colleagues object if I set servers and test machines to a different keyboard layout.

The biggest struggle is words beginning "am" or "ma", the two keys which are in the same location on both layouts.

If you can learn to cope with changing between a Mac and non-Mac then you can learn to cope with changing keyboard layouts.

I'd recommend using only one layout when learning though: I switched solely to Dvorak when I was learning, then learned to use both side-by-side afterwards.

I know 5 long-time Dvorak users including myself and none has significant trouble using qwerty.

It's also very uncommon to have to type on somebody else keyboard (and not good for hygiene).

Perfect example, exactly why I don't use dvorak despite hearing its praises constantly. We live in a qwerty world.

I use Dvorak, and it's only once a month or so that I type more then two words on a Qwerty keyboard.

If I'm helping a colleague, I expect them to type, otherwise they probably won't remember anyway. Otherwise, all I'm likely to type is a couple of letters to search for a name on the video conferencing system or a YouTube video on a friend's computer.

Can I ask how long did it take you to be touch typing on dvorak and how would you describe the benefits?

I like the idea of 'better' input methods including key layout but in reality I've found it simpler to stick to the defaults of the world. I'd be interested to hear your experiences

I learnt during the summer after the first year of university, when I was working on a small summer project at the university. It can't have been more than two months, probably more like one. I didn't touchtype Qwerty, although I could type fairly fast while looking at the keyboard.

I made the "tent" showing the keyboard layout, as described at [1].

It's simply more comfortable to use Dvorak. The clearest way I have to show that is by tapping fingers on the table: it's much easier to go small-to-large than large-to-small. On Dvorak, that means typing digraphs like sn, st, sh, nt, nh, th is optimized (Qwerty equivalent: ;l ;k ;j lk lj kj — what a waste of easy-to-type combinations!). The reverse combinations are rarer in English: ht, hn, hs, tn, ts, ns.

All the rare letters are on the bottom row, so the most awkward movement — bottom row then top row — is minimized.

Added to that, hand alternation is much better, which is also more comfortable. Taking my first sentence, "after" and "was" are all on one hand, and trigrams like "ear" (learnt), "rst" (first), "ect" (project) are common, yet ugly to type on Qwerty.

If you can touchtype Qwerty, type this to simulate typing the first two sentences:

G pdaolk hfoglu kjd ;fmmdo aykdo kjd ygo;k tdao sy flg.do;gktw ,jdl G ,a; ,sovglu sl a ;mapp ;fmmdo roscdik ak kjd flg.do;gkte Gk ialqk ja.d nddl msod kjal k,s mslkj;w rosnanpt msod pgvd slde

To remain closer to the defaults of the world, I've never bothered with Colemak or similar. I can add Dvorak to any computer I use, which I will occasionally do if someone asks me to use their computer to take minutes in a meeting or similar.

[1] http://www.dvzine.org/zine/20-21.html

Thanks for the response! Typing that paragraph in dvorak definitely felt smoother than qwerty. The tent is a good idea for handling the switch, maybe I'll be a convert yet

Fortunately, no one will ever say that's why I don't use emacs despite hearing its praises constantly. We live in a vim world (or vice versa). :)

I used a vim config that was intuitive to me and that I loved before I used much of default vim and that's exactly how I felt... so...

Huh, that's completely opposite to my experience. Sure, I miss some niceties, but I can't say that I am anywhere close to baffled or confused by a default setup.

Your experience is unsurprising. It depends on how much time you spend in a default configuration and how disparate your config is to that default.

I have no qualms using default vim despite it not being my standard method of work, but I still hate the feeling of any case where some muscle memory sequence does not result in what I expect. Ideally I don't want to have to think about anything outside of the problem at hand at all, and this is exactly the kind of thing that breaks immersion.

Because of this, among other reasons, I like small configs, standard input methods, programs with sane defaults and having a simple dotfiles repo.

On this note I can't wait til the next best set of standard input/output comes along, like AR screen so we can move around freely and naturally while working... that's the dream

I hate how different vim behaves on Debian compared to other distros.

Right click paste? Nope. On Debian it changes to visual mode.

> On Debian it changes to visual mode.

If you put this in your .vimrc, it should allow you to paste from the system clipboard by pressing space-p:

    let g:mapleader = "\<Space>"
    nmap <leader>p "*p
    vmap <leader>p "*p
(Or use `"*p` or `"+p`, not including the backticks.)

That will only work if the xterm_clipboard feature is enabled at compile time with vim.



Oh, I'm not sure how it works on regular Debian. I'm using Ubuntu and it works out of the box here. I'm using neovim now, but it works with regular vim from the package manager too.

You can try running:

within vim to see what compile time features are enabled or disabled. If the list says +xterm_clipboard, then that feature is enabled.

In my experience, terminal vim doesn't have that feature enabled, but gvim does.

I've always used the + register to copy or paste text in vim (if X11 is enabled). Otherwise, I'll use xclip to handle interfacing with the clipboard.

    :w !xclip -selection clipboard

    :r !xclip -o -selection clipboard

Hmm. I don't think that works over ssh?

You may have to use the -display parameter though the man page for xclip says that it will use the value of $DISPLAY by default. You will also need to enable X11 forwarding over ssh with the -X parameter or with the ForwardX11 option in the ssh config file.

This has nothing to do with what distro you are using, except perhaps what termcap information it has. If vim detects that the terminal can support mouse input, then it will enable mouse features. If not, vim does not get control over mouse input and your terminal provides default mouse behavior (right-click paste). You can disable mouse features with the command ":set mouse -=a". If you're pasting into vim from a terminal, you may also be interested in the "set paste" command.

That seems unrelated to vim. Doesn't it depend on your terminal if right click will paste? Try Shift right click and see if it pastes like you expect.

But it works fine in Ubuntu. I am SSHing into both and they behave differntly.

This is a recent misfeature. The solution is set mouse=""


I use Vim on Debian Testing, and right-click paste works fine on Gnome Terminal and Konsole, but does visual mode like you find in Xterm or UXterm.

"During the day it calls itself a Vim Clutch, but at night its name is pornhubbrowserautohidepanic-button"

Nonetheless, it is a nice device, though I don't see myself relearning a muscle memory to use a pedal, which I will basically only have at home and/or work, but not when working somewhere remote on a notebook.

But if I had one, or had to use one, I'd probably bind ESC to it or alt+tab to cycle through 2 or 3 apps, editor/terminal/browser

I once worked on a piece of lab equipment where I needed to fit a plate into a robotic dispenser and then click the button to "start program." I didn't want to keep switching my hands from the dispenser to the mouse so I wired up a piano pedal to the left mouse button and it improved the ergonomics significantly.

I've programmed AutoHotKey on my work PC to map pressing both shift keys at the same to double click the left mouse button at the pointer's current location.

Replying to myself to add:

So what I really need then is mouse cursor movement by eye tracking + both-shift-keys for left double click.

Why isn't eye tracking for mouse movement a thing yet?

It is, but the first party software is awful for it. The videos you linked below are a pretty primitive version of what's currently available.

My own project: https://talonvoice.com (only requires a single eye tracker, has realtime precise movement similar to the eye+head projects below, and integrates with a very fast and powerful voice control system).

https://21clicks.net/share/-L5eU8SeIbUDcgsQa3_l - click Replay. This is completely hands-free using Talon's eye tracking and a noise recognizer (hiss to click). I consider what I have right now to be an unpolished tech demo, which will get significantly better as I cross many accuracy/speed TODOs off my list.

These projects require both a eye and head tracker (are still fast and precise):

- https://github.com/trishume/PolyMouse

- https://github.com/trishume/FusionMouse

- http://precisiongazemouse.com/

Miscellaneous, not quite as well integrated:

- http://kinesicmouse.xcessity.at/

- http://iris.xcessity.at/

This looks interesting, I'll have look later.

Thanks for reminding me of Dragon by Nuance. I first saw Dragon being used by a quadriplegic guy I used to work for. This was ~10 years ago, he had a bit of a speech impediment too and it worked reasonably well.

I occasionally think about Dragon and think it might be useful in my 2D CAD and laser cutter workflow. It actually seems reasonably priced, so maybe I'll give it a whirl.

When I say "fast and powerful", I mean what I've built which can use Dragon as a backend, not Dragon itself. Their user-facing command system is very limited (single trigger phrase, bad support for passing arguments to commands, must pause after talking). I have continuous recursive command recognition (you can say hundreds of commands in a minute, my record for perfect accuracy is ~280) and a command system that is leagues beyond Dragon's (and it's free on top of Dragon).

I plan to build/support professional workflows like CAD. I'd love to hear about your needs. I strongly believe eye + voice can greatly surpass keyboard/mouse in many environments.

I’ve sent an email to the one listed in your profile. Thanks.

I think everyone with two monitors has lamented the lack of a 'focus-follows-eyes'. The problem is that you are often reading from window A while typing into window B. So you'd have to be able to switch in and out of ffe. And I don't know about you, but I would never remember to switch. Pretty sure that would defeat the purpose.

I'd love to see someone play with the UI though.

Ah, yeah, that's a very good point.

Perhaps wink-left and wink-right could be used as modifiers to prevent FFE, or whatever customisation the user prefers.

I worked on a project a few years ago to build a system that used eye-tracking for context-sensitive voice commands. Imagine being able to say "zoom in" and have the computer zoom in at the place you're looking. Unfortunately the eye-tracking was never accurate enough for it to provide a good experience.

Because your eyes are constantly moving. https://en.m.wikipedia.org/wiki/Saccade

So I did some clicking and it turns out laptops and monitors are available, as well as a peripheral device, that appears to do eye tracking quite well.




Might have to get one of these...

I did something like this on work. In our intern ordering process we have to copy/paste over 10 data fields. So I made a box with an Arduino Micro and some buttons on it to copy/paste all fields in once.

It's not just speed. This also improves the usability of vim by turning insert mode into a pseudo-mode, which is a mode that requires constant interaction (depressing the pedal) to be maintained.

Pseudo-modes are generally much less error prone than normal modes, the canonical example being the shift vs. caps lock keys.

Do you have any literature on this being called a pseudo-mode and the tradeoffs between it and "real" modes? I am currently pretty interested in these kinds of topics.

I'm sorry, I don't know of any online resources (and after googling, it seems the more common term is "quasimode") but I can heartily recommend the book The Design of Everyday Things by Donald Norman. It's a seminal book on designing interactions between humans and objects, and was required reading in my human-computer interaction class in college.

Map to control and you got yourself an Emacs pedal.

Do you need to double clutch before shifting a row?

I think emacs needs it more than vim. :)

That reminded me of this greentext: https://i.imgur.com/WLzeQMj.png

I did this a while ago as well: https://github.com/aaronblohowiak/clutch

I stole my wifes sewing machine foot-pedal for a similar project recently https://github.com/tessi/programming_paddle (code there is hacky, don't jude ;))

It's an interesting and easy project to start soldering/arduino-fiddling. Parts can be purchased with approx. $25.

In comparison to the pedal used in the vim clutch, the sewing machine pedal has the advantage of not only having an on/off state, but returning the pedal-pressure (so half-ressed and all sorts of combos are possible).

Currently, I use it for sublime-text shortcuts (cmp+p on half-press and cmd+shift+p on deep-press) or for debugging (ctrl+d to continue code execution).

edit: typo

The reason I learned how to use vi was it's ubiquity. If I develop muscle memory which requires carrying around a USB pedal I'm not going to have a good time on any but my own workstation. Not sure it's worth it.

When I was first learning emacs and trying to figure out a sane way to type double bucky[1][2] commands, I happened to read about a project like this for using pedals as modifier keys.

However, instead of using the obvious hardware approach for the time - probably using a couple momentary switch pedals and reading them from the parallel port - I had a much better^Wmore fun idea: use a MIDI organ pedal board[3]. I already had a MIDI interface (Midiman MM-401), and I had already dreamed of getting such pedals for regular keyboard use. Having 1-2 octaves available was plenty of room for all kinds of extra macros and/or hotkeys.

I was half way through writing a simple daemon that would listen for MIDI and send the appropriate synthetic X11 KeyPress/KeyRelease events when I finally looked into where I could buy a pedal board, and realized they were $600+ (in mid-90s dollars). ~sigh~

[1] e.g. "C-M-SPC" for mark-sexp

[2] http://catb.org/jargon/html/D/double-bucky.html

[3] anything similar to this: http://www.nordkeyboards.com/products/nord-pedal-keys-27

My friend and I converted an old organ pedal board to digital using some magnets, reed switches, and an arduino. Mounting the reed switches on foam board was a fast easy hack. It did require a real organ seat though because of the length of the pedals.

Great idea! I've messed around with things like this in the past, though I've used my pedals for music editing and DJ software. I opened sourced my last attempt, which includes a neat little python GUI to reprogram the keys (https://www.manykey.org/).

Haven't tried foot keys with an editor, but it seems like once you integrated them into your workflow they would be quite useful.

I tried something similar to this, but I didn't like it. After using it for a bit, I realized I often use commands other than i to get into insert mode. For example, I may use ci" to edit everything inside a pair of quotation marks. I wrote a bit more about my setup here: https://jeffamcgee.com/using-a-vim-clutch.html

Clearly what is needed is not a foot switch, but a true clutch a la piano/sewing pedal.

The farther down you press, the bigger the text size.

Great for presentations on stage too.

Why stop there? Why not grab a MIDI-powered Organ footboard and get a ton of switches?

You could probably use a bunch of them for programming macros, like moom layout shortcuts, class skeletons, lock-screen, etc.

You could presumably interface a midi controller to do this

Around 2001 I made a pedal from Radio Shack parts and connected it to the Backspace key on an IBM Model M keyboard.

Why Backspace? It was a gift for a friend who had what we called Rusty Degenerative Typing Syndrome. His typo rate was just terrible.

The pedal did not improve his typing error rate but it night have saves hid friends a lot of contusion.

This project is very old. I tried it and it was funny at the beginning, but considering muscle memory this is not something I want to invest in the long run due to limited portability.

Remapped capslock to control and control + [ works much better.

Vim clutch does not work with standing desk setup ;) don't ask me how do I know that.

I'm imagining you at work trying to code standing on one foot while pressing on the other to insert characters. must be very graceful

you should stay on your toes the whole day and press the pedals with your heels

I tried this a few years back and really wanted it to work. Ended up ditching it though. My foot is too slow.

> I tried this a few years back and really wanted it to work. Ended up ditching it though. My foot is too slow.

It seems like riding a bicycle or typing on a new keyboard. At some point, it becomes natural.

On a side note, I wonder since USB input is polled whether or not it would make sense to look for a toggle in the inputs rather than using two switches.

Pretty awesome. I built one of these for world of warcraft to be my 'push to talk' key for teamspeak. Since I have used it for a variety of things. However I started with a standard pedal (1/4" phone plug type) and used a Cypress USB controller dev kit (free from one of their training classes) which had a small uP and a USB controller on it.

I'll have to see how 'clutch' mode works (I'm a VIM user). There was a person who showed off a hacked organ base pedal unit that had been improved to send keystrokes in a similar way.

For me I could see sending one, or two key strokes. Sending 10 or 12 seems like overkill.

This is cool and all, but coming from the emacs world, all I want is a keyboard with four meta keys. Ctrl/alt/command/option maybe. All in a row to the left/right of the spacebar. That would be ideal.


Also, if you have a 104/105 key keyboard with "windows" and "menu" keys, you do& have a keyboard with four modifier keys. From my .Xmodmap file:

    clear Mod1
    clear Mod3
    clear Mod4
    clear Mod5

    ! left alt -> Meta
    keycode 64 = Meta_L
    add Mod1 = Meta_L

    ! right alt -> Alt
    keycode 108 = Alt_R
    add Mod4 = Alt_R

    ! left windows -> Super
    keycode 133 = Super_L
    add Mod3 = Super_L

    ! right windows -> Hyper
    keycode 134 = Hyper_R
    add Mod5 = Hyper_R
Emacs uses all four automatically, as M- A- s- H- respectively. (alternatively, see: http://ergoemacs.org/emacs/emacs_hyper_super_keys.html )

Caution, that kills the ISO_Level3_Shift mapping on the regular 105 layout.

Much less intrusive solution is to leave Super_L, Alt_L, ISO_Level3_Shift as well as the control and shift keys unchanged and simply map Super_R to Meta_R and map Menu to Hyper_R.

Have you tried Japanese keyboards? They tend to have smaller spacebars and extra modifiers.

how about a myoelectric muscle sensor instead? something like https://www.sparkfun.com/products/13723

Actually I did think of the desirability of exactly this somewhere around 1984 or thereabouts. It didn't go further than a wish though because the only access to the Unix system that I'd installed for use by the group I managed was via dumb terminals and the DIY arena was nowhere near as rich as it is now. Especially in a building in a corn field somewhere between Rockford, IL and Belvidere, IL:-)

If wishes were fishes we'd all swim in riches. Really nice job moving beyond that!

I've thought of this for the shift keys, I find that certain key combinations that require shift are a lot more awkward for my hands to do and I wonder if year after year eventually that is going to give me arthritis or increase the chances of it. I think that with a pedal it might make +, -, {, }, (, ) etc much easier on the hands to complete since they account for the worst stretches my hands have to make.

> ... wonder if year after year eventually that is going to give me arthritis or increase the chances of it.

This is precisely the reason I picked-up an ergodox [1] when my wrists started to hurt from `ctrl+whatever` key combos. moving modifier keys to the thumbs is so obviously superior I'm not sure why it's not more common.

admittedly it felt ridiculous to pay ~$250 for a keyboard (thanks, ebay), but now i almost never have to contort my wrists into weird angles &

[1] https://www.ergodox.io/

i is the simplest but not the only way to enter insert mode. o/O for new lines, c/R to replace text. An 'i-esc' foot pedal doesn't grok vi


I too hated the need to press <Esc> all the time when I started with vi. It sounded as bad for wrists as the Ctrl key for Emacs.

The trick I've found (I don't remember where) and used ever since is to map the "kj" sequence to <Esc>, since it's otherwise unlikely in normal text. It's just a simple instruction in the vim config:

:imap kj <Esc>

That foot pedal is a cute project though.

Alt-l (lowercase L) works out of the box and doesn't move the cursor. I also map a press and release of capslock to escape for when I need that (it's control the rest of the time).

I just tried this and Alt-l seems to move to the line above (equiv. to Esc+l), Alt-J the line below, and in gvim it produces some accented characters for me. It would have been a good combination for finger movement though.

Remapping esc with capslock mod has definitely helped me maintain sanity. I'm still using the prev gen MBPs but I can only imagine the frustration the new MBPs introduce by omitting a physical esc key.

I use capslock for escape

This reminds me of an ArsTechnica story from some years back, $500 for some rugged steel pedals for a flight simualator:


This is a surprisingly low tech solution. You could program a digispark to do this for $3.

Two USB ports and controllers just to press I and escape? Crazy.

I use foot pedals used in the transcription space such as something a stenographer would use. Philips makes good foot pedals. They're pretty robust. There's utilities for reprogramming what the button press triggers, mine's set for copy / paste. Pedable is good, and there's an advanced tool called ControllerMate worth looking into.

I have been really tempted by the ergodox ez, but really wish it supported pedal input as that would make a "pedal layer" super easy access.

I do play the organ and drums and have been most of my life, so maybe that's why the idea of having additional keys available via pedals is right up my alley :)

Hey, I have an ergodox ez. I'm wondering what you mean by "pedal layer". Like pressing the pedal would move you to another layer?

The ergodox does precisly that and supports up to 32 layers.

that's what I mean, having a pedal connector on the keyboard where I could plug a pedal in and use it to switch to a different ergodox layer (which as of now I assume you do just via another key). The kinesis does have a pedal input, but I don't think the ergodox ez has it, or does it? the website does not say anything about it...

My bad. No the ergodox doesn't has this.

no worries, who knows, maybe in a future revision it might

> Has anyone thought of this before?

Yes I overheard a conversation between two guys once where one talked about using a hardware pedal with Vim and the other jokingly replied “are you going to install a steering wheel and a gearshift also”.

But in all seriousness I think a good pair of pedals could potentially be nice.

It makes me wonder: Maybe a two-pedal system (ctrl and meta) for Emacs would avoid carpal tunnel issues.

I described a quick setup that helps me tremendously (see my comment elsewhere in the thread).

It's pretty cool, but all i can think of is that I would need different pedals for i, I, a and A, since I use them all about the same depending on where I want to edit.

I always thought Emacs was the one that needed foot pedals.

Back in the late 80's, my housemate told me about his coworker who made a footpedal ESC key to make his EMACS editing faster.

I've thought about something like this for a long time. Not for coding but pc use and gaming.

Same here, always thought it would make a great push-to-talk button for voice chat.

If you are currently using your keyboard for push-to-talk and your mouse allows it, I highly recommend binding the/a side mouse button to push to talk.

I want videos of people doing this.

Thank you.

Wish there was a way to do this with iPad/ssh, maybe over Bluetooth?

i always thought it would be awesome to switch between dvorak and qwerty using a pedal, where you keep switching between the optimal key layout for the next set of characters

use it with two pedals and you can make a 2 row keyboard, with the bottom row exclusively for space and modifiers

Wrong. (being the first to do this that is.) One of the creators of the Zeus web server did this writing Zeus while in college. Still a great idea, and of course, vim is awesome.

I couldn't use this because I only work on a laptop on a couch. I haven't sat at a desk in years. (And yes I also exercise to stay alive).


I was going to say, what's with the Mac Pro tower?!

I still use a Mac Pro tower at home. Put a Sandy Bridge CPU, 32GB ram and SSDs in raid, still runs great today.

It’s a very pretty case and the hardware definitely runs vim fine :D

I don't think vim will have changed too much since then.

Added - thanks!

Last commit on the repo is 6-7 years ago, so a "(2011)" or "(2012)" tag would probably be apt.

Added. Thanks!

With this contraption you'll be nearly as efficient as out of the box Emacs!

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