; dvorak-mode.el ; ; by Matthew Weathers, circa 1996, published 2004 ; ; http://www.matthewweathers.com ; email address: (my two initials)@matthewweathers.com ; ; This is probably not the best way to do it, but it works, and it is ; what I have been using for 8 years. See also ; http://www.mwbrooks.com/dvorak/qwerty.el for another version, by ; Neil Jerram. My version translates the keys in just the current ; buffer. Neil's version translates the keys in all buffers, and can ; translate the CTRL keys, too. I prefer to use Dvorak just when ; typing text, not in a shell, or with the control sequences. ; Define M-2 (Escape then "2") to turn on Dvorak mode ; Define M-1 to turn it off ; (you may want to set your own keys) (global-set-key "\e1" 'dvorak-off) (global-set-key "\e2" 'dvorak-on) (defvar dvorak-mode-map () "Dvorak Keymap.") (defvar previous-map () "Pre-Dvorak Local Keymap.") (defun dvorak-on () "Turn Dvorak keyboard on." (interactive) (message "Dvorak keyboard ON, ESC-1 to turn off") (progn (if (current-local-map) (progn (setq dvorak-mode-map (copy-keymap (current-local-map))) (setq previous-map (copy-keymap (current-local-map)))) (progn (setq dvorak-mode-map (make-sparse-keymap)) (setq previous-map nil))) (define-key dvorak-mode-map "q" 'dvorak-insert) (define-key dvorak-mode-map "w" 'dvorak-insert) (define-key dvorak-mode-map "e" 'dvorak-insert) (define-key dvorak-mode-map "r" 'dvorak-insert) (define-key dvorak-mode-map "t" 'dvorak-insert) (define-key dvorak-mode-map "y" 'dvorak-insert) (define-key dvorak-mode-map "u" 'dvorak-insert) (define-key dvorak-mode-map "i" 'dvorak-insert) (define-key dvorak-mode-map "o" 'dvorak-insert) (define-key dvorak-mode-map "p" 'dvorak-insert) (define-key dvorak-mode-map "Q" 'dvorak-insert) (define-key dvorak-mode-map "W" 'dvorak-insert) (define-key dvorak-mode-map "E" 'dvorak-insert) (define-key dvorak-mode-map "R" 'dvorak-insert) (define-key dvorak-mode-map "T" 'dvorak-insert) (define-key dvorak-mode-map "Y" 'dvorak-insert) (define-key dvorak-mode-map "U" 'dvorak-insert) (define-key dvorak-mode-map "I" 'dvorak-insert) (define-key dvorak-mode-map "O" 'dvorak-insert) (define-key dvorak-mode-map "P" 'dvorak-insert) (define-key dvorak-mode-map "s" 'dvorak-insert) (define-key dvorak-mode-map "d" 'dvorak-insert) (define-key dvorak-mode-map "f" 'dvorak-insert) (define-key dvorak-mode-map "g" 'dvorak-insert) (define-key dvorak-mode-map "h" 'dvorak-insert) (define-key dvorak-mode-map "j" 'dvorak-insert) (define-key dvorak-mode-map "k" 'dvorak-insert) (define-key dvorak-mode-map "l" 'dvorak-insert) (define-key dvorak-mode-map ";" 'dvorak-insert) (define-key dvorak-mode-map "S" 'dvorak-insert) (define-key dvorak-mode-map "D" 'dvorak-insert) (define-key dvorak-mode-map "F" 'dvorak-insert) (define-key dvorak-mode-map "G" 'dvorak-insert) (define-key dvorak-mode-map "H" 'dvorak-insert) (define-key dvorak-mode-map "J" 'dvorak-insert) (define-key dvorak-mode-map "K" 'dvorak-insert) (define-key dvorak-mode-map "L" 'dvorak-insert) (define-key dvorak-mode-map ":" 'dvorak-insert) (define-key dvorak-mode-map "z" 'dvorak-insert) (define-key dvorak-mode-map "x" 'dvorak-insert) (define-key dvorak-mode-map "c" 'dvorak-insert) (define-key dvorak-mode-map "v" 'dvorak-insert) (define-key dvorak-mode-map "b" 'dvorak-insert) (define-key dvorak-mode-map "n" 'dvorak-insert) (define-key dvorak-mode-map "," 'dvorak-insert) (define-key dvorak-mode-map "." 'dvorak-insert) (define-key dvorak-mode-map "/" 'dvorak-insert) (define-key dvorak-mode-map "Z" 'dvorak-insert) (define-key dvorak-mode-map "X" 'dvorak-insert) (define-key dvorak-mode-map "C" 'dvorak-insert) (define-key dvorak-mode-map "V" 'dvorak-insert) (define-key dvorak-mode-map "B" 'dvorak-insert) (define-key dvorak-mode-map "N" 'dvorak-insert) (define-key dvorak-mode-map "<" 'dvorak-insert) (define-key dvorak-mode-map ">" 'dvorak-insert) (define-key dvorak-mode-map "?" 'dvorak-insert) (define-key dvorak-mode-map "\'" 'dvorak-insert) (define-key dvorak-mode-map "\"" 'dvorak-insert) (define-key dvorak-mode-map "[" 'dvorak-insert) (define-key dvorak-mode-map "{" 'dvorak-insert) (define-key dvorak-mode-map "-" 'dvorak-insert) (define-key dvorak-mode-map "_" 'dvorak-insert) (use-local-map dvorak-mode-map))) (defun dvorak-off () "Turn Dvorak keyboard off." (interactive) (message "Dvorak keyboard OFF, ESC-2 to turn on") (use-local-map previous-map)) (defun dvorak-insert () (interactive) "Translate typed key into Dvorak keyboard." (progn (cond ((= last-command-char ?m) (insert "a")) ((= last-command-char ?q) (insert "'")) ((= last-command-char ?w) (insert ",")) ((= last-command-char ?e) (insert ".")) ((= last-command-char ?r) (insert "p")) ((= last-command-char ?t) (insert "y")) ((= last-command-char ?y) (insert "f")) ((= last-command-char ?u) (insert "g")) ((= last-command-char ?i) (insert "c")) ((= last-command-char ?o) (insert "r")) ((= last-command-char ?p) (insert "l")) ((= last-command-char ?Q) (insert "\"")) ((= last-command-char ?W) (insert "<")) ((= last-command-char ?E) (insert ">")) ((= last-command-char ?R) (insert "P")) ((= last-command-char ?T) (insert "Y")) ((= last-command-char ?Y) (insert "F")) ((= last-command-char ?U) (insert "G")) ((= last-command-char ?I) (insert "C")) ((= last-command-char ?O) (insert "R")) ((= last-command-char ?P) (insert "L")) ((= last-command-char ?s) (insert "o")) ((= last-command-char ?d) (insert "e")) ((= last-command-char ?f) (insert "u")) ((= last-command-char ?g) (insert "i")) ((= last-command-char ?h) (insert "d")) ((= last-command-char ?j) (insert "h")) ((= last-command-char ?k) (insert "t")) ((= last-command-char ?l) (insert "n")) ((= last-command-char ?\;) (insert "s")) ((= last-command-char ?S) (insert "O")) ((= last-command-char ?D) (insert "E")) ((= last-command-char ?F) (insert "U")) ((= last-command-char ?G) (insert "I")) ((= last-command-char ?H) (insert "D")) ((= last-command-char ?J) (insert "H")) ((= last-command-char ?K) (insert "T")) ((= last-command-char ?L) (insert "N")) ((= last-command-char ?:) (insert "S")) ((= last-command-char ?z) (insert ";")) ((= last-command-char ?x) (insert "q")) ((= last-command-char ?c) (insert "j")) ((= last-command-char ?v) (insert "k")) ((= last-command-char ?b) (insert "x")) ((= last-command-char ?n) (insert "b")) ((= last-command-char ?\,) (insert "w")) ((= last-command-char ?\.) (insert "v")) ((= last-command-char ?/) (insert "z")) ((= last-command-char ?Z) (insert ":")) ((= last-command-char ?X) (insert "Q")) ((= last-command-char ?C) (insert "J")) ((= last-command-char ?V) (insert "K")) ((= last-command-char ?B) (insert "X")) ((= last-command-char ?N) (insert "B")) ((= last-command-char ?<) (insert "W")) ((= last-command-char ?>) (insert "V")) ((= last-command-char ??) (insert "Z")) ((= last-command-char ?\') (insert "-")) ((= last-command-char ?\") (insert "_")) ((= last-command-char ?[) (insert "/")) ((= last-command-char ?{) (insert "?")) ((= last-command-char ?-) (insert "[")) ((= last-command-char ?_) (insert "{")) ) ))