# HG changeset patch # User Steve Losh # Date 1555164346 14400 # Node ID b892847fa264a5ed4cbf76dae2849f0245580175 # Parent 07fcefed6b88b608a609c0529ddec925ab80e346# Parent 9dcc4278dc41b422093be7a3eb902d1b7639b2b1 Merge. diff -r 9dcc4278dc41 -r b892847fa264 bin/code-to-pdf --- a/bin/code-to-pdf Sat Apr 13 10:04:13 2019 -0400 +++ b/bin/code-to-pdf Sat Apr 13 10:05:46 2019 -0400 @@ -1,25 +1,27 @@ #!/usr/bin/env bash +set -euo pipefail + TITLE="$1" shift enscript -1 --media=Letter \ --toc \ --header '%H - $N | | page $% of $= in file $v' \ - --font "Menlo-Regular@8" \ - --header-font "Menlo-Bold@10" \ - --fancy-header=sjl \ + --font "UbuntuMono-Regular@8" \ + --header-font "UbuntuMono-Bold@10" \ --title "$TITLE" \ --baselineskip 3 \ --line-numbers \ --highlight \ --color \ --mark-wrapped-lines=arrow \ - --margins=20:40:30:30 \ - --landscape \ - -p - \ + --margins=60:60:18:60 \ + --portrait \ + --output - \ --word-wrap $* \ - | pstopdf -i -o code.pdf + # | ps2pdf code - # --margins=60:60:18:60 \ - # --portrait \ + # --margins=20:40:30:30 \ + # --landscape \ + # --fancy-header=sjl \ diff -r 9dcc4278dc41 -r b892847fa264 bin/ecl --- a/bin/ecl Sat Apr 13 10:04:13 2019 -0400 +++ b/bin/ecl Sat Apr 13 10:05:46 2019 -0400 @@ -1,3 +1,3 @@ #!/usr/bin/env bash -rlwrap-lisp /usr/bin/ecl "$@" +rlwrap-lisp /usr/local/bin/ecl "$@" diff -r 9dcc4278dc41 -r b892847fa264 bin/st-edit --- a/bin/st-edit Sat Apr 13 10:04:13 2019 -0400 +++ b/bin/st-edit Sat Apr 13 10:05:46 2019 -0400 @@ -3,4 +3,4 @@ tmpfile=$(mktemp /tmp/st-edit.XXXXXX) trap 'rm "$tmpfile"' 0 1 15 cat > "$tmpfile" -st -e "nvim" -c "normal! G" "$tmpfile" +st -e "nvim" -c 'normal! G' -c '?\v\S' -c 'nohl' -c 'normal! $' "$tmpfile" diff -r 9dcc4278dc41 -r b892847fa264 eqclient.ini --- a/eqclient.ini Sat Apr 13 10:04:13 2019 -0400 +++ b/eqclient.ini Sat Apr 13 10:05:46 2019 -0400 @@ -392,8 +392,8 @@ User_86_Blue=155 [Options] IgnoreFile1=1 -Camera1-Distance=200.000000 -Camera1-DirHeading=233.153778 +Camera1-Distance=30.000000 +Camera1-DirHeading=192.000000 Camera1-Heading=0.000000 Camera1-Pitch=0.000000 Camera1-Height=5.000000 diff -r 9dcc4278dc41 -r b892847fa264 fish/config.fish --- a/fish/config.fish Sat Apr 13 10:04:13 2019 -0400 +++ b/fish/config.fish Sat Apr 13 10:05:46 2019 -0400 @@ -81,6 +81,7 @@ prepend_to_path "/usr/local/go/bin" prepend_to_path "/usr/local/sbin" prepend_to_path "/usr/games" +prepend_to_path "$HOME/.local/bin" prepend_to_path "$HOME/src/dotfiles/lisp/bin" prepend_to_path "$HOME/src/dotfiles/bin" prepend_to_path "$HOME/src/hg" diff -r 9dcc4278dc41 -r b892847fa264 lisp/clhs.lisp --- a/lisp/clhs.lisp Sat Apr 13 10:04:13 2019 -0400 +++ b/lisp/clhs.lisp Sat Apr 13 10:05:46 2019 -0400 @@ -118,49 +118,64 @@ ("Look up MAKE-ARRAY in a local copy of the HyperSpec and open it in lynx:" . "clhs --url file:///home/sjl/doc/hyperspec/ --open lynx make-array"))) -(adopt:define-interface *ui* - (:name "clhs" - :usage "[OPTIONS] SYMBOL" - :summary "Look up a symbol in the Common Lisp HyperSpec." - :documentation *documentation* - :examples *examples*) - ((help) - :documentation "display help and exit" - :manual "Display help and exit." - :long "help" - :short #\h - :reduce (constantly t)) - ((rebuild-cache) - :documentation "rebuild the symbol cache" - :manual "Rebuild the symbol cache, even if it already exists, instead of looking up a symbol." - :long "rebuild-cache" - :reduce (constantly t)) - ((open) - :documentation (format nil "program to use to open hyperspec URLs (default ~A)" *default-open-command*) - :manual (format nil "The program to use to open hyperspec URLs. The default is: ~A" *default-open-command*) - :long "open" - :short #\o - :parameter "COMMAND" - :initial-value *default-open-command* - :reduce #'adopt:newest) - ((url) - :documentation (format nil "base HyperSpec URL (default ~A)" *default-hyperspec-url*) - :manual (format nil - "The base HyperSpec URL. The default is: ~A~@ - ~@ - A local copy of the HyperSpec can be used with a file:// prefix." - *default-hyperspec-url*) - :long "url" - :short #\u - :parameter "URL" - :initial-value *default-hyperspec-url* - :reduce #'adopt:newest)) + +(defparameter *o-help* + (adopt:make-option 'help + :help "display help and exit" + :manual "Display help and exit." + :long "help" + :short #\h + :reduce (constantly t))) + +(defparameter *o-rebuild-cache* + (adopt:make-option 'rebuild-cache + :help "rebuild the symbol cache" + :manual "Rebuild the symbol cache, even if it already exists, instead of looking up a symbol." + :long "rebuild-cache" + :reduce (constantly t))) + +(defparameter *o-open* + (adopt:make-option 'open + :help (format nil "program to use to open hyperspec URLs (default ~A)" *default-open-command*) + :manual (format nil "The program to use to open hyperspec URLs. The default is: ~A" *default-open-command*) + :long "open" + :short #\o + :parameter "COMMAND" + :initial-value *default-open-command* + :reduce #'adopt:newest)) + +(defparameter *o-url* + (adopt:make-option 'url + :help (format nil "base HyperSpec URL (default ~A)" *default-hyperspec-url*) + :manual (format nil + "The base HyperSpec URL. The default is: ~A~@ + ~@ + A local copy of the HyperSpec can be used with a file:// prefix." + *default-hyperspec-url*) + :long "url" + :short #\u + :parameter "URL" + :initial-value *default-hyperspec-url* + :reduce #'adopt:newest)) + + +(defparameter *ui* + (adopt:make-interface + :name "clhs" + :usage "[OPTIONS] SYMBOL" + :summary "Look up a symbol in the Common Lisp HyperSpec." + :help *documentation* + :examples *examples* + :contents (list *o-help* + *o-rebuild-cache* + *o-open* + *o-url*))) (defun toplevel () (handler-case (multiple-value-bind (arguments options) (adopt:parse-options *ui*) (when (gethash 'help options) - (adopt:print-usage-and-exit *ui*)) + (adopt:print-help-and-exit *ui*)) (let ((*open* (gethash 'open options)) (*url* (gethash 'url options)) (target (first arguments))) diff -r 9dcc4278dc41 -r b892847fa264 lisp/example.lisp --- a/lisp/example.lisp Sat Apr 13 10:04:13 2019 -0400 +++ b/lisp/example.lisp Sat Apr 13 10:05:46 2019 -0400 @@ -17,31 +17,38 @@ ;;;; CLI ---------------------------------------------------------------------- -(adopt:define-interface *ui* - (:name "example" - :usage "[-n NAME]" - :summary "Say Hello." - :documentation "An example program to show how to make well-behaved CLI tools in Common Lisp." - :examples '(("Say hello:" . "example") - ("Say hello to Alice:" . "example --name Alice"))) - (help - :documentation "display help and exit" +(defparameter *help* + (adopt:make-option 'help + :help "display help and exit" :long "help" :short #\h - :reduce (constantly t)) - (name - :documentation (format nil "say hello to NAME (default ~A)" *default-name*) + :reduce (constantly t))) + +(defparameter *name* + (adopt:make-option 'name + :help (format nil "say hello to NAME (default ~A)" *default-name*) :long "name" :short #\n :parameter "NAME" :initial-value *default-name* :reduce #'adopt:newest)) +(defparameter *ui* + (adopt:make-interface + :name "example" + :usage "[-n NAME]" + :summary "Say Hello." + :help "An example program to show how to make well-behaved CLI tools in Common Lisp." + :examples '(("Say hello:" . "example") + ("Say hello to Alice:" . "example --name Alice")) + :contents (list *help* *name*))) + + (defun toplevel () (handler-case (multiple-value-bind (arguments options) (adopt:parse-options *ui*) (when (gethash 'help options) - (adopt:print-usage-and-exit *ui*)) + (adopt:print-help-and-exit *ui*)) (unless (null arguments) (error "Unrecognized command-line arguments: ~S" arguments)) (run (gethash 'name options))) diff -r 9dcc4278dc41 -r b892847fa264 lisp/genpass.lisp --- a/lisp/genpass.lisp Sat Apr 13 10:04:13 2019 -0400 +++ b/lisp/genpass.lisp Sat Apr 13 10:05:46 2019 -0400 @@ -90,9 +90,6 @@ ;;;; User Interface ----------------------------------------------------------- -(adopt:define-string *documentation* - "Generate a random password.") - (defparameter *examples* '(("Generate a random passphrase no longer than 24 characters:" . "genpass --length 24") @@ -101,65 +98,98 @@ ("Generate a six word passphrase with no spaces:" . "genpass --words 6 --smush"))) -(adopt:define-interface *ui* - (:name "genpass" - :usage "[OPTIONS]" - :summary "Generate a random password." - :documentation *documentation* - :examples *examples*) - ((help) - :documentation "Display help and exit." - :long "help" - :short #\h - :reduce (constantly t)) - ((length) - :documentation "Ensure password is no longer than N characters (default 40)." - :long "length" - :short #\l - :parameter "N" - :initial-value 40 - :reduce #'adopt:newest - :key #'parse-integer) - ((words) - :documentation "If non-zero, generate passphrases of N words instead of opaque strings (default 4)." - :long "words" - :short #\w - :parameter "N" - :initial-value 4 - :reduce #'adopt:newest - :key #'parse-integer) - ((no-words words) - :documentation "Shorthand for --words=0." - :long "no-words" - :short #\W - :reduce (constantly 0)) - ((smart) - :documentation "Smart mode (the default). Generate as with --words, but add a number on the end to satisfy the red tape on many sites." - :long "smart" - :short #\s - :initial-value t - :reduce (constantly t)) - ((no-smart smart) - :documentation "Turn off smart mode." - :long "no-smart" - :short #\S - :reduce (constantly nil)) - ((smush) - :documentation "Don't include spaces in passphrases." - :long "smush" - :short #\m - :reduce (constantly t)) - ((no-smush smush) - :documentation "Include spaces in passphrases (the default)." - :long "no-smush" - :short #\M - :reduce (constantly nil))) + +(defparameter *help* + (adopt:make-option 'help + :help "Display help and exit." + :long "help" + :short #\h + :reduce (constantly t))) + +(defparameter *length* + (adopt:make-option 'length + :help "Ensure password is no longer than N characters (default 40)." + :long "length" + :short #\l + :parameter "N" + :initial-value 40 + :reduce #'adopt:newest + :key #'parse-integer)) + +(defparameter *words* + (adopt:make-option 'words + :help "If non-zero, generate passphrases of N words instead of opaque strings (default 4)." + :long "words" + :short #\w + :parameter "N" + :initial-value 4 + :reduce #'adopt:newest + :key #'parse-integer)) + +(defparameter *no-words* + (adopt:make-option 'no-words + :result-key 'words + :help "Shorthand for --words=0." + :long "no-words" + :short #\W + :reduce (constantly 0))) + +(defparameter *smart* + (adopt:make-option 'smart + :help "Smart mode (the default). Generate as with --words, but add a number on the end to satisfy the red tape on many sites." + :long "smart" + :short #\s + :initial-value t + :reduce (constantly t))) + +(defparameter *no-smart* + (adopt:make-option 'no-smart + :result-key 'smart + :help "Turn off smart mode." + :long "no-smart" + :short #\S + :reduce (constantly nil))) + +(defparameter *smush* + (adopt:make-option 'smush + :help "Don't include spaces in passphrases." + :long "smush" + :short #\m + :reduce (constantly t))) + +(defparameter *no-smush* + (adopt:make-option 'no-smush :result-key 'smush + :help "Include spaces in passphrases (the default)." + :long "no-smush" + :short #\M + :reduce (constantly nil))) + + +(defparameter *password-options* + (adopt:make-group 'password-options + :title "Password Options" + :help "The format of generated passwords can be customized in a number of ways." + :options (list *length* + *words* *no-words* + *smart* *no-smart* + *smush* *no-smush*))) + + +(defparameter *ui* + (adopt:make-interface + :name "genpass" + :usage "[OPTIONS]" + :summary "Generate a random password." + :help "Generate a random password." + :examples *examples* + :contents (list *help* *password-options*))) + (defun toplevel () (handler-case (multiple-value-bind (arguments options) (adopt:parse-options *ui*) (when (gethash 'help options) - (adopt:print-usage-and-exit *ui*)) + (adopt:print-help-and-exit *ui*)) (when arguments (error "Unrecognized command line arguments: ~S" arguments)) (run (gethash 'length options) diff -r 9dcc4278dc41 -r b892847fa264 lisp/lispindent.lisp --- a/lisp/lispindent.lisp Sat Apr 13 10:04:13 2019 -0400 +++ b/lisp/lispindent.lisp Sat Apr 13 10:05:46 2019 -0400 @@ -267,26 +267,38 @@ (indent-lines) t) -(adopt:define-interface *ui* - (:name "lispindent" - :usage "" - :summary "Indent Common Lisp code." - :documentation (format nil - "Read Common Lisp code from standard input, indent ~ - it according to some simple rules and configuration, ~ - and write the result to standard output.")) - ((help) - :documentation "display help and exit" - :manual "Display help and exit." - :long "help" - :short #\h - :reduce (constantly t))) + +(adopt:define-string *doc-help* + "Read Common Lisp code from standard input, indent it according to some ~ + simple rules and configuration, and write the result to standard output.") + +(adopt:define-string *doc-manual* + "~A~@ + ~@ + Configuration is read from ~~/.lispwords and ./.lispwords" + *doc-help*) + +(defparameter *ui* + (adopt:make-interface + :name "lispindent" + :usage "[OPTIONS]" + :summary "Indent Common Lisp code." + :help *doc-help* + :manual *doc-manual* + :contents + (list (adopt:make-option 'help + :help "display help and exit" + :manual "Display help and exit." + :long "help" + :short #\h + :reduce (constantly t))))) + (defun toplevel () (handler-case (multiple-value-bind (arguments options) (adopt:parse-options *ui*) (when (gethash 'help options) - (adopt:print-usage-and-exit *ui*)) + (adopt:print-help-and-exit *ui*)) (when arguments (error "Unrecognized arguments: ~S" arguments)) (run)) diff -r 9dcc4278dc41 -r b892847fa264 lisp/search.lisp --- a/lisp/search.lisp Sat Apr 13 10:04:13 2019 -0400 +++ b/lisp/search.lisp Sat Apr 13 10:05:46 2019 -0400 @@ -46,43 +46,49 @@ If no FILEs are given, standard input will be searched. Standard input can ~ also be searched by specifying - as a filename.") -(adopt:define-interface *ui* - (:name "search" - :usage "PATTERN [FILE...]" - :summary "Print lines that match a regular expression." - :documentation *documentation*) - (help - :documentation "display help and exit" - :long "help" - :short #\h - :reduce (constantly t)) - (literal - :documentation "treat PATTERN as a literal string instead of a regex" - :long "literal" - :short #\l - :reduce (constantly t)) - ((no-literal literal) - :documentation "treat PATTERN as a regex (the default)" - :long "no-literal" - :short #\L - :reduce (constantly nil)) - (invert - :documentation "print non-matching lines" - :long "invert" - :short #\v - :initial-value nil - :reduce (constantly t)) - ((no-invert invert) - :documentation "print matching lines (the default)" - :long "no-invert" - :short #\V - :reduce (constantly nil))) + +(defparameter *ui* + (adopt:make-interface + :name "search" + :usage "PATTERN [FILE...]" + :summary "Print lines that match a regular expression." + :help *documentation* + :contents + (list + (adopt:make-option 'help + :help "display help and exit" + :long "help" + :short #\h + :reduce (constantly t)) + (adopt:make-option 'literal + :help "treat PATTERN as a literal string instead of a regex" + :long "literal" + :short #\l + :reduce (constantly t)) + (adopt:make-option 'no-literal + :result-key 'literal + :help "treat PATTERN as a regex (the default)" + :long "no-literal" + :short #\L + :reduce (constantly nil)) + (adopt:make-option 'invert + :help "print non-matching lines" + :long "invert" + :short #\v + :initial-value nil + :reduce (constantly t)) + (adopt:make-option 'no-invert + :result-key 'invert + :help "print matching lines (the default)" + :long "no-invert" + :short #\V + :reduce (constantly nil))))) (defun toplevel () (handler-case (multiple-value-bind (arguments options) (adopt:parse-options *ui*) (when (gethash 'help options) - (adopt:print-usage-and-exit *ui*)) + (adopt:print-help-and-exit *ui*)) (when (null arguments) (error "PATTERN is required")) (destructuring-bind (pattern . paths) arguments diff -r 9dcc4278dc41 -r b892847fa264 lisprc --- a/lisprc Sat Apr 13 10:04:13 2019 -0400 +++ b/lisprc Sat Apr 13 10:05:46 2019 -0400 @@ -3,6 +3,10 @@ (when (probe-file quicklisp-init) (load quicklisp-init))) +(defun :ls (package) + (do-external-symbols (s package) + (print s))) + (setf *print-pretty* t *print-escape* t *print-right-margin* 100 @@ -10,16 +14,3 @@ *print-length* 1000 *print-level* 250) - -; (defun prefix= (needle haystack) -; (string= needle haystack :end2 (min (length haystack) (length needle)))) -; -; (defun https-please (url &rest args) -; ;; http://beta.quicklisp.org/ -; (if (prefix= "http://beta.quicklisp.org/" url) -; (setf url (concatenate 'string "https://beta.quicklisp.org:443/" -; (subseq url 26)))) -; (print `(fetching ,url)) -; (apply #'ql-http:http-fetch url args)) -; -; (setf ql-http:*fetch-scheme-functions* '(("http" . https-please))) diff -r 9dcc4278dc41 -r b892847fa264 lispwords --- a/lispwords Sat Apr 13 10:04:13 2019 -0400 +++ b/lispwords Sat Apr 13 10:05:46 2019 -0400 @@ -120,3 +120,6 @@ ; adopt (2 define-interface) +(1 make-option) + + diff -r 9dcc4278dc41 -r b892847fa264 stumpwm/dev.lisp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/stumpwm/dev.lisp Sat Apr 13 10:05:46 2019 -0400 @@ -0,0 +1,52 @@ +#S(GDUMP + :NUMBER 4 + :NAME "Default" + :TREE (((#S(FDUMP + :NUMBER 0 + :X 0 + :Y 0 + :WIDTH 835 + :HEIGHT 870 + :WINDOWS (16777221 27262981 50331649 52428805) + :CURRENT 16777221) + #S(FDUMP + :NUMBER 2 + :X 0 + :Y 870 + :WIDTH 835 + :HEIGHT 570 + :WINDOWS (60817413) + :CURRENT 60817413)) + (((#S(FDUMP + :NUMBER 1 + :X 835 + :Y 0 + :WIDTH 617 + :HEIGHT 720 + :WINDOWS NIL + :CURRENT NIL) + #S(FDUMP + :NUMBER 5 + :X 835 + :Y 720 + :WIDTH 617 + :HEIGHT 720 + :WINDOWS NIL + :CURRENT NIL)) + #S(FDUMP + :NUMBER 4 + :X 1452 + :Y 0 + :WIDTH 2348 + :HEIGHT 1440 + :WINDOWS (41943045 31457296) + :CURRENT 41943045)) + #S(FDUMP + :NUMBER 3 + :X 3800 + :Y 0 + :WIDTH 1320 + :HEIGHT 1440 + :WINDOWS NIL + :CURRENT NIL)))) + :CURRENT 4) \ No newline at end of file diff -r 9dcc4278dc41 -r b892847fa264 stumpwmrc --- a/stumpwmrc Sat Apr 13 10:04:13 2019 -0400 +++ b/stumpwmrc Sat Apr 13 10:05:46 2019 -0400 @@ -282,6 +282,16 @@ ;;;; Key Mapping -------------------------------------------------------------- +;;; Conventions: +;;; +;;; * Hyper-dir: move focus +;;; * Hyper-Shift-dir: move window +;;; * Hyper-Shift-Control-dir: swap window +;;; * Hyper-F*: hardware +;;; * Shift-F*: timers +;;; * Hyper-Super-*: layout +;;; * Hyper-*: miscellaneous + (defmacro define-top-keys (&body keyforms) `(progn ,@(loop :for form :in keyforms :collect `(define-key *top-map* @@ -292,11 +302,8 @@ (define-top-keys ;; application shortcuts ("H-m" "exec st") ("H-\\" "pass-personal") - ;; ("H-|" "pass-work") ("H-b" "browser") ("H-o" "spotify") - ("H-I" "intellij") - ("H-L" "libreoffice") ("H-q" "exec slock") ("H-y" "screenshot-area") ("H-Y" "screenshot-screen") @@ -354,6 +361,10 @@ ("H-F2" "exec amixer -q sset Master 5%-") ("H-F3" "exec amixer -q sset Master 5%+")) +(define-top-keys ;; layout + ("s-H-m" "restore-from-file ~/src/dotfiles/stumpwm/dev.lisp") + ("s-H-s" "restore-from-file ~/src/dotfiles/stumpwm/streaming.lisp")) + (define-top-keys ;; timers ("s-F9" "run-pop-timer") ("s-F10" "set-pop-timer")) diff -r 9dcc4278dc41 -r b892847fa264 uhk.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uhk.json Sat Apr 13 10:05:46 2019 -0400 @@ -0,0 +1,7991 @@ +{ + "userConfigMajorVersion": 4, + "userConfigMinorVersion": 0, + "userConfigPatchVersion": 0, + "deviceName": "My UHK", + "doubleTapSwitchLayerTimeout": 250, + "iconsAndLayerTextsBrightness": 35, + "alphanumericSegmentsBrightness": 10, + "keyBacklightBrightness": 0, + "mouseMoveInitialSpeed": 8, + "mouseMoveAcceleration": 128, + "mouseMoveDeceleratedSpeed": 5, + "mouseMoveBaseSpeed": 89, + "mouseMoveAcceleratedSpeed": 128, + "mouseScrollInitialSpeed": 20, + "mouseScrollAcceleration": 51, + "mouseScrollDeceleratedSpeed": 20, + "mouseScrollBaseSpeed": 60, + "mouseScrollAcceleratedSpeed": 50, + "moduleConfigurations": [], + "keymaps": [ + { + "isDefault": false, + "abbreviation": "COM", + "name": "Colemak for Mac", + "description": "Colemak is based on QWERTY, but it places the most frequent letters under the strongest fingers. This is the Mac version.", + "layers": [ + { + "modules": [ + { + "id": 0, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 36 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 37 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 38 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 39 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 45 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 46 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 42 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 15 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 24 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 28 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 51 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 47 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 48 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 49 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 13 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 17 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 12 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 18 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 52 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 40 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 11 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 14 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 16 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 54 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 55 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 56 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 44 + }, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 53 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 30 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 31 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 32 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 33 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 34 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 35 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 43 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 20 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 26 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 9 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 19 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 10 + }, + { + "keyActionType": "switchLayer", + "layer": "mouse", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 21 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 22 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 23 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 7 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 100 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 29 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 27 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 6 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 25 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 5 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 44 + }, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null + ] + }, + { + "id": 2, + "keyActions": [] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 65 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 66 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 67 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 68 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 69 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 76 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 74 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 82 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 77 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 76 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 70 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 71 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 72 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 75 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 81 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 73 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 78 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 101 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 58 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 59 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 60 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 61 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 62 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 63 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80, + "modifierMask": 12 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 23, + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79, + "modifierMask": 12 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 57 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80, + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 43, + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79, + "modifierMask": 1 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 26, + "modifierMask": 8 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null + ] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 205 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 233 + }, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 184, + "modifierMask": 12 + }, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 182 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 234 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 181 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 226 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "QWR" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "DVO" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "COL" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "QWM" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "DVM" + }, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + null, + null + ] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + null, + null, + null, + null, + null, + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "TES" + }, + { + "keyActionType": "mouse", + "mouseAction": "scrollLeft" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveUp" + }, + { + "keyActionType": "mouse", + "mouseAction": "scrollRight" + }, + null, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollDown" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveLeft" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveDown" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveRight" + }, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollUp" + }, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "leftClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "rightClick" + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "QWR" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "DVO" + }, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mouse", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "rightClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "middleClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "leftClick" + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "decelerate" + }, + { + "keyActionType": "mouse", + "mouseAction": "accelerate" + }, + null + ] + } + ] + } + ] + }, + { + "isDefault": false, + "abbreviation": "COL", + "name": "Colemak for PC", + "description": "Colemak is based on QWERTY, but it places the most frequent letters under the strongest fingers. This is the PC version.\n", + "layers": [ + { + "modules": [ + { + "id": 0, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 36 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 37 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 38 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 39 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 45 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 46 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 42 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 15 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 24 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 28 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 51 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 47 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 48 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 49 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 13 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 17 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 12 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 18 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 52 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 40 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 11 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 14 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 16 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 54 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 55 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 56 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 44 + }, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 53 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 30 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 31 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 32 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 33 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 34 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 35 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 43 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 20 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 26 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 9 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 19 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 10 + }, + { + "keyActionType": "switchLayer", + "layer": "mouse", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 21 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 22 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 23 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 7 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 100 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 29 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 27 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 6 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 25 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 5 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 44 + }, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null + ] + }, + { + "id": 2, + "keyActions": [] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 65 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 66 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 67 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 68 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 69 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 76 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 74 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 82 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 77 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 76 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 70 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 71 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 72 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 75 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 81 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 73 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 78 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 101 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 58 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 59 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 60 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 61 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 62 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 63 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 75, + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 23, + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 78, + "modifierMask": 1 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 57 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80, + "modifierMask": 5 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 43, + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79, + "modifierMask": 5 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 75, + "modifierMask": 3 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 26, + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 78, + "modifierMask": 3 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null + ] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 205 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 233 + }, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "system", + "scancode": 130 + }, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 182 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 234 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 181 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 226 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "QWR" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "DVO" + }, + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "QWM" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "DVM" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "COM" + }, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + null, + null + ] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + null, + null, + null, + null, + null, + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "TES" + }, + { + "keyActionType": "mouse", + "mouseAction": "scrollLeft" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveUp" + }, + { + "keyActionType": "mouse", + "mouseAction": "scrollRight" + }, + null, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollUp" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveLeft" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveDown" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveRight" + }, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollDown" + }, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "leftClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "rightClick" + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "QWR" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "DVO" + }, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mouse", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "rightClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "middleClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "leftClick" + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "decelerate" + }, + { + "keyActionType": "mouse", + "mouseAction": "accelerate" + }, + null + ] + } + ] + } + ] + }, + { + "isDefault": false, + "abbreviation": "DVM", + "name": "Dvorak for Mac", + "description": "The Dvorak keyboard layout was designed with the goal of maximizing typing efficiency. This is the Mac version.", + "layers": [ + { + "modules": [ + { + "id": 0, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 36 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 37 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 38 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 39 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 47 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 48 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 42 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 10 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 6 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 21 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 15 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 56 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 46 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 49 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 9 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 11 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 23 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 17 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 22 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 45 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 40 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 7 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 5 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 16 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 26 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 25 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 29 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 44 + }, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 53 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 30 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 31 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 32 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 33 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 34 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 35 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 43 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 52 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 54 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 55 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 19 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 28 + }, + { + "keyActionType": "switchLayer", + "layer": "mouse", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 18 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 24 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 12 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 100 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 51 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 20 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 13 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 14 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 27 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 44 + }, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null + ] + }, + { + "id": 2, + "keyActions": [] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 65 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 66 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 67 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 68 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 69 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 76 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 74 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 82 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 77 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 76 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 70 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 71 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 72 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 75 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 81 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 73 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 78 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 101 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 58 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 59 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 60 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 61 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 62 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 63 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80, + "modifierMask": 12 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 23, + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79, + "modifierMask": 12 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 57 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80, + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 43, + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79, + "modifierMask": 1 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 26, + "modifierMask": 8 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null + ] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 205 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 233 + }, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 184, + "modifierMask": 12 + }, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 182 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 234 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 181 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 226 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "QWR" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "DVO" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "COL" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "QWM" + }, + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "COM" + }, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + null, + null + ] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollLeft" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveUp" + }, + { + "keyActionType": "mouse", + "mouseAction": "scrollRight" + }, + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "QWR" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "COL" + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollDown" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveLeft" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveDown" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveRight" + }, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollUp" + }, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "leftClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "rightClick" + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mouse", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "rightClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "middleClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "leftClick" + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "decelerate" + }, + { + "keyActionType": "mouse", + "mouseAction": "accelerate" + }, + null + ] + } + ] + } + ] + }, + { + "isDefault": false, + "abbreviation": "DVO", + "name": "Dvorak for PC", + "description": "The Dvorak keyboard layout was designed with the goal of maximizing typing efficiency. This is the PC version.", + "layers": [ + { + "modules": [ + { + "id": 0, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 36 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 37 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 38 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 39 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 47 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 48 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 42 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 10 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 6 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 21 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 15 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 56 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 46 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 49 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 9 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 11 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 23 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 17 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 22 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 45 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 40 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 7 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 5 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 16 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 26 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 25 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 29 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 44 + }, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 53 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 30 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 31 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 32 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 33 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 34 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 35 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 43 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 52 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 54 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 55 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 19 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 28 + }, + { + "keyActionType": "switchLayer", + "layer": "mouse", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 18 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 24 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 12 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 100 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 51 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 20 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 13 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 14 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 27 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 44 + }, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null + ] + }, + { + "id": 2, + "keyActions": [] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 65 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 66 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 67 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 68 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 69 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 76 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 74 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 82 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 77 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 76 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 70 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 71 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 72 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 75 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 81 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 73 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 78 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 101 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 58 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 59 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 60 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 61 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 62 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 63 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 75, + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 23, + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 78, + "modifierMask": 1 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 57 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80, + "modifierMask": 5 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 43, + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79, + "modifierMask": 5 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 75, + "modifierMask": 3 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 26, + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 78, + "modifierMask": 3 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null + ] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 205 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 233 + }, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "system", + "scancode": 130 + }, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 182 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 234 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 181 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 226 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "QWR" + }, + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "COL" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "QWM" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "DVM" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "COM" + }, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + null, + null + ] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollLeft" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveUp" + }, + { + "keyActionType": "mouse", + "mouseAction": "scrollRight" + }, + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "QWR" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "COL" + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollUp" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveLeft" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveDown" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveRight" + }, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollDown" + }, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "leftClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "rightClick" + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mouse", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "rightClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "middleClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "leftClick" + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "decelerate" + }, + { + "keyActionType": "mouse", + "mouseAction": "accelerate" + }, + null + ] + } + ] + } + ] + }, + { + "isDefault": false, + "abbreviation": "QWM", + "name": "QWERTY for Mac", + "description": "QWERTY is the mother of all layouts. This is the Mac version.", + "layers": [ + { + "modules": [ + { + "id": 0, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 36 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 37 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 38 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 39 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 45 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 46 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 42 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 24 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 12 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 18 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 19 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 47 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 48 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 49 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 28 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 13 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 14 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 15 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 51 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 52 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 40 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 11 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 17 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 16 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 54 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 55 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 56 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 44 + }, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 53 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 30 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 31 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 32 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 33 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 34 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 35 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 43 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 20 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 26 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 21 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 23 + }, + { + "keyActionType": "switchLayer", + "layer": "mouse", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 22 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 7 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 9 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 10 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 100 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 29 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 27 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 6 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 25 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 5 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 44 + }, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null + ] + }, + { + "id": 2, + "keyActions": [] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 65 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 66 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 67 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 68 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 69 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 76 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 74 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 82 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 77 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 76 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 70 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 71 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 72 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 75 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 81 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 73 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 78 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 101 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 58 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 59 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 60 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 61 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 62 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 63 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80, + "modifierMask": 12 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 23, + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79, + "modifierMask": 12 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 57 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80, + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 43, + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79, + "modifierMask": 1 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 26, + "modifierMask": 8 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null + ] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 205 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 233 + }, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 184, + "modifierMask": 12 + }, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 182 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 234 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 181 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 226 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "QWR" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "DVO" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "COL" + }, + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "DVM" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "COM" + }, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + null, + null + ] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollLeft" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveUp" + }, + { + "keyActionType": "mouse", + "mouseAction": "scrollRight" + }, + null, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollDown" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveLeft" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveDown" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveRight" + }, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollUp" + }, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "leftClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "rightClick" + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mouse", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "rightClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "middleClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "leftClick" + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "decelerate" + }, + { + "keyActionType": "mouse", + "mouseAction": "accelerate" + }, + null + ] + } + ] + } + ] + }, + { + "isDefault": false, + "abbreviation": "QWR", + "name": "QWERTY for PC", + "description": "QWERTY is the mother of all layouts. This is the PC version.", + "layers": [ + { + "modules": [ + { + "id": 0, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 36 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 37 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 38 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 39 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 45 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 46 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 42 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 24 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 12 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 18 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 19 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 47 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 48 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 49 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 28 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 13 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 14 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 15 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 51 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 52 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 40 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 11 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 17 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 16 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 54 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 55 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 56 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 44 + }, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 53 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 30 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 31 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 32 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 33 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 34 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 35 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 43 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 20 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 26 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 21 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 23 + }, + { + "keyActionType": "switchLayer", + "layer": "mouse", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 22 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 7 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 9 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 10 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 100 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 29 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 27 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 6 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 25 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 5 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 44 + }, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null + ] + }, + { + "id": 2, + "keyActions": [] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 65 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 66 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 67 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 68 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 69 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 76 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 74 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 82 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 77 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 76 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 70 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 71 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 72 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 75 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 81 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 73 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 78 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 101 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 58 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 59 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 60 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 61 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 62 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 63 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 75, + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 23, + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 78, + "modifierMask": 1 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 57 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80, + "modifierMask": 5 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 43, + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79, + "modifierMask": 5 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 75, + "modifierMask": 3 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 26, + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 78, + "modifierMask": 3 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null + ] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + null, + null, + null, + null, + null, + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "TES" + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 205 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 233 + }, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "system", + "scancode": 130 + }, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 182 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 234 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 181 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 226 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + null, + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "DVO" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "COL" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "QWM" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "DVM" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "COM" + }, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + null, + null + ] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollLeft" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveUp" + }, + { + "keyActionType": "mouse", + "mouseAction": "scrollRight" + }, + null, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollUp" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveLeft" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveDown" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveRight" + }, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollDown" + }, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "leftClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "rightClick" + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mouse", + "switchLayerMode": "holdAndDoubleTapToggle" + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "rightClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "middleClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "leftClick" + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "decelerate" + }, + { + "keyActionType": "mouse", + "mouseAction": "accelerate" + }, + null + ] + } + ] + } + ] + }, + { + "isDefault": true, + "abbreviation": "SJL", + "name": "SJL", + "description": "My personal mappings.", + "layers": [ + { + "modules": [ + { + "id": 0, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 36 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 37 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 38 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 39 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 45 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 46 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 42 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 24 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 12 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 18 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 19 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 47 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 48 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 49 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 28 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 13 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 14 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 15 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 51 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 52 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 40 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 11 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 17 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 16 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 54 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 55 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 56 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 44 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 72 + }, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "hold" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + } + ] + }, + { + "id": 1, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 53 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 30 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 31 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 32 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 33 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 34 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 35 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 43 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 20 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 26 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 21 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 23 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 57 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 22 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 7 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 9 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 10 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 100 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 29 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 27 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 6 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 25 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 5 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "toggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 101 + }, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "hold" + }, + null + ] + }, + { + "id": 2, + "keyActions": [] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 65 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 66 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 67 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 68 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 69 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 76 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 78 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 75 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 77 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 76 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 70 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 71 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 72 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 74 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 81 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 82 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 73 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 101 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + null, + null, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "hold" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + } + ] + }, + { + "id": 1, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 58 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 59 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 60 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 61 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 62 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 63 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 75, + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 23, + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 78, + "modifierMask": 1 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 57 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 57 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80, + "modifierMask": 5 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 43, + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79, + "modifierMask": 5 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 29, + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 27, + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 6, + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 25, + "modifierMask": 8 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "switchLayer", + "layer": "mod", + "switchLayerMode": "hold" + }, + null + ] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 42 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 84 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 85 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 86 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 42 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 95 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 37 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 97 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 87 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 83 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 92 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 93 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 94 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 51 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 88 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 89 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 90 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 91 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 44 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 98 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 99 + }, + null, + null + ] + }, + { + "id": 1, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 57 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "switchLayer", + "layer": "fn", + "switchLayerMode": "toggle" + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + null, + null + ] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollDown" + }, + { + "keyActionType": "mouse", + "mouseAction": "scrollUp" + }, + { + "keyActionType": "mouse", + "mouseAction": "scrollRight" + }, + null, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollLeft" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveDown" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveUp" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveRight" + }, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "moveLeft" + }, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "leftClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "rightClick" + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + } + ] + }, + { + "id": 1, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 57 + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "rightClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "middleClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "leftClick" + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "mouse", + "mouseAction": "accelerate" + }, + null + ] + } + ] + } + ] + }, + { + "isDefault": false, + "abbreviation": "TES", + "name": "Test", + "description": "This keymap is only used for factory testing purposes.", + "layers": [ + { + "modules": [ + { + "id": 0, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 36 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 37 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 38 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 39 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 45 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 46 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 42 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 24 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 12 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 18 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 19 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 47 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 48 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 49 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 28 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 13 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 14 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 15 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 51 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 52 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 87 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 11 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 17 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 16 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 54 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 55 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 56 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 94 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 85 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 95 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 96 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 97 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 98 + } + ] + }, + { + "id": 1, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 53 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 30 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 31 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 32 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 33 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 34 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 35 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 20 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 26 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 21 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 23 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 86 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 22 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 7 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 9 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 10 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 100 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 29 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 27 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 6 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 25 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 5 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 89 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 90 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 91 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 92 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 84 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 93 + }, + null + ] + }, + { + "id": 2, + "keyActions": [] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 65 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 66 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 67 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 68 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 69 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 76 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 74 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 82 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 77 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 76 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 70 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 71 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 72 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 75 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 81 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 73 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 78 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 101 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 58 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 59 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 60 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 61 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 62 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 63 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 41 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 75, + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 23, + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 78, + "modifierMask": 1 + }, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 57 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 80, + "modifierMask": 5 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 43, + "modifierMask": 4 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 79, + "modifierMask": 5 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 75, + "modifierMask": 3 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 26, + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "scancode": 78, + "modifierMask": 3 + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + null, + null, + null, + null + ] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 205 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 233 + }, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "system", + "scancode": 130 + }, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 182 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 234 + }, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 181 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "media", + "scancode": 226 + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + null, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "QWR" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "DVO" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "COL" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "QWM" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "DVM" + }, + { + "keyActionType": "switchKeymap", + "keymapAbbreviation": "COM" + }, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + null, + null, + null, + null + ] + } + ] + }, + { + "modules": [ + { + "id": 0, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollLeft" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveUp" + }, + { + "keyActionType": "mouse", + "mouseAction": "scrollRight" + }, + null, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollUp" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveLeft" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveDown" + }, + { + "keyActionType": "mouse", + "mouseAction": "moveRight" + }, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "scrollDown" + }, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 32 + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "leftClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "rightClick" + }, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 64 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 128 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 16 + } + ] + }, + { + "id": 1, + "keyActions": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "mouse", + "mouseAction": "rightClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "middleClick" + }, + { + "keyActionType": "mouse", + "mouseAction": "leftClick" + }, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 2 + }, + null, + null, + null, + null, + null, + null, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 1 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 8 + }, + { + "keyActionType": "keystroke", + "type": "basic", + "modifierMask": 4 + }, + null, + { + "keyActionType": "mouse", + "mouseAction": "decelerate" + }, + { + "keyActionType": "mouse", + "mouseAction": "accelerate" + }, + null + ] + } + ] + } + ] + } + ], + "macros": [ + { + "isLooped": true, + "isPrivate": true, + "name": "Go to UHK site in browser", + "macroActions": [ + { + "macroActionType": "key", + "action": "tap", + "type": "basic", + "scancode": 15, + "modifierMask": 1 + }, + { + "macroActionType": "text", + "text": "https://ultimatehackingkeyboard.com" + }, + { + "macroActionType": "key", + "action": "tap", + "type": "basic", + "scancode": 40 + } + ] + }, + { + "isLooped": false, + "isPrivate": true, + "name": "God mode in Doom", + "macroActions": [ + { + "macroActionType": "text", + "text": "iddqd" + } + ] + }, + { + "isLooped": false, + "isPrivate": true, + "name": "Type Silent Bob's address", + "macroActions": [ + { + "macroActionType": "text", + "text": "Silent Bob\n711-2880 Nulla St.\nMankato Mississippi 96522\n(257) 563-7401" + } + ] + } + ] +} \ No newline at end of file diff -r 9dcc4278dc41 -r b892847fa264 vim/vimrc --- a/vim/vimrc Sat Apr 13 10:04:13 2019 -0400 +++ b/vim/vimrc Sat Apr 13 10:05:46 2019 -0400 @@ -1,9 +1,6 @@ " .vimrc " Author: Steve Losh " Source: http://bitbucket.org/sjl/dotfiles/src/tip/vim/ -" -" This file changes a lot. I'll try to document pieces of it whenever I have -" a few minutes to kill. " Preamble ---------------------------------------------------------------- {{{ " @@ -257,6 +254,7 @@ silent! digr -. 8230 "U+2026=… HORIZONTAL ELLIPSIS silent! digr !, 8816 "U+2270=≰ NEITHER LESS-THAN NOR EQUAL TO silent! digr !. 8817 "U+2271=≱ NEITHER GREATER-THAN NOR EQUAL TO +silent! digr es 8337 "U+2091=ₑ SUBSCRIPT E silent! digr xs 8339 "U+2093=ₓ SUBSCRIPT X silent! digr ls 8343 "U+2097=ₗ SUBSCRIPT L silent! digr ms 8344 "U+2098=ₗ SUBSCRIPT M @@ -1407,6 +1405,7 @@ function! GetGoFold(lnum) let line = getline(a:lnum) let prev = getline(a:lnum-1) + let next = getline(a:lnum+1) if line =~# '\v^//' if prev =~# '\v^//' @@ -1418,8 +1417,28 @@ return '>1' elseif line =~#'\v^[})]$' return '1' + elseif line == "" && next =~#'\v^//' + " blank line before a comment. If the previous line is a comment, fold + " it with that. Otherwise don't fold it. Example: + " + " func x () { + " … + " } + " don't fold this one + " // foo --------------------- + " but DO fold this one into the header comment + " // some doc comment + " // with lines + " func y () … + if prev =~#'\v^//' + return '1' + else + return '0' + endif elseif line == "" && prev =~#'\v^[})]$' return '<1' + elseif line =~# '\v^\S' + return '0' else return '=' endif @@ -1438,6 +1457,8 @@ " this language is incredible au FileType go iabbrev ernil if err != nil {return nil, errjA + au FileType go iabbrev erstr if err != nil {return "", errjA + au FileType go iabbrev ererr if err != nil {return errjA au FileType go iabbrev erpan if err != nil {panic(err)jA augroup END diff -r 9dcc4278dc41 -r b892847fa264 weechat/plugins.conf --- a/weechat/plugins.conf Sat Apr 13 10:04:13 2019 -0400 +++ b/weechat/plugins.conf Sat Apr 13 10:05:46 2019 -0400 @@ -73,9 +73,6 @@ python.slack.auto_open_threads = "false" python.slack.background_load_all_history = "false" python.slack.channel_name_typing_indicator = "true" -python.slack.color_buflist_muted_channels = "darkgray" -python.slack.color_reaction_suffix = "darkgray" -python.slack.color_thread_suffix = "lightcyan" python.slack.colorize_private_chats = "false" python.slack.debug_level = "3" python.slack.debug_mode = "false" @@ -97,7 +94,6 @@ python.slack.slack_api_token = "xoxp-3324703083-436133997184-447755985685-90585fad41071ee30fb518ad29831038" python.slack.slack_timeout = "20000" python.slack.switch_buffer_on_join = "true" -python.slack.thread_messages_in_channel = "false" python.slack.thread_suffix_color = "lightcyan" python.slack.unfurl_auto_link_display = "both" python.slack.unfurl_ignore_alt_text = "false" @@ -122,9 +118,6 @@ python.slack.auto_open_threads = "Automatically open threads when mentioned or inresponse to own messages." python.slack.background_load_all_history = "Load history for each channel in the background as soon as it opens, rather than waiting for the user to look at it." python.slack.channel_name_typing_indicator = "Change the prefix of a channel from # to > when someone is typing in it. Note that this will (temporarily) affect the sort order if you sort buffers by name rather than by number." -python.slack.color_buflist_muted_channels = "Color to use for muted channels in the buflist" -python.slack.color_reaction_suffix = "Color to use for the [:wave:(@user)] suffix on messages that have reactions attached to them." -python.slack.color_thread_suffix = "Color to use for the [thread: XXX] suffix on messages that have threads attached to them." python.slack.colorize_private_chats = "Whether to use nick-colors in DM windows." python.slack.debug_level = "Show only this level of debug info (or higher) when debug_mode is on. Lower levels -> more messages." python.slack.debug_mode = "Open a dedicated buffer for debug messages and start logging to it. How verbose the logging is depends on log_level." @@ -145,7 +138,6 @@ python.slack.slack_api_token = "List of Slack API tokens, one per Slack instance you want to connect to. See the README for details on how to get these." python.slack.slack_timeout = "How long (ms) to wait when communicating with Slack." python.slack.switch_buffer_on_join = "When /joining a channel, automatically switch to it as well." -python.slack.thread_messages_in_channel = "When enabled shows thread messages in the parent channel." python.slack.thread_suffix_color = "Color to use for the [thread: XXX] suffix on messages that have threads attached to them." python.slack.unfurl_auto_link_display = "When displaying ("unfurling") links to channels/users/etc, determine what is displayed when the text matches the url without the protocol. This happens when Slack automatically creates links, e.g. from words separated by dots or email addresses. Set it to "text" to only display the text written by the user, "url" to only display the url or "both" (the default) to display both." python.slack.unfurl_ignore_alt_text = "When displaying ("unfurling") links to channels/users/etc, ignore the "alt text" present in the message and instead use the canonical name of the thing being linked to."