How to not switch to Dvorak

Once in a while, I practice to improve my touch typing skills. Most of the time, I just find some online stuff or use KTouch. But today, I wanted to try something different. I always hear good things about the Dvorak keyboard layout — i.e., how it’s supposedly more efficient and more comfortable than the Qwerty layout. Being a curious person, I wanted to test this out.

So when I opened up KTouch, I selected the Dvorak lecture, instead of the typical Qwerty one. The first lessons were fairly easy. As I went through the lecture, I managed to keep a fairly high pace and accuracy – i.e., about 210 characters per minute with a 95% accuracy. About at the fifth or sixth lesson, I said to myself: “Wow, I must have been a Dvorak typist in another life.” I was really impressed how quickly I had learnt the basics of the layout and I was indeed starting to believe that the Dvorak layout was vastly superior to Qwerty.

Shortly after, I was sold. At this point, I was thinking how was going to remap my Emacs key bindings.

However, when I got to the tenth lesson, I found something strange, very strange. The letter ‘q’ on the Dvorak layout was in the upper row on the left — exactly where it is on the Qwerty layout.

I stopped typing for a second…

…and look at the keyboard displayed on the screen.

“asdf asdf asdf”

Oops! I had forgot the change the actual layout of my keyboard. So, I was still using Qwerty.

Now, I realize that I have been victim of what they call the “placebo effect”. This little anecdote has certainly thought me to be more careful, in the future, when trying something new sold has “better”.

· RSS feed for comments on this post


  1. Martial Boniou said,

    January 9, 2008 @ 11:07 am

    I use dvorak keyboards for 3 years now and it’s a real great pleasure for me. As a vim user, I even noticed that this layout is better than the Qwerty. I think that giving up for key bindings problem is not a good reason, especially when we are developers (software are our slaves, not the contrary). Of course, it’s a bit hard to switch, especially when we may work on the machines of other users. Let me give you my key binding tips for your emacs (brackets are here to show you the position on a Qwerty layout):

    ;;; Sun functions keys' order
    C-; C-;  kill-region [C-z C-z]
    C-; C-a yank [C-z C-a]
    C-; C-' copy-region-as-kill [C-z C-q]
    ;;; because of the copy-paste remapping, C-w and C-h are used in the VT100
    C-w backward-kill-word
    C-h delete-backward-char
    ;;; undo and redo
     redo (beware of MS, need redo.el)
    ;;; linemark.el
    C-' viss-bookmark-toggle [C-q]
    C-" viss-bookmark-clear-all-buffer (memo: C-S-') [C-Q]
    C-, viss-bookmark-prev-buffer (memo: , is "" place too) [C-e]
    ;;; delete the current line a la vi with dd
    ; C-` nuke-line

    I must say that I use ‘Ctrl’ in the classical place (Atari, NeXT, SUN, AT) where the ‘Caps-lock’ key is now on Mac and PC. So I have all my previous bindings available with my left hand. I hope this help!

  2. Alexandre said,

    January 9, 2008 @ 9:50 pm

    I haven’t given up Dvorak yet. It is just, right now, I don’t have any reason to learn it — i.e., I am happy with my typing speed and the Qwerty layout doesn’t feel uncomfortable to me — except for the fun learning something new.

    ;;; delete the current line a la vi with dd
    ; C-` nuke-line

    Hm. I think am going to steal you that one. If you are interested, you can steal one of my key bindings in exchange. :-)

  3. Martial Boniou said,

    January 10, 2008 @ 5:32 am

    No problem!

    (defvar previous-column nil "Save the column position")
    (defun nuke-line()
      "kill the entire current line"
      (setq previous-column (current-column))
      (if (= (current-column) 0)
        (delete-char 1)
          (delete-char 1)
          (move-to-column previous-column))))

    Et voilĂ !

  4. Alexandre said,

    January 10, 2008 @ 10:27 pm

    Thanks! I did a small modification to avoid the global variable. Here is the result:

    (defun nuke-line ()
      "Kill the entire current line"
      (let ((previous-column (current-column)))
        (if (= (current-column) 0)
            (delete-char 1)
              (delete-char 1)
              (move-to-column previous-column)))))