[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/xah-fly-keys d7a072d959 1/3: major internal change.
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/xah-fly-keys d7a072d959 1/3: major internal change. |
Date: |
Sat, 22 Oct 2022 16:59:22 -0400 (EDT) |
branch: elpa/xah-fly-keys
commit d7a072d959ea2af6c1e7238827bd887b70a4f42b
Author: Xah Lee <xah@xahlee.org>
Commit: Xah Lee <xah@xahlee.org>
major internal change.
* New. var xah-fly-layouts holds a list of layouts. so, layouts can be
programatically listed.
* function xah-fly-keys-set-layout major change. no longer support M-x
customize. Reason: supporting it makes the code much more complex.
* var xah-fly-key-current-layout changed accordingly.
* renamed xah-fly--current-layout-kmap to xah-fly--key-convert-table
* here is some detail. the layout was variables, eg:
xah--dvorak-to-azerty-kmap
xah--dvorak-to-azerty-be-kmap
xah--dvorak-to-beopy-kmap
etc.
now these variables are string keys of xah-fly-layouts, with prefx
xah--dvorak-to- dropped and suffix -kmap dropped, so the names are just azerty,
azerty-be, etc. value remain the same.
* starting to phase out using symbol for layout names.
Symbol pollutes symbol table. and string is more intuitive, universal.
e.g.
(xah-fly-keys-set-layout 'qwerty)
should be
(xah-fly-keys-set-layout "qwerty")
---
xah-fly-keys.el | 1090 +++++++++----------------------------------------------
1 file changed, 179 insertions(+), 911 deletions(-)
diff --git a/xah-fly-keys.el b/xah-fly-keys.el
index f6e79bc0be..7cfa60ce80 100644
--- a/xah-fly-keys.el
+++ b/xah-fly-keys.el
@@ -4,7 +4,7 @@
;; Author: Xah Lee ( http://xahlee.info/ )
;; Maintainer: Xah Lee <xah@xahlee.org>
-;; Version: 18.3.20221022083525
+;; Version: 19.0.20221022121446
;; Created: 10 Sep 2013
;; Package-Requires: ((emacs "24.1"))
;; Keywords: convenience, emulations, vim, ergoemacs
@@ -139,6 +139,8 @@
;; qwertz
;; workman
+;; supported layouts are stored as the keys in xah-fly-layouts
+
;; (xah-fly-keys 1)
@@ -2767,891 +2769,182 @@ Version: 2017-01-29"
(delete-other-windows)))
-;; key maps for conversion
-
-(defvar xah--dvorak-to-azerty-kmap
- '(("." . "e")
- ("," . "z")
- ("'" . "a")
- (";" . "w")
- ("/" . "^") ; NOTE: this is a dead key
- ("[" . ")")
- ("]" . "=")
- ("=" . "$")
- ("-" . "ù")
- ("a" . "q")
- ("b" . "n")
- ("c" . "i")
- ("d" . "h")
- ("e" . "d")
- ("f" . "y")
- ("g" . "u")
- ("h" . "j")
- ("i" . "g")
- ("j" . "c")
- ("k" . "v")
- ("l" . "p")
- ("m" . ",")
- ("n" . "l")
- ("o" . "s")
- ("p" . "r")
- ("q" . "x")
- ("r" . "o")
- ("s" . "m")
- ("t" . "k")
- ("u" . "f")
- ("v" . ":")
- ("w" . ";")
- ("x" . "b")
- ("y" . "t")
- ("z" . "!")
- ("1" . "&")
- ("2" . "é")
- ("3" . "\"")
- ("4" . "'")
- ("5" . "(")
- ("6" . "-")
- ("7" . "è")
- ("8" . "_")
- ("9" . "ç")
- ("0" . "à")
- ("\\" . "*")
- ("`" . "²"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'")
-
-(defvar xah--dvorak-to-azerty-be-kmap
- '(("." . "e")
- ("," . "z")
- ("'" . "a")
- (";" . "w")
- ("/" . "^") ; NOTE: this is a dead key
- ("[" . ")")
- ("]" . "-")
- ("=" . "$")
- ("-" . "ù")
- ("a" . "q")
- ("b" . "n")
- ("c" . "i")
- ("d" . "h")
- ("e" . "d")
- ("f" . "y")
- ("g" . "u")
- ("h" . "j")
- ("i" . "g")
- ("j" . "c")
- ("k" . "v")
- ("l" . "p")
- ("m" . ",")
- ("n" . "l")
- ("o" . "s")
- ("p" . "r")
- ("q" . "x")
- ("r" . "o")
- ("s" . "m")
- ("t" . "k")
- ("u" . "f")
- ("v" . ":")
- ("w" . ";")
- ("x" . "b")
- ("y" . "t")
- ("z" . "=")
- ("1" . "&")
- ("2" . "é")
- ("3" . "\"")
- ("4" . "'")
- ("5" . "(")
- ("6" . "§")
- ("7" . "è")
- ("8" . "!")
- ("9" . "ç")
- ("0" . "à")
- ("\\" . "µ")
- ("`" . "²"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'")
-
-(defvar xah--dvorak-to-beopy-kmap
- '(("." . "o")
- ("," . "é")
- ("'" . "b")
- (";" . "à")
- ("/" . "k")
- ("[" . "=")
- ("]" . "%")
- ("=" . "z")
- ("-" . "m")
- ("b" . "'")
- ("c" . "d")
- ("d" . "c")
- ("f" . "^"); NOTE: this is a dead key
- ("g" . "v")
- ("h" . "t")
- ("i" . ",")
- ("j" . "x")
- ("k" . ".")
- ("l" . "j")
- ("m" . "g")
- ("n" . "r")
- ("o" . "u")
- ("q" . "è")
- ("r" . "l")
- ("s" . "n")
- ("t" . "s")
- ("u" . "i")
- ("v" . "h")
- ("w" . "q")
- ("x" . "w")
- ("z" . "f")
- ("1" . "\"")
- ("2" . "«")
- ("3" . "»")
- ("4" . "(")
- ("5" . ")")
- ("6" . "@")
- ("7" . "+")
- ("8" . "-")
- ("9" . "/")
- ("0" . "*")
- ("\\" . "ç")
- ("`" . "$")))
-
-(defvar xah--dvorak-to-colemak-kmap
- '(("'" . "q")
- ("," . "w")
- ("." . "f")
- ("y" . "g")
- ("f" . "j")
- ("g" . "l")
- ("c" . "u")
- ("r" . "y")
- ("l" . ";")
- ("o" . "r")
- ("e" . "s")
- ("u" . "t")
- ("i" . "d")
- ("d" . "h")
- ("h" . "n")
- ("t" . "e")
- ("n" . "i")
- ("s" . "o")
- (";" . "z")
- ("q" . "x")
- ("j" . "c")
- ("k" . "v")
- ("x" . "b")
- ("b" . "k")
- ("w" . ",")
- ("v" . ".")
- ("z" . "/"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'")
-
-(defvar xah--dvorak-to-colemak-dhm-kmap
- '(("'" . "q")
- ("," . "w")
- ("." . "f")
- (";" . "z")
- ("b" . "k")
- ("c" . "u")
- ("d" . "m")
- ("e" . "s")
- ("f" . "j")
- ("g" . "l")
- ("h" . "n")
- ("i" . "g")
- ("j" . "c")
- ("k" . "d")
- ("l" . ";")
- ("m" . "h")
- ("n" . "i")
- ("o" . "r")
- ("q" . "x")
- ("r" . "y")
- ("s" . "o")
- ("t" . "e")
- ("u" . "t")
- ("v" . ".")
- ("w" . ",")
- ("x" . "v")
- ("y" . "b")
- ("z" . "/"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'.")
-
-(defvar xah--dvorak-to-colemak-dhm-angle-kmap
- '(("'" . "q")
- ("," . "w")
- ("." . "f")
- (";" . "x")
- ("b" . "k")
- ("c" . "u")
- ("d" . "m")
- ("e" . "s")
- ("f" . "j")
- ("g" . "l")
- ("h" . "n")
- ("i" . "g")
- ("j" . "d")
- ("k" . "v")
- ("l" . ";")
- ("m" . "h")
- ("n" . "i")
- ("o" . "r")
- ("q" . "c")
- ("r" . "y")
- ("s" . "o")
- ("t" . "e")
- ("u" . "t")
- ("v" . ".")
- ("w" . ",")
- ("x" . "\\")
- ("y" . "b")
- ("z" . "/"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'. This is Colemak DHk
layout with Angle mode.")
-
-(defvar xah--dvorak-to-colemak-dhk-kmap
- '(("'" . "q")
- ("," . "w")
- ("." . "f")
- (";" . "z")
- ("b" . "m")
- ("c" . "u")
- ("d" . "k")
- ("e" . "s")
- ("f" . "j")
- ("g" . "l")
- ("h" . "n")
- ("i" . "g")
- ("j" . "c")
- ("k" . "d")
- ("l" . ";")
- ("m" . "h")
- ("n" . "i")
- ("o" . "r")
- ("q" . "x")
- ("r" . "y")
- ("s" . "o")
- ("t" . "e")
- ("u" . "t")
- ("v" . ".")
- ("w" . ",")
- ("x" . "v")
- ("y" . "b")
- ("z" . "/"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'")
-
-(defvar xah--dvorak-to-dvorak-kmap nil "A alist, dvorak to dvorak.")
-
-(defvar xah--dvorak-to-programer-dvorak-kmap
- '(
+;; layout lookup tables for key conversion
+
+(defvar xah-fly-layouts nil "A alist.
+Key is layout name, string type.
+Value is a alist, each element is of the form (\"e\" . \"d\").
+First char is Dvorak, second is corresponding char of the destination layout.
+When a char is not in this alist, they are assumed to be the same. ")
+
+(push
+ '("azerty" . '(("." . "e") ("," . "z") ("'" . "a") (";" . "w") ("/" . "^")
("[" . ")")
+ ("]" . "=") ("=" . "$") ("-" . "ù") ("a" . "q") ("b" . "n") ("c" . "i")
+ ("d" . "h") ("e" . "d") ("f" . "y") ("g" . "u") ("h" . "j") ("i" . "g")
+ ("j" . "c") ("k" . "v") ("l" . "p") ("m" . ",") ("n" . "l") ("o" . "s")
+ ("p" . "r") ("q" . "x") ("r" . "o") ("s" . "m") ("t" . "k") ("u" . "f")
+ ("v" . ":") ("w" . ";") ("x" . "b") ("y" . "t") ("z" . "!") ("1" . "&")
+ ("2" . "é") ("3" . "\"") ("4" . "'") ("5" . "(") ("6" . "-") ("7" . "è")
+ ("8" . "_") ("9" . "ç") ("0" . "à") ("\\" . "*") ("`" . "²")))
+ ;; NOTE: / is a dead key
+ xah-fly-layouts)
+
+(push
+ '("azerty-be" . '(("." . "e") ("," . "z") ("'" . "a") (";" . "w") ("/" . "^")
("[" . ")") ("]" . "-") ("=" . "$") ("-" . "ù") ("a" . "q") ("b" . "n") ("c" .
"i") ("d" . "h") ("e" . "d") ("f" . "y") ("g" . "u") ("h" . "j") ("i" . "g")
("j" . "c") ("k" . "v") ("l" . "p") ("m" . ",") ("n" . "l") ("o" . "s") ("p" .
"r") ("q" . "x") ("r" . "o") ("s" . "m") ("t" . "k") ("u" . "f") ("v" . ":")
("w" . ";") ("x" . "b") ("y" . "t") ("z" . "=") ("1" . "&") ("2" . "é") ("3" .
"\"") ("4" . "'") ("5" [...]
+ ;; NOTE: / is a dead key
+xah-fly-layouts)
+
+(push
+ ;; NOTE: f is a dead key
+ '("beopy" . '(("." . "o") ("," . "é") ("'" . "b") (";" . "à") ("/" . "k")
("[" . "=") ("]" . "%") ("=" . "z") ("-" . "m") ("b" . "'") ("c" . "d") ("d" .
"c") ("f" . "^") ("g" . "v") ("h" . "t") ("i" . ",") ("j" . "x") ("k" . ".")
("l" . "j") ("m" . "g") ("n" . "r") ("o" . "u") ("q" . "è") ("r" . "l") ("s" .
"n") ("t" . "s") ("u" . "i") ("v" . "h") ("w" . "q") ("x" . "w") ("z" . "f")
("1" . "\"") ("2" . "«") ("3" . "»") ("4" . "(") ("5" . ")") ("6" . "@") ("7" .
"+") ("8" . "-") ("9" . " [...]
+ xah-fly-layouts)
+
+(push
+ '("colemak" . '(("'" . "q") ("," . "w") ("." . "f") ("y" . "g") ("f" . "j")
("g" . "l") ("c" . "u") ("r" . "y") ("l" . ";") ("o" . "r") ("e" . "s") ("u" .
"t") ("i" . "d") ("d" . "h") ("h" . "n") ("t" . "e") ("n" . "i") ("s" . "o")
(";" . "z") ("q" . "x") ("j" . "c") ("k" . "v") ("x" . "b") ("b" . "k") ("w" .
",") ("v" . ".") ("z" . "/")))
+ xah-fly-layouts)
+
+(push
+ '("colemak-dhm" . '(("'" . "q") ("," . "w") ("." . "f") (";" . "z") ("b" .
"k") ("c" . "u") ("d" . "m") ("e" . "s") ("f" . "j") ("g" . "l") ("h" . "n")
("i" . "g") ("j" . "c") ("k" . "d") ("l" . ";") ("m" . "h") ("n" . "i") ("o" .
"r") ("q" . "x") ("r" . "y") ("s" . "o") ("t" . "e") ("u" . "t") ("v" . ".")
("w" . ",") ("x" . "v") ("y" . "b") ("z" . "/")))
+ xah-fly-layouts)
+
+(push
+ '("colemak-dhm-angle" . '(("'" . "q") ("," . "w") ("." . "f") (";" . "x")
("b" . "k") ("c" . "u") ("d" . "m") ("e" . "s") ("f" . "j") ("g" . "l") ("h" .
"n") ("i" . "g") ("j" . "d") ("k" . "v") ("l" . ";") ("m" . "h") ("n" . "i")
("o" . "r") ("q" . "c") ("r" . "y") ("s" . "o") ("t" . "e") ("u" . "t") ("v" .
".") ("w" . ",") ("x" . "\\") ("y" . "b") ("z" . "/")))
+ xah-fly-layouts)
+
+(push
+ '("colemak-dhk" . '(("'" . "q") ("," . "w") ("." . "f") (";" . "z") ("b" .
"m") ("c" . "u") ("d" . "k") ("e" . "s") ("f" . "j") ("g" . "l") ("h" . "n")
("i" . "g") ("j" . "c") ("k" . "d") ("l" . ";") ("m" . "h") ("n" . "i") ("o" .
"r") ("q" . "x") ("r" . "y") ("s" . "o") ("t" . "e") ("u" . "t") ("v" . ".")
("w" . ",") ("x" . "v") ("y" . "b") ("z" . "/")))
+xah-fly-layouts)
+
+(push
+ '("dvorak" . nil)
+ xah-fly-layouts)
+
+(push
+ '("programer-dvorak" . '(
;; number row
- ("`" . "$")
- ("1" . "&")
- ("2" . "[")
- ("3" . "{")
- ("4" . "}")
- ("5" . "(")
- ("6" . "=")
- ("7" . "*")
- ("8" . ")")
- ("9" . "+")
- ("0" . "]")
- ("[" . "!")
- ("]" . "#")
+ ("`" . "$") ("1" . "&") ("2" . "[") ("3" . "{") ("4" . "}") ("5" . "(") ("6"
. "=") ("7" . "*") ("8" . ")") ("9" . "+") ("0" . "]") ("[" . "!") ("]" . "#")
;; number row, shifted
- ("!" . "%")
- ("@" . "7")
- ("#" . "5")
- ("$" . "3")
- ("%" . "1")
- ("^" . "9")
- ("&" . "0")
- ("*" . "2")
- ("(" . "4")
- (")" . "6")
- ("{" . "8")
- ("}" . "`")
+ ("!" . "%") ("@" . "7") ("#" . "5") ("$" . "3") ("%" . "1") ("^" . "9") ("&"
. "0") ("*" . "2") ("(" . "4") (")" . "6") ("{" . "8") ("}" . "`")
;; left pinky outwards
- ("'" . ";")
- ("\"" . ":")
+ ("'" . ";") ("\"" . ":")
;; left pinky inwards
- (";" . "'")
- (":" . "\"")
+ (";" . "'") (":" . "\"")
;; right pinky outwards-sideways
- ("=" . "@")
- ("+" . "^")
- )
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'")
-
-(defvar xah--dvorak-to-qwerty-kmap
- '(("." . "e")
- ("," . "w")
- ("'" . "q")
- (";" . "z")
- ("/" . "[")
- ("[" . "-")
- ("]" . "=")
- ("=" . "]")
- ("-" . "'")
- ("a" . "a")
- ("b" . "n")
- ("c" . "i")
- ("d" . "h")
- ("e" . "d")
- ("f" . "y")
- ("g" . "u")
- ("h" . "j")
- ("i" . "g")
- ("j" . "c")
- ("k" . "v")
- ("l" . "p")
- ("n" . "l")
- ("o" . "s")
- ("p" . "r")
- ("q" . "x")
- ("r" . "o")
- ("s" . ";")
- ("t" . "k")
- ("u" . "f")
- ("v" . ".")
- ("w" . ",")
- ("x" . "b")
- ("y" . "t")
- ("z" . "/"))
- "A alist, each element is of the form(\"e\" . \"d\"). First char is
-Dvorak, second is corresponding QWERTY. Not all chars are in the
-list, such as digits. When not in this alist, they are assumed to be
-the same.")
-
-(defvar xah--dvorak-to-qwerty-no-kmap
- '(("." . "e")
- ("," . "w")
- ("'" . "q")
- (";" . "z")
- ("/" . "å")
- ("[" . "+")
- ("]" . "´") ; NOTE: this is a dead key
- ("=" . "¨") ; NOTE: this is a dead key
- ("-" . "æ")
- ("b" . "n")
- ("c" . "i")
- ("d" . "h")
- ("e" . "d")
- ("f" . "y")
- ("g" . "u")
- ("h" . "j")
- ("i" . "g")
- ("j" . "c")
- ("k" . "v")
- ("l" . "p")
- ("n" . "l")
- ("o" . "s")
- ("p" . "r")
- ("q" . "x")
- ("r" . "o")
- ("s" . "ø")
- ("t" . "k")
- ("u" . "f")
- ("v" . ".")
- ("w" . ",")
- ("x" . "b")
- ("y" . "t")
- ("z" . "-"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'")
-
-(defvar xah--dvorak-to-qwerty-abnt-kmap
- '(("." . "e")
- ("," . "w")
- ("'" . "q")
- (";" . "z")
- ("/" . "'")
- ("[" . "-")
- ("]" . "=")
- ("=" . "[")
- ("-" . "~")
- ("b" . "n")
- ("c" . "i")
- ("d" . "h")
- ("e" . "d")
- ("f" . "y")
- ("g" . "u")
- ("h" . "j")
- ("i" . "g")
- ("j" . "c")
- ("k" . "v")
- ("l" . "p")
- ("n" . "l")
- ("o" . "s")
- ("p" . "r")
- ("q" . "x")
- ("r" . "o")
- ("s" . "ç")
- ("t" . "k")
- ("u" . "f")
- ("v" . ".")
- ("w" . ",")
- ("x" . "b")
- ("y" . "t")
- ("z" . ";"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'")
-
-(defvar xah--dvorak-to-qwertz-kmap
- '(("." . "e")
- ("," . "w")
- ("'" . "q")
- (";" . "y")
- ("/" . "ü")
- ("[" . "ß")
- ("]" . "´")
- ("=" . "+")
- ("-" . "ä")
- ("b" . "n")
- ("c" . "i")
- ("d" . "h")
- ("e" . "d")
- ("f" . "z")
- ("g" . "u")
- ("h" . "j")
- ("i" . "g")
- ("j" . "c")
- ("k" . "v")
- ("l" . "p")
- ("n" . "l")
- ("o" . "s")
- ("p" . "r")
- ("q" . "x")
- ("r" . "o")
- ("s" . "ö")
- ("t" . "k")
- ("u" . "f")
- ("v" . ".")
- ("w" . ",")
- ("x" . "b")
- ("y" . "t")
- ("z" . "-"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'")
-
-(defvar xah--dvorak-to-workman-kmap
- '(("'" . "q")
- ("," . "d")
- ("." . "r")
- ("p" . "w")
- ("y" . "b")
- ("f" . "j")
- ("g" . "f")
- ("c" . "u")
- ("r" . "p")
- ("l" . ";")
- ("o" . "s")
- ("e" . "h")
- ("u" . "t")
- ("i" . "g")
- ("d" . "y")
- ("h" . "n")
- ("t" . "e")
- ("n" . "o")
- ("s" . "i")
- (";" . "z")
- ("q" . "x")
- ("j" . "m")
- ("k" . "c")
- ("x" . "v")
- ("b" . "k")
- ("m" . "l")
- ("w" . ",")
- ("v" . ".")
- ("z" . "/"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'")
-
-(defvar xah--dvorak-to-norman-kmap
- '(
- ("'" . "q")
- ("," . "w")
- ("." . "d")
- ("p" . "f")
- ("y" . "k")
-
- ("f" . "j")
- ("g" . "u")
- ("c" . "r")
- ("r" . "l")
- ("l" . ";")
-
- ("o" . "s")
- ("u" . "t")
- ("i" . "g")
-
- ("d" . "y")
- ("h" . "n")
- ("t" . "i")
- ("n" . "o")
- ("s" . "h")
-
- (";" . "z")
- ("q" . "x")
- ("j" . "c")
- ("k" . "v")
- ("x" . "b")
-
- ("b" . "p")
- ("w" . ",")
- ("v" . ".")
- ("z" . "/"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'")
-
-(defvar xah--dvorak-to-neo2-kmap
- '(
- ("'" . "x")
- ("," . "v")
- ("." . "l")
- ("p" . "c")
- ("y" . "w")
-
- ("f" . "k")
- ("g" . "h")
- ("c" . "g")
- ("r" . "f")
- ("l" . "q")
-
- ("a" . "u")
- ("o" . "i")
- ("e" . "a")
- ("u" . "e")
- ("i" . "o")
-
- ("d" . "s")
- ("h" . "n")
- ("t" . "r")
- ("n" . "t")
- ("s" . "d")
-
- (";" . "ü")
- ("q" . "ö")
- ("j" . "ä")
- ("k" . "p")
- ("x" . "z")
-
- ("w" . ",")
- ("v" . ".")
- ("z" . "j")
-
- ("/" . "ß")
- ("[" . "-")
- ("-" . "y"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'")
-
-(defvar xah--dvorak-to-koy-kmap
- '(
- ("'" . "k")
- ("," . ".")
- ("." . "o")
- ("p" . ",")
-
- ("f" . "v")
- ("r" . "l")
- ("l" . "ß")
-
- ("a" . "h")
- ("o" . "a")
- ("u" . "i")
- ("i" . "u")
-
- ("h" . "t")
- ("t" . "r")
-
- (";" . "x")
- ("j" . "ä")
- ("k" . "ü")
- ("x" . "ö")
-
- ("m" . "p")
- ("v" . "m")
- ("z" . "j"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'")
-
-(defvar xah--dvorak-to-adnw-kmap
- '(
- ("'" . "k")
- ("," . "u")
- ("." . "ü")
- ("p" . ".")
- ("y" . "ä")
-
- ("f" . "v")
- ("r" . "l")
- ("l" . "j")
- ("/" . "f")
-
- ("a" . "h")
- ("o" . "i")
- ("u" . "a")
- ("i" . "o")
-
- ("h" . "t")
- ("t" . "r")
- ("-" . "ß")
-
- (";" . "x")
- ("q" . "y")
- ("j" . "ö")
- ("k" . ",")
- ("x" . "q")
-
- ("m" . "p")
- ("v" . "m"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'")
-
-(defvar xah--dvorak-to-pt-nativo-kmap
- '((";" . "«")
- ("/" . "~")
- ("[" . "º")
- ("]" . "<")
- ("=" . "-")
- ("-" . "´")
- ("a" . "i")
- ("b" . "q")
- ("c" . "t")
- ("d" . "m")
- ("e" . "a")
- ("f" . "w")
- ("g" . "l")
- ("h" . "d")
- ("i" . "u")
- ("k" . "b")
- ("l" . "p")
- ("m" . "v")
- ("n" . "r")
- ("o" . "e")
- ("p" . "h")
- ("q" . "ç")
- ("r" . "c")
- ("s" . "n")
- ("t" . "s")
- ("u" . "o")
- ("v" . "f")
- ("w" . "g")
- ("x" . "k")
- ("y" . "x"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'"
- )
-
-(defvar xah--dvorak-to-carpalx-qgmlwy-kmap
- '(("." . "m")
- ("," . "g")
- ("'" . "q")
- (";" . "z")
- ("/" . "[")
- ("[" . "-")
- ("]" . "=")
- ("=" . "]")
- ("-" . "'")
- ("a" . "d")
- ("b" . "k")
- ("c" . "u")
- ("d" . "i")
- ("e" . "t")
- ("f" . "y")
- ("g" . "f")
- ("h" . "a")
- ("i" . "r")
- ("j" . "c")
- ("k" . "v")
- ("l" . ";")
- ("m" . "p")
- ("n" . "o")
- ("o" . "s")
- ("p" . "l")
- ("q" . "x")
- ("r" . "b")
- ("s" . "h")
- ("t" . "e")
- ("u" . "n")
- ("v" . ".")
- ("w" . ",")
- ("x" . "j")
- ("y" . "w")
- ("z" . "/"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'")
-
-(defvar xah--dvorak-to-carpalx-qgmlwb-kmap
- '(("." . "m")
- ("," . "g")
- ("'" . "q")
- (";" . "z")
- ("/" . "[")
- ("[" . "-")
- ("]" . "=")
- ("=" . "]")
- ("-" . "'")
- ("a" . "d")
- ("b" . "k")
- ("c" . "u")
- ("d" . "i")
- ("e" . "t")
- ("f" . "b")
- ("g" . "y")
- ("h" . "a")
- ("i" . "r")
- ("j" . "c")
- ("k" . "f")
- ("l" . ";")
- ("m" . "p")
- ("n" . "o")
- ("o" . "s")
- ("p" . "l")
- ("q" . "x")
- ("r" . "v")
- ("s" . "h")
- ("t" . "e")
- ("u" . "n")
- ("v" . ".")
- ("w" . ",")
- ("x" . "j")
- ("y" . "w")
- ("z" . "/"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'")
-
-(defvar xah--dvorak-to-carpalx-qfmlwy-kmap
- '(("." . "m")
- ("," . "f")
- ("'" . "q")
- (";" . "z")
- ("/" . "[")
- ("[" . "-")
- ("]" . "=")
- ("=" . "]")
- ("-" . "'")
- ("a" . "d")
- ("b" . "p")
- ("c" . "o")
- ("d" . "i")
- ("e" . "t")
- ("f" . "y")
- ("g" . "u")
- ("h" . "a")
- ("i" . "r")
- ("j" . "g")
- ("k" . "c")
- ("l" . "j")
- ("m" . "k")
- ("n" . "h")
- ("o" . "s")
- ("p" . "l")
- ("q" . "v")
- ("r" . "b")
- ("s" . ";")
- ("t" . "e")
- ("u" . "n")
- ("v" . ".")
- ("w" . ",")
- ("y" . "w")
- ("z" . "/"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'")
-
-(defvar xah--dvorak-to-bepo-kmap
- '(("'" . "b")
- ("," . "é")
- ("." . "p")
- ("p" . "o")
- ("y" . "è")
-
- ("f" . "^") ; NOTE: dead key
- ("g" . "v")
- ("c" . "d")
- ("r" . "l")
- ("l" . "j")
-
- ("o" . "u")
- ("e" . "i")
- ("u" . "e")
- ("i" . ",")
-
- ("d" . "c")
- ("h" . "t")
- ("t" . "s")
- ("n" . "r")
- ("s" . "n")
-
- (":" . "à")
- ("q" . "y")
- ("j" . "x")
- ("k" . ".")
- ("x" . "k")
-
- ("b" . "’")
- ("m" . "q")
- ("w" . "g")
- ("v" . "h")
- ("z" . "f")
-
- ("3" . "»")
- ("4" . "(")
- ("5" . ")")
- ("6" . "@")
- ("7" . "+")
- ("8" . "-")
- ("9" . "/"))
- "A alist, similar to `xah--dvorak-to-qwerty-kmap'")
-
-(defcustom xah-fly-key-current-layout nil
- "The current keyboard layout. Use `xah-fly-keys-set-layout' to set the
layout.
-If the value is nil, it is automatically set to \"qwerty\"."
- :type '(choice
- (const :tag "AZERTY" azerty)
- (const :tag "Adnw" adnw)
- (const :tag "BEOPY" beopy)
- (const :tag "BEPO" bepo)
- (const :tag "Belgian AZERTY" azerty-be)
- (const :tag "Carpalx QFMLWY" carpalx-qfmlwy)
- (const :tag "Carpalx QGMLWB" carpalx-qgmlwb)
- (const :tag "Carpalx QGMLWY" carpalx-qgmlwy)
- (const :tag "Colemak" colemak)
- (const :tag "Colemak DH" colemak-dhm)
- (const :tag "Colemak DHm angle-mode" colemak-dhm-angle)
- (const :tag "Colemak DHk" colemak-dhk)
- (const :tag "Dvorak" dvorak)
- (const :tag "Koy" koy)
- (const :tag "Neo2" neo2)
- (const :tag "Norman" norman)
- (const :tag "PT-nativo" pt-nativo)
- (const :tag "Portuguese QWERTY (ABNT)" qwerty-abnt)
- (const :tag "Programmer Dvorak" programer-dvorak)
- (const :tag "QWERTY Norwegian" qwerty-no)
- (const :tag "QWERTY" qwerty)
- (const :tag "QWERTZ" qwertz)
- (const :tag "Workman" workman))
- :set (lambda (Layout-var New-layout)
- ;; Only reload xah-fly-keys if it was already loaded and the new
layout is different:
- (if (and (featurep 'xah-fly-keys)
- (not (eq New-layout (symbol-value Layout-var))))
- (progn
- (set Layout-var New-layout)
- (load "xah-fly-keys"))
- (set Layout-var New-layout))))
-(if xah-fly-key-current-layout nil (setq xah-fly-key-current-layout 'qwerty))
-
-(defvar xah-fly--current-layout-kmap nil
- "The current keyboard layout key map. Value is a alist. e.g. the
-value of `xah--dvorak-to-qwerty-kmap'. Value is automatically set from
-value of `xah-fly-key-current-layout'. Do not manually set this
-variable.
-Version: 2019-02-12."
- )
-(setq xah-fly--current-layout-kmap
- (symbol-value
- (intern
- (concat "xah--dvorak-to-"
- (if (symbolp xah-fly-key-current-layout)
- (symbol-name xah-fly-key-current-layout)
- xah-fly-key-current-layout)
- "-kmap"))))
+ ("=" . "@") ("+" . "^") ))
+ xah-fly-layouts)
+
+(push
+ '("qwerty" . '(("." . "e") ("," . "w") ("'" . "q") (";" . "z") ("/" . "[")
("[" . "-") ("]" . "=") ("=" . "]") ("-" . "'") ("a" . "a") ("b" . "n") ("c" .
"i") ("d" . "h") ("e" . "d") ("f" . "y") ("g" . "u") ("h" . "j") ("i" . "g")
("j" . "c") ("k" . "v") ("l" . "p") ("n" . "l") ("o" . "s") ("p" . "r") ("q" .
"x") ("r" . "o") ("s" . ";") ("t" . "k") ("u" . "f") ("v" . ".") ("w" . ",")
("x" . "b") ("y" . "t") ("z" . "/")))
+ xah-fly-layouts)
+
+(push
+;; QWERTY Norwegian
+;; NOTE: ] is a dead key
+;; NOTE: = is a dead key
+ '("qwerty-no" . '(("." . "e") ("," . "w") ("'" . "q") (";" . "z") ("/" . "å")
("[" . "+") ("]" . "´") ("=" . "¨") ("-" . "æ") ("b" . "n") ("c" . "i") ("d" .
"h") ("e" . "d") ("f" . "y") ("g" . "u") ("h" . "j") ("i" . "g") ("j" . "c")
("k" . "v") ("l" . "p") ("n" . "l") ("o" . "s") ("p" . "r") ("q" . "x") ("r" .
"o") ("s" . "ø") ("t" . "k") ("u" . "f") ("v" . ".") ("w" . ",") ("x" . "b")
("y" . "t") ("z" . "-")))
+ xah-fly-layouts)
+
+(push
+ '("qwerty-abnt" . '(("." . "e") ("," . "w") ("'" . "q") (";" . "z") ("/" .
"'") ("[" . "-") ("]" . "=") ("=" . "[") ("-" . "~") ("b" . "n") ("c" . "i")
("d" . "h") ("e" . "d") ("f" . "y") ("g" . "u") ("h" . "j") ("i" . "g") ("j" .
"c") ("k" . "v") ("l" . "p") ("n" . "l") ("o" . "s") ("p" . "r") ("q" . "x")
("r" . "o") ("s" . "ç") ("t" . "k") ("u" . "f") ("v" . ".") ("w" . ",") ("x" .
"b") ("y" . "t") ("z" . ";")))
+ xah-fly-layouts)
+
+(push
+ '("qwertz" . '(("." . "e") ("," . "w") ("'" . "q") (";" . "y") ("/" . "ü")
("[" . "ß") ("]" . "´") ("=" . "+") ("-" . "ä") ("b" . "n") ("c" . "i") ("d" .
"h") ("e" . "d") ("f" . "z") ("g" . "u") ("h" . "j") ("i" . "g") ("j" . "c")
("k" . "v") ("l" . "p") ("n" . "l") ("o" . "s") ("p" . "r") ("q" . "x") ("r" .
"o") ("s" . "ö") ("t" . "k") ("u" . "f") ("v" . ".") ("w" . ",") ("x" . "b")
("y" . "t") ("z" . "-")))
+ xah-fly-layouts)
+
+(push
+ '("workman" . '(("'" . "q") ("," . "d") ("." . "r") ("p" . "w") ("y" . "b")
("f" . "j") ("g" . "f") ("c" . "u") ("r" . "p") ("l" . ";") ("o" . "s") ("e" .
"h") ("u" . "t") ("i" . "g") ("d" . "y") ("h" . "n") ("t" . "e") ("n" . "o")
("s" . "i") (";" . "z") ("q" . "x") ("j" . "m") ("k" . "c") ("x" . "v") ("b" .
"k") ("m" . "l") ("w" . ",") ("v" . ".") ("z" . "/")))
+ xah-fly-layouts)
+
+(push
+ '("norman" . '( ("'" . "q") ("," . "w") ("." . "d") ("p" . "f") ("y" . "k")
("f" . "j") ("g" . "u") ("c" . "r") ("r" . "l") ("l" . ";") ("o" . "s") ("u" .
"t") ("i" . "g") ("d" . "y") ("h" . "n") ("t" . "i") ("n" . "o") ("s" . "h")
(";" . "z") ("q" . "x") ("j" . "c") ("k" . "v") ("x" . "b") ("b" . "p") ("w" .
",") ("v" . ".") ("z" . "/")))
+ xah-fly-layouts)
+
+(push
+ '("neo2" . '(
+ ("'" . "x") ("," . "v") ("." . "l") ("p" . "c") ("y" . "w")
+ ("f" . "k") ("g" . "h") ("c" . "g") ("r" . "f") ("l" . "q")
+ ("a" . "u") ("o" . "i") ("e" . "a") ("u" . "e") ("i" . "o")
+ ("d" . "s") ("h" . "n") ("t" . "r") ("n" . "t") ("s" . "d")
+ (";" . "ü") ("q" . "ö") ("j" . "ä") ("k" . "p") ("x" . "z")
+ ("w" . ",") ("v" . ".") ("z" . "j")
+ ("/" . "ß") ("[" . "-") ("-" . "y")))
+ xah-fly-layouts)
+
+(push
+ '("koy" . '( ("'" . "k") ("," . ".") ("." . "o") ("p" . ",")
+ ("f" . "v") ("r" . "l") ("l" . "ß")
+ ("a" . "h") ("o" . "a") ("u" . "i") ("i" . "u")
+ ("h" . "t") ("t" . "r")
+ (";" . "x") ("j" . "ä") ("k" . "ü") ("x" . "ö")
+ ("m" . "p") ("v" . "m") ("z" . "j")))
+ xah-fly-layouts)
+
+(push
+ '("adnw" . '(
+ ("'" . "k") ("," . "u") ("." . "ü") ("p" . ".") ("y" . "ä")
+ ("f" . "v") ("r" . "l") ("l" . "j") ("/" . "f")
+ ("a" . "h") ("o" . "i") ("u" . "a") ("i" . "o")
+ ("h" . "t") ("t" . "r") ("-" . "ß")
+ (";" . "x") ("q" . "y") ("j" . "ö") ("k" . ",") ("x" . "q")
+ ("m" . "p") ("v" . "m")))
+ xah-fly-layouts)
+
+(push
+ '("pt-nativo" . '( (";" . "«") ("/" . "~") ("[" . "º") ("]" . "<") ("=" .
"-") ("-" . "´") ("a" . "i") ("b" . "q") ("c" . "t") ("d" . "m") ("e" . "a")
("f" . "w") ("g" . "l") ("h" . "d") ("i" . "u") ("k" . "b") ("l" . "p") ("m" .
"v") ("n" . "r") ("o" . "e") ("p" . "h") ("q" . "ç") ("r" . "c") ("s" . "n")
("t" . "s") ("u" . "o") ("v" . "f") ("w" . "g") ("x" . "k") ("y" . "x")))
+ xah-fly-layouts)
+
+(push
+ '("carpalx-qgmlwy" . '(("." . "m") ("," . "g") ("'" . "q") (";" . "z") ("/" .
"[") ("[" . "-") ("]" . "=") ("=" . "]") ("-" . "'") ("a" . "d") ("b" . "k")
("c" . "u") ("d" . "i") ("e" . "t") ("f" . "y") ("g" . "f") ("h" . "a") ("i" .
"r") ("j" . "c") ("k" . "v") ("l" . ";") ("m" . "p") ("n" . "o") ("o" . "s")
("p" . "l") ("q" . "x") ("r" . "b") ("s" . "h") ("t" . "e") ("u" . "n") ("v" .
".") ("w" . ",") ("x" . "j") ("y" . "w") ("z" . "/")))
+ xah-fly-layouts)
+
+(push
+ '("carpalx-qgmlwb" . '(("." . "m") ("," . "g") ("'" . "q") (";" . "z") ("/" .
"[") ("[" . "-") ("]" . "=") ("=" . "]") ("-" . "'") ("a" . "d") ("b" . "k")
("c" . "u") ("d" . "i") ("e" . "t") ("f" . "b") ("g" . "y") ("h" . "a") ("i" .
"r") ("j" . "c") ("k" . "f") ("l" . ";") ("m" . "p") ("n" . "o") ("o" . "s")
("p" . "l") ("q" . "x") ("r" . "v") ("s" . "h") ("t" . "e") ("u" . "n") ("v" .
".") ("w" . ",") ("x" . "j") ("y" . "w") ("z" . "/")))
+xah-fly-layouts)
+
+(push
+ '("carpalx-qfmlwy" . '(("." . "m") ("," . "f") ("'" . "q") (";" . "z") ("/" .
"[") ("[" . "-") ("]" . "=") ("=" . "]") ("-" . "'") ("a" . "d") ("b" . "p")
("c" . "o") ("d" . "i") ("e" . "t") ("f" . "y") ("g" . "u") ("h" . "a") ("i" .
"r") ("j" . "g") ("k" . "c") ("l" . "j") ("m" . "k") ("n" . "h") ("o" . "s")
("p" . "l") ("q" . "v") ("r" . "b") ("s" . ";") ("t" . "e") ("u" . "n") ("v" .
".") ("w" . ",") ("y" . "w") ("z" . "/")))
+ xah-fly-layouts)
+
+(push
+ '("bepo" . '(("'" . "b") ("," . "é") ("." . "p") ("p" . "o") ("y" . "è")
+ ("f" . "^") ("g" . "v") ("c" . "d") ("r" . "l") ("l" . "j")
+ ("o" . "u") ("e" . "i") ("u" . "e") ("i" . ",")
+ ("d" . "c") ("h" . "t") ("t" . "s") ("n" . "r") ("s" . "n")
+ (":" . "à") ("q" . "y") ("j" . "x") ("k" . ".") ("x" . "k")
+ ("b" . "’") ("m" . "q") ("w" . "g") ("v" . "h") ("z" . "f")
+ ("3" . "»") ("4" . "(") ("5" . ")") ("6" . "@") ("7" . "+") ("8" . "-")
("9" . "/")))
+ ;; NOTE f is a dead key
+ xah-fly-layouts)
+
+(defvar xah-fly-key-current-layout nil
+ "The current keyboard layout. Value is a key in `xah-fly-layouts'.
+Do not set this variable manually. Use `xah-fly-keys-set-layout' to set it.
+If the value is nil, it is automatically set to \"qwerty\".
+When this variable changes, suitable change must also be done to
`xah-fly--key-convert-table'.
+Version 2022-10-22")
+
+(if xah-fly-key-current-layout nil (setq xah-fly-key-current-layout "qwerty"))
+
+(defvar xah-fly--key-convert-table nil
+ "A alist that's the conversion table from dvorak to current layout.
+Value structure is one of the key's value of `xah-fly-layouts'.
+Value is programtically set from value of `xah-fly-key-current-layout'.
+Do not manually set this variable.
+Version: 2019-02-12 2022-10-22" )
+
+(setq xah-fly--key-convert-table
+ (cdr (assoc xah-fly-key-current-layout xah-fly-layouts)))
(defun xah-fly--key-char (Charstr)
"Return the corresponding char Charstr according to
-`xah-fly--current-layout-kmap'. Charstr must be a string of single
+`xah-fly--key-convert-table'. Charstr must be a string of single
char. If more than 1 char, return it unchanged.
Version: 2020-04-18"
(interactive)
(if (> (length Charstr) 1)
Charstr
- (let (($result (assoc Charstr xah-fly--current-layout-kmap)))
+ (let (($result (assoc Charstr xah-fly--key-convert-table)))
(if $result (cdr $result) Charstr ))))
(defmacro xah-fly--define-keys (KeymapName KeyCmdAlist &optional DirectQ)
@@ -4556,43 +3849,19 @@ minor modes loaded later may override bindings in this
map.")
(defun xah-fly-keys-set-layout (Layout)
"Set a keyboard layout.
-Argument must be one of:
-
- adnw
- azerty
- azerty-be
- beopy
- bepo
- carpalx-qfmlwy
- carpalx-qgmlwb
- carpalx-qgmlwy
- colemak
- colemak-dhm
- colemak-dhm-angle
- colemak-dhk
- dvorak
- koy
- neo2
- norman
- programer-dvorak
- pt-nativo
- qwerty
- qwerty-abnt
- qwerty-no (qwerty Norwegian)
- qwertz
- workman
-
-In elisp, those should be strings.
-
-Version: 2021-05-19 2021-09-17 2022-09-11 2022-09-11"
- (interactive
- (list
- (widget-prompt-value
- (get 'xah-fly-key-current-layout 'custom-type)
- "New keyboard layout: ")))
- (funcall (get 'xah-fly-key-current-layout 'custom-set)
- 'xah-fly-key-current-layout
- Layout))
+Argument must be one of the key name in `xah-fly-layouts'
+Version: 2021-05-19 2022-09-11 2022-10-22"
+ (interactive)
+ (let (($newlout
+ (cond
+ ((stringp Layout) Layout)
+ ((symbolp Layout) (symbol-name Layout))
+ (t (user-error "Layout %s must be a string." Layout)))))
+ (setq xah-fly-key-current-layout $newlout)
+ (setq xah-fly--key-convert-table
+ (cdr (assoc xah-fly-key-current-layout xah-fly-layouts)))
+ ;; (load "xah-fly-keys")
+ ))
(defun xah-fly-space-key ()
"Switch to command mode if the char before cursor is a space.
@@ -4643,7 +3912,6 @@ Version: 2022-07-06"
(when (buffer-file-name)
(save-buffer)))
-
(defun xah-fly-command-mode-activate ()
"Activate command mode and run `xah-fly-command-mode-activate-hook'
Version: 2017-07-07"