diff --git a/.gitignore b/.gitignore index 8348a0d..a657e0e 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ TAGS /colemak.tex /qwerty.pdf /qwerty.tex +*.tex diff --git a/Makefile b/Makefile index 10b037d..c48f1a7 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +all: sheets + emacs ?= emacs sheets: colemak.pdf qwerty.pdf qwertz.pdf workman.pdf diff --git a/README.md b/README.md index 5dcf540..1a0da50 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,7 @@ Installation REQUIREMENTS - Emacs version >= 25.1 -- Qwerty, Qwertz or Colemak layout (Workman version partially implemented). +- Qwerty, Qwertz or Colemak layout (Workman version partially implemented -- contributions welcome). Install Boon (perhaps using [![MELPA](http://stable.melpa.org/packages/boon-badge.svg)](http://stable.melpa.org/#/boon)), diff --git a/boon-tutorial.el b/boon-tutorial.el index ea689d4..9b0b04b 100644 --- a/boon-tutorial.el +++ b/boon-tutorial.el @@ -15,17 +15,18 @@ (concat "[" (-reduce (lambda (x y) (concat x "," y)) - (--map (let* ((b (lookup-key map (make-vector 1 it))) - (mn (boon-mnemonic-noformat b map))) - (format "(%d,(%S,\"%S\"))" it mn - (cond ((symbolp b) b)))) - (-concat - (-iterate '1+ ?A 26) - (-iterate '1+ ?a 26) - '(?\; ?: ?- ?' ?, ?. ?< ?> ?/ ?? 32 ?\") - ))) + (-non-nil + (--map (let ((b (lookup-key map (make-vector 1 it)))) + (when b + (format "(%d,(%S,\"%S\"))" it (boon-mnemonic-noformat b map) + (cond ((symbolp b) b))))) + (-concat + (-iterate '1+ ?A 26) + (-iterate '1+ ?a 26) + '(?\; ?: ?- ?' ?, ?. ?< ?> ?/ ?? 32 ?\" ?ö ?ä ?Ö ?Ä))))) "]")) + (defun boon-dump-cheatsheet (flavour) "Dump cheatcheat info for FLAVOUR." (let ((el (concat "boon-" flavour ".el"))) diff --git a/cheat-sheet.hs b/cheat-sheet.hs index 48a97c7..37e79e5 100644 --- a/cheat-sheet.hs +++ b/cheat-sheet.hs @@ -89,19 +89,20 @@ dropR n = reverse . drop n . reverse keyHalf :: [(String, (TeX, Argument, TeX))] -> String -> TexDiagram Object -keyHalf kmInfo k = case lookup k kmInfo of - Nothing -> error $ "key (" ++ k ++ ") not found in keymap." - Just (act,arg,mnem) -> do - up <- using (fill (argColor arg)) $ draw $ box "keyHalf" - upK <- label "k" $ textSize Huge $ sans $ textual $ k - upT <- label "scr" $ varwidth "45pt" $ sans $ textSize ScriptSize $ act - m <- (label "mnem" $ sans $ textSize Tiny $ mnem) - m # SW .=. up # SW - up # E .=. upT # E - up # W .=. upK # W - width up === constant keySize - height up === constant (keySize / 2) - return up +keyHalf kmInfo k = do + let (act,arg,mnem) = case lookup k kmInfo of + Nothing -> (mempty,Reserved,mempty) + Just (act,arg,mnem) -> (act,arg,mnem) + up <- using (fill (argColor arg)) $ draw $ box "keyHalf" + upK <- label "k" $ textSize Huge $ sans $ textual $ k + upT <- label "scr" $ varwidth "45pt" $ sans $ textSize ScriptSize $ act + m <- (label "mnem" $ sans $ textSize Tiny $ mnem) + m # SW .=. up # SW + up # E .=. upT # E + up # W .=. upK # W + width up === constant keySize + height up === constant (keySize / 2) + return up keyDiagram :: [(String, (TeX, Argument, TeX))] -> String -> Diagram TeX Tex Object @@ -207,6 +208,22 @@ main = do ,rightHandK = [["y","u","i","o","p",""] ,["h","j","k","l",";","'"] ,["n","m",",",".","/",""]]} + "qwertz" -> cs + {leftHandK = [["q","w","e","r","t"] + ,["a","s","d","f","g"] + ,["y","x","c","v","b"]] + + ,rightHandK = [["z","u","i","o","p",""] + ,["h","j","k","l","ö","ä"] + ,["n","m",";",":","-",""]]} + "workman" -> cs + {leftHandK = [["q","d","r","w","b"] + ,["a","s","h","t","g"] + ,["z","x","m","c","v"]] + + ,rightHandK = [["j","f","u","p","k",";"] + ,["y","n","e","o","i","'"] + ,["k","l",",",".","/",""]]} renderTex Plain flavor (docu cs') docu :: CheatSheet -> TeX diff --git a/colemak.pdf b/colemak.pdf index 428445b..d8d5737 100644 Binary files a/colemak.pdf and b/colemak.pdf differ diff --git a/qwerty.pdf b/qwerty.pdf index dad40bd..06d1a32 100644 Binary files a/qwerty.pdf and b/qwerty.pdf differ diff --git a/qwertz.pdf b/qwertz.pdf new file mode 100644 index 0000000..bd59085 Binary files /dev/null and b/qwertz.pdf differ diff --git a/workman.pdf b/workman.pdf new file mode 100644 index 0000000..0f99dfb Binary files /dev/null and b/workman.pdf differ