Hacker News new | ask | show | jobs
by nfriend 1108 days ago
Anecdotally, I gave Dvorak a try and became somewhat proficient, but ultimately reverted back to QWERTY for one reason: keyboard shortcuts! Control-C|V|Z are all transformed into either two-handed shortcuts or right-handed shortcuts. In either case, I can't copy/paste while selecting text with the mouse (since I'm right-handed).

I now use Colemak (https://colemak.com/) which doesn't have this issue and I'm quite happy with!

7 comments

Good point, but IMO mechanical programmable keyboard with hardware shortcuts are the way to go. That way you can remap to one-handed, or even one button, or whatever you like. You can even take it with you between machines. It's like a portable "human interface" that stays with you.
On Mac, you have the "Dvorak - QWERTY ⌘" layout which retains QWERTY shortcuts.
I used to love this, eventually just took the plunge and learnt the shortcuts though and I'm more productive because I can use non-Mac Dvorak layouts.
I'm a dvorak user and never really found a way around the shortcut issue. Mac has a native option to use Dvorak with QWERTY shortcuts which is what I prefer, but on windows you have to use buggy programs to map the shortcuts over. Never found anything that worked great. Linux is even worse since you have to mess around with the OS to get it to work, and is a bit different between distros / flavors.

In the end I use a Ergodox keyboard that switches the layout to QWERTY if you hold down the control key, works flawlessly and haven't had to deal with it since.

15 years on dvorak and shortcuts are the primary impediment. The mac tweaked shortcuts work nicely, but they're not consistent. Swing based UI ignores them. It's also still a bit confusing dealing with ctrl-* vs anything that has a cmd, including cmd-opt-shift-* etc. Seems like re-implementing the mac tweak but in a more complete way manually in qmk would be the ultimate cross-platform solution.
For me it was the burden of typing 'ls'. I'm in the shell a lot, and the dvorak layout is very much _not_ shell friendly.
This depends on taste. I find it very easy to type "ls" on Dvorak, where it is typed with the same finger on adjacent keys.

Moreover, the variant of Dvorak that I use is much more shell-friendly than any QWERTY layout.

While for the alphabet and for the punctuation signs that are used in natural languages I use a layout closer to the initial Dvorak layout from 1932 than to the modern Dvorak layout, for the other non-alphanumeric symbols I have made a few changes that I consider best for typing shell commands or other kinds of programs.

The pre-WWII Dvorak layout does not say anything about most non-alphanumeric symbols and there are no suitable standards for them (i.e. any standards than are based on rational criteria, not on preserving a random historical layout), so anyone who wants an optimal keyboard for programming or work with a command-line interface should design a custom layout for the non-alphanumeric symbols, according to taste and experience.

Sorry, I don't follow: `ls` is dragging your right pinky downward. How is that not shell friendly?

(I mean, to each their own, I use dvorak because other layouts hurt my hands, but I would presume there are better non-shell-friendly examples -- but interestingly, I couldn't readily find them since `mv` is also just the right hand, unlike its qwerty friend)

"ls -l" is a bit awful as it's all with the right pinky finger. Compared to pretty much everything else I type on Dvorak, it's terrible.

I have "alias hh='ls -l'" in my .zshrc.

I've been using dvorak exclusively for over 20 years. Best investment of my career. I don't bother remapping keys and just learn them however they land on the layout.
For Emacs controls, I found that Dvorak is not much of a problem after remapping it a tiny bit:

    (keyboard-translate ?\C-c ?\C-n)
    (keyboard-translate ?\C-h ?\C-c)
I ended up with the following[0]

    (keyboard-translate ?\C-x ?\C-t)
    (keyboard-translate ?\C-t ?\C-x)
Along with a quick function to make sure I don't forget :)

    (global-set-key
     (kbd "C-t") 
     (lambda ()
       (interactive)
       (run-with-timer 
        0.3 nil 
        (lambda ()
          ;; Assuming these are the default values
          (setq visible-bell nil)
          (setq ring-bell-function 'ignore)))
       (setq visible-bell t)
       (setq ring-bell-function nil)
       (error "Don't press that button.")))
[0]: https://github.com/codemac/config/blob/master/emacs.d/boot.o...
I use a TypeMatrix keyboard to get around the moved keyboard shortcut keys for copy paste.