Advertisement
Guest User

colemak.el

a guest
Mar 4th, 2018
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. (require 'quail)
  2.  
  3. ;; consumes list of from-to string pairs
  4. (defun make-rules (l)
  5. (mapcan
  6. (lambda (pair)
  7. (let ((fl (string-to-list (car pair)))
  8. (tl (string-to-list (cadr pair))))
  9. (mapcar*
  10. (lambda (fc tc)
  11. (list (string fc) tc))
  12. fl tl)))
  13. l))
  14.  
  15. (defvar colemak-letters
  16. '(("qwertyuiop[]\\"
  17. "qwfpgjluy;[]\\")
  18. ("QWERTYUIOP{}|"
  19. "QWFPGJLUY:{}|")
  20. ("asdfghjkl;'"
  21. "arstdhneio'")
  22. ("ASDFGHJKL:\""
  23. "ARSTDHNEIO\"")
  24. ("zxcvbnm,./"
  25. "zxcvbkm,./")
  26. ("ZXCVBNM<>?"
  27. "ZXCVBKM<>?")))
  28.  
  29. (defvar colemak-nums
  30. '(("`1234567890-="
  31. "~!@#$%^&*()-=")
  32. ("~!@#$%^&*()_+"
  33. "`1234567890_+")))
  34.  
  35. (quail-define-package
  36. "english-colemak" "English" "Cl@" t
  37. "another docstring"
  38. nil ;translation keys
  39. t ;foget-last-selection
  40. t ;deterministic
  41. t ;kbd-translate
  42. t ;show-layout
  43. nil ;create-decode-map
  44. nil ;maxumum-shortest
  45. nil ;overlay-plist
  46. nil ;update-translation
  47. nil ;conversion-keys
  48. t) ;simple
  49.  
  50. (eval (append '(quail-define-rules)
  51. (make-rules colemak-letters)))
  52.  
  53. (quail-define-package
  54. "english-colemak-num" "English" "Cln@")
  55.  
  56. (eval (append '(quail-define-rules)
  57. (make-rules (append colemak-letters colemak-nums))))
  58.  
  59. (provide 'english-colemak)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement