From 4ed7d754f7739affd27812917d6f68bcbd2fcbf7 Mon Sep 17 00:00:00 2001 From: Doan Thieu Date: Fri, 15 May 2026 21:27:09 +0700 Subject: [PATCH 01/18] Migrate dotfiles to chezmoi --- .chezmoiignore | 4 + README.md | 26 + dot_gitconfig | 31 + nvim/.config/nvim/plugin/packer_compiled.lua | 234 - private_dot_config/kitty/Nightfox.conf | 52 + private_dot_config/kitty/current-theme.conf | 80 + private_dot_config/kitty/kitty.conf | 1301 ++ private_dot_config/nvim/init.lua | 18 + .../nvim/lua/user/autocommands.lua | 29 + .../nvim/lua/user/autopairs.lua | 0 .../nvim/lua/user/bufferline.lua | 0 private_dot_config/nvim/lua/user/cmp.lua | 128 + .../nvim/lua/user/colorscheme.lua | 0 .../nvim/lua/user/comment.lua | 0 private_dot_config/nvim/lua/user/gitsigns.lua | 36 + .../nvim/lua/user/indentline.lua | 18 + private_dot_config/nvim/lua/user/keymaps.lua | 55 + .../nvim/lua/user/lsp/handlers.lua | 77 + .../nvim/lua/user/lsp/init.lua | 0 .../nvim/lua/user/lsp/mason.lua | 48 + .../nvim/lua/user/lsp/null-ls.lua | 0 .../nvim/lua/user/lsp/settings/pyright.lua | 0 private_dot_config/nvim/lua/user/lualine.lua | 64 + .../nvim/lua/user/nvim-tree.lua | 10 + .../nvim/lua/user/options.lua | 0 private_dot_config/nvim/lua/user/plugins.lua | 93 + .../nvim/lua/user/telescope.lua | 25 + .../nvim/lua/user/toggleterm.lua | 32 + .../nvim/lua/user/treesitter.lua | 30 + .../nvim/lua/user/which-key.lua | 6 + .../1597572871.json | 0 .../1597574790.json | 0 .../1597576542.json | 0 .../1655107459.json | 0 .../private_karabiner/private_karabiner.json | 4032 ++++++ .../fish}/.config/fish/config.fish | 0 .../fish}/.config/fish/fish_variables | 0 .../.config/fish/functions/fish_prompt.fish | 0 .../functions/fish_user_key_bindings.fish | 0 .../fish/themes/Catppuccin Frappe.theme | 0 .../fish/themes/Catppuccin Latte.theme | 0 .../fish/themes/Catppuccin Macchiato.theme | 0 .../fish/themes/Catppuccin Mocha.theme | 0 {git => stow-legacy/git}/.gitconfig | 0 .../complex_modifications/1597572871.json | 10784 ++++++++++++++++ .../complex_modifications/1597574790.json | 3609 ++++++ .../complex_modifications/1597576542.json | 78 + .../complex_modifications/1655107459.json | 83 + .../karabiner}/karabiner.json | 0 .../kitty}/.config/kitty/kitty.conf | 0 .../nvim}/.config/nvim/init.lua | 0 .../nvim}/.config/nvim/lua/user/alpha.lua | 0 .../.config/nvim/lua/user/autocommands.lua | 0 .../nvim/.config/nvim/lua/user/autopairs.lua | 8 + .../nvim/.config/nvim/lua/user/bufferline.lua | 13 + .../nvim}/.config/nvim/lua/user/cmp.lua | 0 .../.config/nvim/lua/user/colorscheme.lua | 6 + .../nvim/.config/nvim/lua/user/comment.lua | 8 + .../nvim}/.config/nvim/lua/user/gitsigns.lua | 0 .../nvim}/.config/nvim/lua/user/keymaps.lua | 0 .../.config/nvim/lua/user/lsp/handlers.lua | 0 .../nvim/.config/nvim/lua/user/lsp/init.lua | 8 + .../nvim}/.config/nvim/lua/user/lsp/mason.lua | 0 .../.config/nvim/lua/user/lsp/null-ls.lua | 19 + .../nvim/lua/user/lsp/settings/pyright.lua | 9 + .../nvim}/.config/nvim/lua/user/lualine.lua | 0 .../nvim}/.config/nvim/lua/user/nvim-dap.lua | 0 .../.config/nvim/lua/user/nvim-dapui.lua | 0 .../nvim}/.config/nvim/lua/user/nvim-tree.lua | 0 .../nvim/.config/nvim/lua/user/options.lua | 15 + .../nvim}/.config/nvim/lua/user/plugins.lua | 0 .../nvim}/.config/nvim/lua/user/telescope.lua | 0 .../.config/nvim/lua/user/toggleterm.lua | 0 .../.config/nvim/lua/user/treesitter.lua | 0 .../nvim}/.config/nvim/lua/user/which-key.lua | 0 .../.config/nvim/lua/user/xcodebuild.lua | 0 {vim => stow-legacy/vim}/.vimrc | 0 77 files changed, 20835 insertions(+), 234 deletions(-) create mode 100644 .chezmoiignore create mode 100644 dot_gitconfig delete mode 100644 nvim/.config/nvim/plugin/packer_compiled.lua create mode 100644 private_dot_config/kitty/Nightfox.conf create mode 100644 private_dot_config/kitty/current-theme.conf create mode 100644 private_dot_config/kitty/kitty.conf create mode 100644 private_dot_config/nvim/init.lua create mode 100644 private_dot_config/nvim/lua/user/autocommands.lua rename {nvim/.config => private_dot_config}/nvim/lua/user/autopairs.lua (100%) rename {nvim/.config => private_dot_config}/nvim/lua/user/bufferline.lua (100%) create mode 100644 private_dot_config/nvim/lua/user/cmp.lua rename {nvim/.config => private_dot_config}/nvim/lua/user/colorscheme.lua (100%) rename {nvim/.config => private_dot_config}/nvim/lua/user/comment.lua (100%) create mode 100644 private_dot_config/nvim/lua/user/gitsigns.lua create mode 100644 private_dot_config/nvim/lua/user/indentline.lua create mode 100644 private_dot_config/nvim/lua/user/keymaps.lua create mode 100644 private_dot_config/nvim/lua/user/lsp/handlers.lua rename {nvim/.config => private_dot_config}/nvim/lua/user/lsp/init.lua (100%) create mode 100644 private_dot_config/nvim/lua/user/lsp/mason.lua rename {nvim/.config => private_dot_config}/nvim/lua/user/lsp/null-ls.lua (100%) rename {nvim/.config => private_dot_config}/nvim/lua/user/lsp/settings/pyright.lua (100%) create mode 100644 private_dot_config/nvim/lua/user/lualine.lua create mode 100644 private_dot_config/nvim/lua/user/nvim-tree.lua rename {nvim/.config => private_dot_config}/nvim/lua/user/options.lua (100%) create mode 100644 private_dot_config/nvim/lua/user/plugins.lua create mode 100644 private_dot_config/nvim/lua/user/telescope.lua create mode 100644 private_dot_config/nvim/lua/user/toggleterm.lua create mode 100644 private_dot_config/nvim/lua/user/treesitter.lua create mode 100644 private_dot_config/nvim/lua/user/which-key.lua rename {karabiner/assets/complex_modifications => private_dot_config/private_karabiner/private_assets/private_complex_modifications}/1597572871.json (100%) rename {karabiner/assets/complex_modifications => private_dot_config/private_karabiner/private_assets/private_complex_modifications}/1597574790.json (100%) rename {karabiner/assets/complex_modifications => private_dot_config/private_karabiner/private_assets/private_complex_modifications}/1597576542.json (100%) rename {karabiner/assets/complex_modifications => private_dot_config/private_karabiner/private_assets/private_complex_modifications}/1655107459.json (100%) create mode 100644 private_dot_config/private_karabiner/private_karabiner.json rename {fish => stow-legacy/fish}/.config/fish/config.fish (100%) rename {fish => stow-legacy/fish}/.config/fish/fish_variables (100%) rename {fish => stow-legacy/fish}/.config/fish/functions/fish_prompt.fish (100%) rename {fish => stow-legacy/fish}/.config/fish/functions/fish_user_key_bindings.fish (100%) rename {fish => stow-legacy/fish}/.config/fish/themes/Catppuccin Frappe.theme (100%) rename {fish => stow-legacy/fish}/.config/fish/themes/Catppuccin Latte.theme (100%) rename {fish => stow-legacy/fish}/.config/fish/themes/Catppuccin Macchiato.theme (100%) rename {fish => stow-legacy/fish}/.config/fish/themes/Catppuccin Mocha.theme (100%) rename {git => stow-legacy/git}/.gitconfig (100%) create mode 100644 stow-legacy/karabiner/assets/complex_modifications/1597572871.json create mode 100644 stow-legacy/karabiner/assets/complex_modifications/1597574790.json create mode 100644 stow-legacy/karabiner/assets/complex_modifications/1597576542.json create mode 100644 stow-legacy/karabiner/assets/complex_modifications/1655107459.json rename {karabiner => stow-legacy/karabiner}/karabiner.json (100%) rename {kitty => stow-legacy/kitty}/.config/kitty/kitty.conf (100%) rename {nvim => stow-legacy/nvim}/.config/nvim/init.lua (100%) rename {nvim => stow-legacy/nvim}/.config/nvim/lua/user/alpha.lua (100%) rename {nvim => stow-legacy/nvim}/.config/nvim/lua/user/autocommands.lua (100%) create mode 100644 stow-legacy/nvim/.config/nvim/lua/user/autopairs.lua create mode 100644 stow-legacy/nvim/.config/nvim/lua/user/bufferline.lua rename {nvim => stow-legacy/nvim}/.config/nvim/lua/user/cmp.lua (100%) create mode 100644 stow-legacy/nvim/.config/nvim/lua/user/colorscheme.lua create mode 100644 stow-legacy/nvim/.config/nvim/lua/user/comment.lua rename {nvim => stow-legacy/nvim}/.config/nvim/lua/user/gitsigns.lua (100%) rename {nvim => stow-legacy/nvim}/.config/nvim/lua/user/keymaps.lua (100%) rename {nvim => stow-legacy/nvim}/.config/nvim/lua/user/lsp/handlers.lua (100%) create mode 100644 stow-legacy/nvim/.config/nvim/lua/user/lsp/init.lua rename {nvim => stow-legacy/nvim}/.config/nvim/lua/user/lsp/mason.lua (100%) create mode 100644 stow-legacy/nvim/.config/nvim/lua/user/lsp/null-ls.lua create mode 100644 stow-legacy/nvim/.config/nvim/lua/user/lsp/settings/pyright.lua rename {nvim => stow-legacy/nvim}/.config/nvim/lua/user/lualine.lua (100%) rename {nvim => stow-legacy/nvim}/.config/nvim/lua/user/nvim-dap.lua (100%) rename {nvim => stow-legacy/nvim}/.config/nvim/lua/user/nvim-dapui.lua (100%) rename {nvim => stow-legacy/nvim}/.config/nvim/lua/user/nvim-tree.lua (100%) create mode 100644 stow-legacy/nvim/.config/nvim/lua/user/options.lua rename {nvim => stow-legacy/nvim}/.config/nvim/lua/user/plugins.lua (100%) rename {nvim => stow-legacy/nvim}/.config/nvim/lua/user/telescope.lua (100%) rename {nvim => stow-legacy/nvim}/.config/nvim/lua/user/toggleterm.lua (100%) rename {nvim => stow-legacy/nvim}/.config/nvim/lua/user/treesitter.lua (100%) rename {nvim => stow-legacy/nvim}/.config/nvim/lua/user/which-key.lua (100%) rename {nvim => stow-legacy/nvim}/.config/nvim/lua/user/xcodebuild.lua (100%) rename {vim => stow-legacy/vim}/.vimrc (100%) diff --git a/.chezmoiignore b/.chezmoiignore new file mode 100644 index 0000000..ab7ebaf --- /dev/null +++ b/.chezmoiignore @@ -0,0 +1,4 @@ +README.md +.gitignore +.DS_Store +stow-legacy/** diff --git a/README.md b/README.md index ba68af0..9fff972 100644 --- a/README.md +++ b/README.md @@ -1 +1,27 @@

~/.dotfiles

+ +This branch uses [chezmoi](https://www.chezmoi.io/) as the dotfile manager. + +## Usage + +Preview changes: + +```sh +chezmoi --source "$PWD" diff +``` + +Apply changes: + +```sh +chezmoi --source "$PWD" apply +``` + +## Layout + +- `dot_gitconfig` -> `~/.gitconfig` +- `private_dot_config/` -> `~/.config/` +- `stow-legacy/` keeps the previous GNU Stow package layout for review. + +Generated and local-only files are intentionally not managed, including Neovim +compiled packer output, `.DS_Store`, Kitty backups, and Karabiner automatic +backups. diff --git a/dot_gitconfig b/dot_gitconfig new file mode 100644 index 0000000..e7b5581 --- /dev/null +++ b/dot_gitconfig @@ -0,0 +1,31 @@ +[filter "lfs"] + clean = git-lfs clean -- %f + smudge = git-lfs smudge -- %f + process = git-lfs filter-process + required = true +[user] + name = Doan Thieu + email = thieurom@gmail.com +[core] + editor = nvim + pager = delta +[init] + defaultBranch = main +[alias] + st = status + ch = checkout + chb = checkout -b + aa = add --all + cm = commit + fe = fetch -p + di = diff +[interactive] + diffFilter = delta --color-only +[merge] + conflictstyle = diff3 +[diff] + colorMoved = default +[delta] + navigate = true # use n and N to move between diff sections + light = false # set to true if you're in a terminal w/ a light background color (e.g. the default macOS terminal) + side-by-side = true diff --git a/nvim/.config/nvim/plugin/packer_compiled.lua b/nvim/.config/nvim/plugin/packer_compiled.lua deleted file mode 100644 index 396270c..0000000 --- a/nvim/.config/nvim/plugin/packer_compiled.lua +++ /dev/null @@ -1,234 +0,0 @@ --- Automatically generated packer.nvim plugin loader code - -if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then - vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"') - return -end - -vim.api.nvim_command('packadd packer.nvim') - -local no_errors, error_msg = pcall(function() - -_G._packer = _G._packer or {} -_G._packer.inside_compile = true - -local time -local profile_info -local should_profile = false -if should_profile then - local hrtime = vim.loop.hrtime - profile_info = {} - time = function(chunk, start) - if start then - profile_info[chunk] = hrtime() - else - profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6 - end - end -else - time = function(chunk, start) end -end - -local function save_profiles(threshold) - local sorted_times = {} - for chunk_name, time_taken in pairs(profile_info) do - sorted_times[#sorted_times + 1] = {chunk_name, time_taken} - end - table.sort(sorted_times, function(a, b) return a[2] > b[2] end) - local results = {} - for i, elem in ipairs(sorted_times) do - if not threshold or threshold and elem[2] > threshold then - results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms' - end - end - if threshold then - table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)') - end - - _G._packer.profile_output = results -end - -time([[Luarocks path setup]], true) -local package_path_str = "/Users/doanthieu/.cache/nvim/packer_hererocks/2.1.1692716794/share/lua/5.1/?.lua;/Users/doanthieu/.cache/nvim/packer_hererocks/2.1.1692716794/share/lua/5.1/?/init.lua;/Users/doanthieu/.cache/nvim/packer_hererocks/2.1.1692716794/lib/luarocks/rocks-5.1/?.lua;/Users/doanthieu/.cache/nvim/packer_hererocks/2.1.1692716794/lib/luarocks/rocks-5.1/?/init.lua" -local install_cpath_pattern = "/Users/doanthieu/.cache/nvim/packer_hererocks/2.1.1692716794/lib/lua/5.1/?.so" -if not string.find(package.path, package_path_str, 1, true) then - package.path = package.path .. ';' .. package_path_str -end - -if not string.find(package.cpath, install_cpath_pattern, 1, true) then - package.cpath = package.cpath .. ';' .. install_cpath_pattern -end - -time([[Luarocks path setup]], false) -time([[try_loadstring definition]], true) -local function try_loadstring(s, component, name) - local success, result = pcall(loadstring(s), name, _G.packer_plugins[name]) - if not success then - vim.schedule(function() - vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {}) - end) - end - return result -end - -time([[try_loadstring definition]], false) -time([[Defining packer_plugins]], true) -_G.packer_plugins = { - ["Comment.nvim"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/Comment.nvim", - url = "https://github.com/numToStr/Comment.nvim" - }, - LuaSnip = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/LuaSnip", - url = "https://github.com/L3MON4D3/LuaSnip" - }, - ["bufferline.nvim"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/bufferline.nvim", - url = "https://github.com/akinsho/bufferline.nvim" - }, - catppuccin = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/catppuccin", - url = "https://github.com/catppuccin/nvim" - }, - ["cmp-buffer"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/cmp-buffer", - url = "https://github.com/hrsh7th/cmp-buffer" - }, - ["cmp-nvim-lsp"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp", - url = "https://github.com/hrsh7th/cmp-nvim-lsp" - }, - ["cmp-path"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/cmp-path", - url = "https://github.com/hrsh7th/cmp-path" - }, - cmp_luasnip = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/cmp_luasnip", - url = "https://github.com/saadparwaiz1/cmp_luasnip" - }, - ["everforest-nvim"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/everforest-nvim", - url = "https://github.com/neanias/everforest-nvim" - }, - ["friendly-snippets"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/friendly-snippets", - url = "https://github.com/rafamadriz/friendly-snippets" - }, - ["gitsigns.nvim"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/gitsigns.nvim", - url = "https://github.com/lewis6991/gitsigns.nvim" - }, - ["lualine.nvim"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/lualine.nvim", - url = "https://github.com/nvim-lualine/lualine.nvim" - }, - ["mason-lspconfig.nvim"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/mason-lspconfig.nvim", - url = "https://github.com/williamboman/mason-lspconfig.nvim" - }, - ["mason.nvim"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/mason.nvim", - url = "https://github.com/williamboman/mason.nvim" - }, - ["nightfox.nvim"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/nightfox.nvim", - url = "https://github.com/EdenEast/nightfox.nvim" - }, - ["null-ls.nvim"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/null-ls.nvim", - url = "https://github.com/jose-elias-alvarez/null-ls.nvim" - }, - ["nvim-autopairs"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/nvim-autopairs", - url = "https://github.com/windwp/nvim-autopairs" - }, - ["nvim-cmp"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/nvim-cmp", - url = "https://github.com/hrsh7th/nvim-cmp" - }, - ["nvim-lspconfig"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/nvim-lspconfig", - url = "https://github.com/neovim/nvim-lspconfig" - }, - ["nvim-tree.lua"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/nvim-tree.lua", - url = "https://github.com/nvim-tree/nvim-tree.lua" - }, - ["nvim-treesitter"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/nvim-treesitter", - url = "https://github.com/nvim-treesitter/nvim-treesitter" - }, - ["nvim-web-devicons"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/nvim-web-devicons", - url = "https://github.com/nvim-tree/nvim-web-devicons" - }, - ["packer.nvim"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/packer.nvim", - url = "https://github.com/wbthomason/packer.nvim" - }, - ["plenary.nvim"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/plenary.nvim", - url = "https://github.com/nvim-lua/plenary.nvim" - }, - ["telescope.nvim"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/telescope.nvim", - url = "https://github.com/nvim-telescope/telescope.nvim" - }, - ["vim-bbye"] = { - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/vim-bbye", - url = "https://github.com/moll/vim-bbye" - }, - ["which-key.nvim"] = { - config = { "\27LJ\2\nD\0\0\2\0\4\0\t6\0\0\0009\0\1\0+\1\2\0=\1\2\0006\0\0\0009\0\1\0)\1,\1=\1\3\0K\0\1\0\15timeoutlen\ftimeout\6o\bvim\0" }, - loaded = true, - path = "/Users/doanthieu/.local/share/nvim/site/pack/packer/start/which-key.nvim", - url = "https://github.com/folke/which-key.nvim" - } -} - -time([[Defining packer_plugins]], false) --- Config for: which-key.nvim -time([[Config for which-key.nvim]], true) -try_loadstring("\27LJ\2\nD\0\0\2\0\4\0\t6\0\0\0009\0\1\0+\1\2\0=\1\2\0006\0\0\0009\0\1\0)\1,\1=\1\3\0K\0\1\0\15timeoutlen\ftimeout\6o\bvim\0", "config", "which-key.nvim") -time([[Config for which-key.nvim]], false) - -_G._packer.inside_compile = false -if _G._packer.needs_bufread == true then - vim.cmd("doautocmd BufRead") -end -_G._packer.needs_bufread = false - -if should_profile then save_profiles() end - -end) - -if not no_errors then - error_msg = error_msg:gsub('"', '\\"') - vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None') -end diff --git a/private_dot_config/kitty/Nightfox.conf b/private_dot_config/kitty/Nightfox.conf new file mode 100644 index 0000000..6e9772d --- /dev/null +++ b/private_dot_config/kitty/Nightfox.conf @@ -0,0 +1,52 @@ +# vim:ft=kitty + +## name: Nightfox +## author: EdenEast +## license: MIT +## upstream: https://github.com/EdenEast/nightfox.nvim/blob/main/extra/nightfox/nightfox_kitty.conf + +background #192330 +foreground #cdcecf +selection_background #2b3b51 +selection_foreground #cdcecf +url_color #81b29a + +# Cursor +# uncomment for reverse background +# cursor none +cursor #cdcecf + +# Border +active_border_color #719cd6 +inactive_border_color #39506d +bell_border_color #f4a261 + +# Tabs +active_tab_background #719cd6 +active_tab_foreground #131a24 +inactive_tab_background #2b3b51 +inactive_tab_foreground #738091 + +# normal +color0 #393b44 +color1 #c94f6d +color2 #81b29a +color3 #dbc074 +color4 #719cd6 +color5 #9d79d6 +color6 #63cdcf +color7 #dfdfe0 + +# bright +color8 #575860 +color9 #d16983 +color10 #8ebaa4 +color11 #e0c989 +color12 #86abdc +color13 #baa1e2 +color14 #7ad5d6 +color15 #e4e4e5 + +# extended colors +color16 #f4a261 +color17 #d67ad2 diff --git a/private_dot_config/kitty/current-theme.conf b/private_dot_config/kitty/current-theme.conf new file mode 100644 index 0000000..dda305c --- /dev/null +++ b/private_dot_config/kitty/current-theme.conf @@ -0,0 +1,80 @@ +# vim:ft=kitty + +## name: Catppuccin-Mocha +## author: Pocco81 (https://github.com/Pocco81) +## license: MIT +## upstream: https://github.com/catppuccin/kitty/blob/main/themes/mocha.conf +## blurb: Soothing pastel theme for the high-spirited! + + + +# The basic colors +foreground #CDD6F4 +background #1E1E2E +selection_foreground #1E1E2E +selection_background #F5E0DC + +# Cursor colors +cursor #F5E0DC +cursor_text_color #1E1E2E + +# URL underline color when hovering with mouse +url_color #F5E0DC + +# Kitty window border colors +active_border_color #B4BEFE +inactive_border_color #6C7086 +bell_border_color #F9E2AF + +# OS Window titlebar colors +wayland_titlebar_color system +macos_titlebar_color system + +# Tab bar colors +active_tab_foreground #11111B +active_tab_background #CBA6F7 +inactive_tab_foreground #CDD6F4 +inactive_tab_background #181825 +tab_bar_background #11111B + +# Colors for marks (marked text in the terminal) +mark1_foreground #1E1E2E +mark1_background #B4BEFE +mark2_foreground #1E1E2E +mark2_background #CBA6F7 +mark3_foreground #1E1E2E +mark3_background #74C7EC + +# The 16 terminal colors + +# black +color0 #45475A +color8 #585B70 + +# red +color1 #F38BA8 +color9 #F38BA8 + +# green +color2 #A6E3A1 +color10 #A6E3A1 + +# yellow +color3 #F9E2AF +color11 #F9E2AF + +# blue +color4 #89B4FA +color12 #89B4FA + +# magenta +color5 #F5C2E7 +color13 #F5C2E7 + +# cyan +color6 #94E2D5 +color14 #94E2D5 + +# white +color7 #BAC2DE +color15 #A6ADC8 diff --git a/private_dot_config/kitty/kitty.conf b/private_dot_config/kitty/kitty.conf new file mode 100644 index 0000000..9cb9ccd --- /dev/null +++ b/private_dot_config/kitty/kitty.conf @@ -0,0 +1,1301 @@ +# vim:fileencoding=utf-8:ft=conf:foldmethod=marker + +# shell integration +shell_integration no-cursor + +#: Fonts {{{ + +#: kitty has very powerful font management. You can configure +#: individual font faces and even specify special fonts for particular +#: characters. + +font_family SourceCodePro-Medium +bold_font auto +italic_font auto +bold_italic_font auto + +#: You can specify different fonts for the bold/italic/bold-italic +#: variants. To get a full list of supported fonts use the `kitty +#: list-fonts` command. By default they are derived automatically, by +#: the OSes font system. Setting them manually is useful for font +#: families that have many weight variants like Book, Medium, Thick, +#: etc. For example:: + +#: font_family Operator Mono Book +#: bold_font Operator Mono Medium +#: italic_font Operator Mono Book Italic +#: bold_italic_font Operator Mono Medium Italic + +font_size 20.0 + +#: Font size (in pts) + +# force_ltr no + +#: kitty does not support BIDI (bidirectional text), however, for RTL +#: scripts, words are automatically displayed in RTL. That is to say, +#: in an RTL script, the words "HELLO WORLD" display in kitty as +#: "WORLD HELLO", and if you try to select a substring of an RTL- +#: shaped string, you will get the character that would be there had +#: the the string been LTR. For example, assuming the Hebrew word +#: ירושלים, selecting the character that on the screen appears to be ם +#: actually writes into the selection buffer the character י. + +#: kitty's default behavior is useful in conjunction with a filter to +#: reverse the word order, however, if you wish to manipulate RTL +#: glyphs, it can be very challenging to work with, so this option is +#: provided to turn it off. Furthermore, this option can be used with +#: the command line program GNU FriBidi +#: to get BIDI +#: support, because it will force kitty to always treat the text as +#: LTR, which FriBidi expects for terminals. + +adjust_line_height 110% +# adjust_column_width 0 + +#: Change the size of each character cell kitty renders. You can use +#: either numbers, which are interpreted as pixels or percentages +#: (number followed by %), which are interpreted as percentages of the +#: unmodified values. You can use negative pixels or percentages less +#: than 100% to reduce sizes (but this might cause rendering +#: artifacts). + +# symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols + +#: Map the specified unicode codepoints to a particular font. Useful +#: if you need special rendering for some symbols, such as for +#: Powerline. Avoids the need for patched fonts. Each unicode code +#: point is specified in the form U+. You +#: can specify multiple code points, separated by commas and ranges +#: separated by hyphens. symbol_map itself can be specified multiple +#: times. Syntax is:: + +#: symbol_map codepoints Font Family Name + +# disable_ligatures never + +#: Choose how you want to handle multi-character ligatures. The +#: default is to always render them. You can tell kitty to not render +#: them when the cursor is over them by using cursor to make editing +#: easier, or have kitty never render them at all by using always, if +#: you don't like them. The ligature strategy can be set per-window +#: either using the kitty remote control facility or by defining +#: shortcuts for it in kitty.conf, for example:: + +#: map alt+1 disable_ligatures_in active always +#: map alt+2 disable_ligatures_in all never +#: map alt+3 disable_ligatures_in tab cursor + +#: Note that this refers to programming ligatures, typically +#: implemented using the calt OpenType feature. For disabling general +#: ligatures, use the font_features setting. + +# font_features none + +#: Choose exactly which OpenType features to enable or disable. This +#: is useful as some fonts might have features worthwhile in a +#: terminal. For example, Fira Code Retina includes a discretionary +#: feature, zero, which in that font changes the appearance of the +#: zero (0), to make it more easily distinguishable from Ø. Fira Code +#: Retina also includes other discretionary features known as +#: Stylistic Sets which have the tags ss01 through ss20. + +#: Note that this code is indexed by PostScript name, and not the font +#: family. This allows you to define very precise feature settings; +#: e.g. you can disable a feature in the italic font but not in the +#: regular font. + +#: To get the PostScript name for a font, use kitty + list-fonts +#: --psnames:: + +#: $ kitty + list-fonts --psnames | grep Fira +#: Fira Code +#: Fira Code Bold (FiraCode-Bold) +#: Fira Code Light (FiraCode-Light) +#: Fira Code Medium (FiraCode-Medium) +#: Fira Code Regular (FiraCode-Regular) +#: Fira Code Retina (FiraCode-Retina) + +#: The part in brackets is the PostScript name. + +#: Enable alternate zero and oldstyle numerals:: + +#: font_features FiraCode-Retina +zero +onum + +#: Enable only alternate zero:: + +#: font_features FiraCode-Retina +zero + +#: Disable the normal ligatures, but keep the calt feature which (in +#: this font) breaks up monotony:: + +#: font_features TT2020StyleB-Regular -liga +calt + +#: In conjunction with force_ltr, you may want to disable Arabic +#: shaping entirely, and only look at their isolated forms if they +#: show up in a document. You can do this with e.g.:: + +#: font_features UnifontMedium +isol -medi -fina -init + +# box_drawing_scale 0.001, 1, 1.5, 2 + +#: Change the sizes of the lines used for the box drawing unicode +#: characters These values are in pts. They will be scaled by the +#: monitor DPI to arrive at a pixel value. There must be four values +#: corresponding to thin, normal, thick, and very thick lines. + +#: }}} + +#: Cursor customization {{{ + +# cursor #81a1c1 + +# Url corsor +# url_color #0087bd + +#: Default cursor color + +# cursor_text_color #111111 + +#: Choose the color of text under the cursor. If you want it rendered +#: with the background color of the cell underneath instead, use the +#: special keyword: background + +cursor_shape block + +#: The cursor shape can be one of (block, beam, underline) + +# cursor_beam_thickness 1.5 + +#: Defines the thickness of the beam cursor (in pts) + +# cursor_underline_thickness 2.0 + +#: Defines the thickness of the underline cursor (in pts) + +# cursor_blink_interval -1 + +#: The interval (in seconds) at which to blink the cursor. Set to zero +#: to disable blinking. Negative values mean use system default. Note +#: that numbers smaller than repaint_delay will be limited to +#: repaint_delay. + +# cursor_stop_blinking_after 15.0 + +#: Stop blinking cursor after the specified number of seconds of +#: keyboard inactivity. Set to zero to never stop blinking. + +#: }}} + +#: Scrollback {{{ + +# scrollback_lines 2000 + +#: Number of lines of history to keep in memory for scrolling back. +#: Memory is allocated on demand. Negative numbers are (effectively) +#: infinite scrollback. Note that using very large scrollback is not +#: recommended as it can slow down resizing of the terminal and also +#: use large amounts of RAM. + +# scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER + +#: Program with which to view scrollback in a new window. The +#: scrollback buffer is passed as STDIN to this program. If you change +#: it, make sure the program you use can handle ANSI escape sequences +#: for colors and text formatting. INPUT_LINE_NUMBER in the command +#: line above will be replaced by an integer representing which line +#: should be at the top of the screen. Similarly CURSOR_LINE and +#: CURSOR_COLUMN will be replaced by the current cursor position. + +# scrollback_pager_history_size 0 + +#: Separate scrollback history size, used only for browsing the +#: scrollback buffer (in MB). This separate buffer is not available +#: for interactive scrolling but will be piped to the pager program +#: when viewing scrollback buffer in a separate window. The current +#: implementation stores one character in 4 bytes, so approximatively +#: 2500 lines per megabyte at 100 chars per line. A value of zero or +#: less disables this feature. The maximum allowed size is 4GB. + +# wheel_scroll_multiplier 5.0 + +#: Modify the amount scrolled by the mouse wheel. Note this is only +#: used for low precision scrolling devices, not for high precision +#: scrolling on platforms such as macOS and Wayland. Use negative +#: numbers to change scroll direction. + +# touch_scroll_multiplier 1.0 + +#: Modify the amount scrolled by a touchpad. Note this is only used +#: for high precision scrolling devices on platforms such as macOS and +#: Wayland. Use negative numbers to change scroll direction. + +#: }}} + +#: Mouse {{{ + +# mouse_hide_wait 0.0 + +#: Hide mouse cursor after the specified number of seconds of the +#: mouse not being used. Set to zero to disable mouse cursor hiding. +#: Set to a negative value to hide the mouse cursor immediately when +#: typing text. Disabled by default on macOS as getting it to work +#: robustly with the ever-changing sea of bugs that is Cocoa is too +#: much effort. + +# url_color #0087bd +# url_style curly + +#: The color and style for highlighting URLs on mouse-over. url_style +#: can be one of: none, single, double, curly + +# open_url_modifiers kitty_mod + +#: The modifier keys to press when clicking with the mouse on URLs to +#: open the URL + +# open_url_with default + +#: The program with which to open URLs that are clicked on. The +#: special value default means to use the operating system's default +#: URL handler. + +# url_prefixes http https file ftp + +#: The set of URL prefixes to look for when detecting a URL under the +#: mouse cursor. + +# copy_on_select no + +#: Copy to clipboard or a private buffer on select. With this set to +#: clipboard, simply selecting text with the mouse will cause the text +#: to be copied to clipboard. Useful on platforms such as macOS that +#: do not have the concept of primary selections. You can instead +#: specify a name such as a1 to copy to a private kitty buffer +#: instead. Map a shortcut with the paste_from_buffer action to paste +#: from this private buffer. For example:: + +#: map cmd+shift+v paste_from_buffer a1 + +#: Note that copying to the clipboard is a security risk, as all +#: programs, including websites open in your browser can read the +#: contents of the system clipboard. + +# strip_trailing_spaces never + +#: Remove spaces at the end of lines when copying to clipboard. A +#: value of smart will do it when using normal selections, but not +#: rectangle selections. always will always do it. + +# rectangle_select_modifiers ctrl+alt + +#: The modifiers to use rectangular selection (i.e. to select text in +#: a rectangular block with the mouse) + +# terminal_select_modifiers shift + +#: The modifiers to override mouse selection even when a terminal +#: application has grabbed the mouse + +# select_by_word_characters @-./_~?&=%+# + +#: Characters considered part of a word when double clicking. In +#: addition to these characters any character that is marked as an +#: alphanumeric character in the unicode database will be matched. + +# click_interval -1.0 + +#: The interval between successive clicks to detect double/triple +#: clicks (in seconds). Negative numbers will use the system default +#: instead, if available, or fallback to 0.5. + +# focus_follows_mouse no + +#: Set the active window to the window under the mouse when moving the +#: mouse around + +# pointer_shape_when_grabbed arrow + +#: The shape of the mouse pointer when the program running in the +#: terminal grabs the mouse. Valid values are: arrow, beam and hand + +#: }}} + +#: Performance tuning {{{ + +# repaint_delay 10 + +#: Delay (in milliseconds) between screen updates. Decreasing it, +#: increases frames-per-second (FPS) at the cost of more CPU usage. +#: The default value yields ~100 FPS which is more than sufficient for +#: most uses. Note that to actually achieve 100 FPS you have to either +#: set sync_to_monitor to no or use a monitor with a high refresh +#: rate. Also, to minimize latency when there is pending input to be +#: processed, repaint_delay is ignored. + +# input_delay 3 + +#: Delay (in milliseconds) before input from the program running in +#: the terminal is processed. Note that decreasing it will increase +#: responsiveness, but also increase CPU usage and might cause flicker +#: in full screen programs that redraw the entire screen on each loop, +#: because kitty is so fast that partial screen updates will be drawn. + +# sync_to_monitor yes + +#: Sync screen updates to the refresh rate of the monitor. This +#: prevents tearing (https://en.wikipedia.org/wiki/Screen_tearing) +#: when scrolling. However, it limits the rendering speed to the +#: refresh rate of your monitor. With a very high speed mouse/high +#: keyboard repeat rate, you may notice some slight input latency. If +#: so, set this to no. + +#: }}} + +#: Terminal bell {{{ + +# enable_audio_bell yes + +#: Enable/disable the audio bell. Useful in environments that require +#: silence. + +# visual_bell_duration 0.0 + +#: Visual bell duration. Flash the screen when a bell occurs for the +#: specified number of seconds. Set to zero to disable. + +# window_alert_on_bell yes + +#: Request window attention on bell. Makes the dock icon bounce on +#: macOS or the taskbar flash on linux. + +# bell_on_tab yes + +#: Show a bell symbol on the tab if a bell occurs in one of the +#: windows in the tab and the window is not the currently focused +#: window + +# command_on_bell none + +#: Program to run when a bell occurs. + +#: }}} + +#: Window layout {{{ + +# remember_window_size yes +# initial_window_width 640 +# initial_window_height 400 + +#: If enabled, the window size will be remembered so that new +#: instances of kitty will have the same size as the previous +#: instance. If disabled, the window will initially have size +#: configured by initial_window_width/height, in pixels. You can use a +#: suffix of "c" on the width/height values to have them interpreted +#: as number of cells instead of pixels. + +enabled_layouts * + +#: The enabled window layouts. A comma separated list of layout names. +#: The special value all means all layouts. The first listed layout +#: will be used as the startup layout. Default configuration is all +#: layouts in alphabetical order. For a list of available layouts, see +#: the https://sw.kovidgoyal.net/kitty/index.html#layouts. + +# window_resize_step_cells 2 +# window_resize_step_lines 2 + +#: The step size (in units of cell width/cell height) to use when +#: resizing windows. The cells value is used for horizontal resizing +#: and the lines value for vertical resizing. + +window_border_width 1.0 + +#: The width (in pts) of window borders. Will be rounded to the +#: nearest number of pixels based on screen resolution. Note that +#: borders are displayed only when more than one window is visible. +#: They are meant to separate multiple windows. + +# draw_minimal_borders yes + +#: Draw only the minimum borders needed. This means that only the +#: minimum needed borders for inactive windows are drawn. That is only +#: the borders that separate the inactive window from a neighbor. Note +#: that setting a non-zero window margin overrides this and causes all +#: borders to be drawn. + +# window_margin_width 0 2 + +#: The window margin (in pts) (blank area outside the border). A +#: single value sets all four sides. Two values set the vertical and +#: horizontal sides. Three values set top, horizontal and bottom. Four +#: values set top, right, bottom and left. + +# single_window_margin_width -1 + +#: The window margin (in pts) to use when only a single window is +#: visible. Negative values will cause the value of +#: window_margin_width to be used instead. A single value sets all +#: four sides. Two values set the vertical and horizontal sides. Three +#: values set top, horizontal and bottom. Four values set top, right, +#: bottom and left. + +window_padding_width 4 + +#: The window padding (in pts) (blank area between the text and the +#: window border). A single value sets all four sides. Two values set +#: the vertical and horizontal sides. Three values set top, horizontal +#: and bottom. Four values set top, right, bottom and left. + +# placement_strategy center + +#: When the window size is not an exact multiple of the cell size, the +#: cell area of the terminal window will have some extra padding on +#: the sides. You can control how that padding is distributed with +#: this option. Using a value of center means the cell area will be +#: placed centrally. A value of top-left means the padding will be on +#: only the bottom and right edges. +# active_border_color #00ff00 + +#: The color for the border of the active window. Set this to none to +#: not draw borders around the active window. +# inactive_border_color #cccccc + +#: The color for the border of inactive windows + +# bell_border_color #ff5a00 + +#: The color for the border of inactive windows in which a bell has +#: occurred + +inactive_text_alpha 0.4 + +#: Fade the text in inactive windows by the specified amount (a number +#: between zero and one, with zero being fully faded). + +# hide_window_decorations no + +#: Hide the window decorations (title-bar and window borders) with +#: yes. On macOS, titlebar-only can be used to only hide the titlebar. +#: Whether this works and exactly what effect it has depends on the +#: window manager/operating system. + +# resize_debounce_time 0.1 + +#: The time (in seconds) to wait before redrawing the screen when a +#: resize event is received. On platforms such as macOS, where the +#: operating system sends events corresponding to the start and end of +#: a resize, this number is ignored. + +# resize_draw_strategy static + +#: Choose how kitty draws a window while a resize is in progress. A +#: value of static means draw the current window contents, mostly +#: unchanged. A value of scale means draw the current window contents +#: scaled. A value of blank means draw a blank window. A value of size +#: means show the window size in cells. + +# resize_in_steps no + +#: Resize the OS window in steps as large as the cells, instead of +#: with the usual pixel accuracy. Combined with an +#: initial_window_width and initial_window_height in number of cells, +#: this option can be used to keep the margins as small as possible +#: when resizing the OS window. Note that this does not currently work +#: on Wayland. + +# confirm_os_window_close 0 + +#: Ask for confirmation when closing an OS window or a tab that has at +#: least this number of kitty windows in it. A value of zero disables +#: confirmation. This confirmation also applies to requests to quit +#: the entire application (all OS windows, via the quit action). + +#: }}} + +#: Tab bar {{{ + +# tab_bar_edge bottom + +#: Which edge to show the tab bar on, top or bottom + +# tab_bar_margin_width 0.0 + +#: The margin to the left and right of the tab bar (in pts) + +tab_bar_style fade + +#: The tab bar style, can be one of: fade, separator, powerline, or +#: hidden. In the fade style, each tab's edges fade into the +#: background color, in the separator style, tabs are separated by a +#: configurable separator, and the powerline shows the tabs as a +#: continuous line. + +# tab_bar_min_tabs 2 + +#: The minimum number of tabs that must exist before the tab bar is +#: shown + +# tab_switch_strategy previous + +#: The algorithm to use when switching to a tab when the current tab +#: is closed. The default of previous will switch to the last used +#: tab. A value of left will switch to the tab to the left of the +#: closed tab. A value of last will switch to the right-most tab. + +# tab_fade 0.25 0.5 0.75 1 + +#: Control how each tab fades into the background when using fade for +#: the tab_bar_style. Each number is an alpha (between zero and one) +#: that controls how much the corresponding cell fades into the +#: background, with zero being no fade and one being full fade. You +#: can change the number of cells used by adding/removing entries to +#: this list. + +# tab_separator " ┇" + +#: The separator between tabs in the tab bar when using separator as +#: the tab_bar_style. + +# tab_title_template "{title}" + +#: A template to render the tab title. The default just renders the +#: title. If you wish to include the tab-index as well, use something +#: like: {index}: {title}. Useful if you have shortcuts mapped for +#: goto_tab N. In addition you can use {layout_name} for the current +#: layout name and {num_windows} for the number of windows in the tab. +#: Note that formatting is done by Python's string formatting +#: machinery, so you can use, for instance, {layout_name[:2].upper()} +#: to show only the first two letters of the layout name, upper-cased. + +# active_tab_title_template none + +#: Template to use for active tabs, if not specified falls back to +#: tab_title_template. + +# active_tab_foreground #000 +# active_tab_background #eee +# active_tab_font_style bold-italic +# inactive_tab_foreground #444 +# inactive_tab_background #999 +# inactive_tab_font_style normal + +#: Tab bar colors and styles + +# tab_bar_background none + +#: Background color for the tab bar. Defaults to using the terminal +#: background color. + +#: }}} + +#: Color scheme {{{ +# foreground #d8dee9 +# background #2e3440 + +#: The foreground and background colors + +# background_opacity 1.0 + +#: The opacity of the background. A number between 0 and 1, where 1 is +#: opaque and 0 is fully transparent. This will only work if +#: supported by the OS (for instance, when using a compositor under +#: X11). Note that it only sets the background color's opacity in +#: cells that have the same background color as the default terminal +#: background. This is so that things like the status bar in vim, +#: powerline prompts, etc. still look good. But it means that if you +#: use a color theme with a background color in your editor, it will +#: not be rendered as transparent. Instead you should change the +#: default background color in your kitty config and not use a +#: background color in the editor color scheme. Or use the escape +#: codes to set the terminals default colors in a shell script to +#: launch your editor. Be aware that using a value less than 1.0 is a +#: (possibly significant) performance hit. If you want to dynamically +#: change transparency of windows set dynamic_background_opacity to +#: yes (this is off by default as it has a performance cost) + +# background_image none + +#: Path to a background image. Must be in PNG format. + +# background_image_layout tiled + +#: Whether to tile or scale the background image. + +# background_image_linear no + +#: When background image is scaled, whether linear interpolation +#: should be used. + +# dynamic_background_opacity no + +#: Allow changing of the background_opacity dynamically, using either +#: keyboard shortcuts (increase_background_opacity and +#: decrease_background_opacity) or the remote control facility. + +# background_tint 0.0 + +#: How much to tint the background image by the background color. The +#: tint is applied only under the text area, not margin/borders. Makes +#: it easier to read the text. Tinting is done using the current +#: background color for each window. This setting applies only if +#: background_opacity is set and transparent windows are supported or +#: background_image is set. + +# dim_opacity 0.75 + +#: How much to dim text that has the DIM/FAINT attribute set. One +#: means no dimming and zero means fully dimmed (i.e. invisible). +# selection_foreground #000000 + +#: The foreground for text selected with the mouse. A value of none +#: means to leave the color unchanged. +# selection_background #fffacd + +#: The background for text selected with the mouse. + + +#: The 16 terminal colors. There are 8 basic colors, each color has a +#: dull and bright version. You can also set the remaining colors from +#: the 256 color table as color16 to color255. + +#: black +# color0 #3b4252 +# color8 #616e88 + +#: red +# color1 #bf616a +# color9 #bf616a + +#: green +# color2 #a3be8c +# color10 #a3be8c + +#: yellow +# color3 #ebcb8b +# color11 #ebcb8b + +#: blue +# color4 #81a1c1 +# color12 #81a1c1 + +#: magenta +# color5 #b48ead +# color13 #b48ead + +#: cyan +# color6 #88c0d0 +# color14 #8fbcbb + +#: white +# color7 #e5e9f0 +# color15 #eceff4 + +# mark1_foreground black + +#: Color for marks of type 1 + +# mark1_background #98d3cb + +#: Color for marks of type 1 (light steel blue) + +# mark2_foreground black + +#: Color for marks of type 2 + +# mark2_background #f2dcd3 + +#: Color for marks of type 1 (beige) + +# mark3_foreground black + +#: Color for marks of type 3 + +# mark3_background #f274bc + +#: Color for marks of type 1 (violet) + +#: }}} + +#: Advanced {{{ + +# shell . + +#: The shell program to execute. The default value of . means to use +#: whatever shell is set as the default shell for the current user. +#: Note that on macOS if you change this, you might need to add +#: --login to ensure that the shell starts in interactive mode and +#: reads its startup rc files. + +# editor . + +#: The console editor to use when editing the kitty config file or +#: similar tasks. A value of . means to use the environment variables +#: VISUAL and EDITOR in that order. Note that this environment +#: variable has to be set not just in your shell startup scripts but +#: system-wide, otherwise kitty will not see it. + +# close_on_child_death no + +#: Close the window when the child process (shell) exits. If no (the +#: default), the terminal will remain open when the child exits as +#: long as there are still processes outputting to the terminal (for +#: example disowned or backgrounded processes). If yes, the window +#: will close as soon as the child process exits. Note that setting it +#: to yes means that any background processes still using the terminal +#: can fail silently because their stdout/stderr/stdin no longer work. + +# allow_remote_control no + +#: Allow other programs to control kitty. If you turn this on other +#: programs can control all aspects of kitty, including sending text +#: to kitty windows, opening new windows, closing windows, reading the +#: content of windows, etc. Note that this even works over ssh +#: connections. You can chose to either allow any program running +#: within kitty to control it, with yes or only programs that connect +#: to the socket specified with the kitty --listen-on command line +#: option, if you use the value socket-only. The latter is useful if +#: you want to prevent programs running on a remote computer over ssh +#: from controlling kitty. + +# listen_on none + +#: Tell kitty to listen to the specified unix/tcp socket for remote +#: control connections. Note that this will apply to all kitty +#: instances. It can be overridden by the kitty --listen-on command +#: line flag. This option accepts only UNIX sockets, such as +#: unix:${TEMP}/mykitty or (on Linux) unix:@mykitty. Environment +#: variables are expanded. If {kitty_pid} is present then it is +#: replaced by the PID of the kitty process, otherwise the PID of the +#: kitty process is appended to the value, with a hyphen. This option +#: is ignored unless you also set allow_remote_control to enable +#: remote control. See the help for kitty --listen-on for more +#: details. + +# env + +#: Specify environment variables to set in all child processes. Note +#: that environment variables are expanded recursively, so if you +#: use:: + +#: env MYVAR1=a +#: env MYVAR2=${MYVAR1}/${HOME}/b + +#: The value of MYVAR2 will be a//b. + +# update_check_interval 24 + +#: Periodically check if an update to kitty is available. If an update +#: is found a system notification is displayed informing you of the +#: available update. The default is to check every 24 hrs, set to zero +#: to disable. + +# startup_session none + +#: Path to a session file to use for all kitty instances. Can be +#: overridden by using the kitty --session command line option for +#: individual instances. See +#: https://sw.kovidgoyal.net/kitty/index.html#sessions in the kitty +#: documentation for details. Note that relative paths are interpreted +#: with respect to the kitty config directory. Environment variables +#: in the path are expanded. + +# clipboard_control write-clipboard write-primary + +#: Allow programs running in kitty to read and write from the +#: clipboard. You can control exactly which actions are allowed. The +#: set of possible actions is: write-clipboard read-clipboard write- +#: primary read-primary. You can additionally specify no-append to +#: disable kitty's protocol extension for clipboard concatenation. The +#: default is to allow writing to the clipboard and primary selection +#: with concatenation enabled. Note that enabling the read +#: functionality is a security risk as it means that any program, even +#: one running on a remote server via SSH can read your clipboard. + +# term xterm-kitty + +#: The value of the TERM environment variable to set. Changing this +#: can break many terminal programs, only change it if you know what +#: you are doing, not because you read some advice on Stack Overflow +#: to change it. The TERM variable is used by various programs to get +#: information about the capabilities and behavior of the terminal. If +#: you change it, depending on what programs you run, and how +#: different the terminal you are changing it to is, various things +#: from key-presses, to colors, to various advanced features may not +#: work. + +#: }}} + +#: OS specific tweaks {{{ +# macos_titlebar_color #15202b + +#: Change the color of the kitty window's titlebar on macOS. A value +#: of system means to use the default system color, a value of +#: background means to use the background color of the currently +#: active window and finally you can use an arbitrary color, such as +#: #12af59 or red. WARNING: This option works by using a hack, as +#: there is no proper Cocoa API for it. It sets the background color +#: of the entire window and makes the titlebar transparent. As such it +#: is incompatible with background_opacity. If you want to use both, +#: you are probably better off just hiding the titlebar with +#: hide_window_decorations. + +macos_option_as_alt yes + +#: Use the option key as an alt key. With this set to no, kitty will +#: use the macOS native Option+Key = unicode character behavior. This +#: will break any Alt+key keyboard shortcuts in your terminal +#: programs, but you can use the macOS unicode input technique. You +#: can use the values: left, right, or both to use only the left, +#: right or both Option keys as Alt, instead. + +# macos_hide_from_tasks no + +#: Hide the kitty window from running tasks (Option+Tab) on macOS. + +# macos_quit_when_last_window_closed no + +#: Have kitty quit when all the top-level windows are closed. By +#: default, kitty will stay running, even with no open windows, as is +#: the expected behavior on macOS. + +# macos_window_resizable yes + +#: Disable this if you want kitty top-level (OS) windows to not be +#: resizable on macOS. + +# macos_thicken_font 0 + +#: Draw an extra border around the font with the given width, to +#: increase legibility at small font sizes. For example, a value of +#: 0.75 will result in rendering that looks similar to sub-pixel +#: antialiasing at common font sizes. + +# macos_traditional_fullscreen no + +#: Use the traditional full-screen transition, that is faster, but +#: less pretty. + +# macos_show_window_title_in all + +#: Show or hide the window title in the macOS window or menu-bar. A +#: value of window will show the title of the currently active window +#: at the top of the macOS window. A value of menubar will show the +#: title of the currently active window in the macOS menu-bar, making +#: use of otherwise wasted space. all will show the title everywhere +#: and none hides the title in the window and the menu-bar. + +# macos_custom_beam_cursor no + +#: Enable/disable custom mouse cursor for macOS that is easier to see +#: on both light and dark backgrounds. WARNING: this might make your +#: mouse cursor invisible on dual GPU machines. + +# linux_display_server auto + +#: Choose between Wayland and X11 backends. By default, an appropriate +#: backend based on the system state is chosen automatically. Set it +#: to x11 or wayland to force the choice. + +#: }}} + +#: Keyboard shortcuts {{{ + +#: For a list of key names, see: the GLFW key macros +#: . +#: The name to use is the part after the GLFW_KEY_ prefix. For a list +#: of modifier names, see: GLFW mods +#: + +#: On Linux you can also use XKB key names to bind keys that are not +#: supported by GLFW. See XKB keys +#: for a list of key names. The name to use is the part +#: after the XKB_KEY_ prefix. Note that you can only use an XKB key +#: name for keys that are not known as GLFW keys. + +#: Finally, you can use raw system key codes to map keys, again only +#: for keys that are not known as GLFW keys. To see the system key +#: code for a key, start kitty with the kitty --debug-keyboard option. +#: Then kitty will output some debug text for every key event. In that +#: text look for ``native_code`` the value of that becomes the key +#: name in the shortcut. For example: + +#: .. code-block:: none + +#: on_key_input: glfw key: 65 native_code: 0x61 action: PRESS mods: 0x0 text: 'a' + +#: Here, the key name for the A key is 0x61 and you can use it with:: + +#: map ctrl+0x61 something + +#: to map ctrl+a to something. + +#: You can use the special action no_op to unmap a keyboard shortcut +#: that is assigned in the default configuration:: + +#: map kitty_mod+space no_op + +#: You can combine multiple actions to be triggered by a single +#: shortcut, using the syntax below:: + +#: map key combine action1 action2 action3 ... + +#: For example:: + +#: map kitty_mod+e combine : new_window : next_layout + +#: this will create a new window and switch to the next available +#: layout + +#: You can use multi-key shortcuts using the syntax shown below:: + +#: map key1>key2>key3 action + +#: For example:: + +#: map ctrl+f>2 set_font_size 20 + +# kitty_mod ctrl+shift + +#: The value of kitty_mod is used as the modifier for all default +#: shortcuts, you can change it in your kitty.conf to change the +#: modifiers for all the default shortcuts. + +# clear_all_shortcuts no + +#: You can have kitty remove all shortcut definition seen up to this +#: point. Useful, for instance, to remove the default shortcuts. + +# kitten_alias hints hints --hints-offset=0 + +#: You can create aliases for kitten names, this allows overriding the +#: defaults for kitten options and can also be used to shorten +#: repeated mappings of the same kitten with a specific group of +#: options. For example, the above alias changes the default value of +#: kitty +kitten hints --hints-offset to zero for all mappings, +#: including the builtin ones. + +#: Clipboard {{{ + +# map kitty_mod+c copy_to_clipboard + +#: There is also a copy_or_interrupt action that can be optionally +#: mapped to Ctrl+c. It will copy only if there is a selection and +#: send an interrupt otherwise. Similarly, copy_and_clear_or_interrupt +#: will copy and clear the selection or send an interrupt if there is +#: no selection. + +# map cmd+c copy_to_clipboard +# map kitty_mod+v paste_from_clipboard +# map cmd+v paste_from_clipboard +# map kitty_mod+s paste_from_selection +# map shift+insert paste_from_selection +# map kitty_mod+o pass_selection_to_program + +#: You can also pass the contents of the current selection to any +#: program using pass_selection_to_program. By default, the system's +#: open program is used, but you can specify your own, the selection +#: will be passed as a command line argument to the program, for +#: example:: + +#: map kitty_mod+o pass_selection_to_program firefox + +#: You can pass the current selection to a terminal program running in +#: a new kitty window, by using the @selection placeholder:: + +#: map kitty_mod+y new_window less @selection + +#: }}} + +#: Scrolling {{{ + +# map kitty_mod+up scroll_line_up +# map alt+cmd+page_up scroll_line_up +# map cmd+up scroll_line_up +# map kitty_mod+k scroll_line_up +# map kitty_mod+down scroll_line_down +# map kitty_mod+j scroll_line_down +# map alt+cmd+page_down scroll_line_down +# map cmd+down scroll_line_down +# map kitty_mod+page_up scroll_page_up +# map cmd+page_up scroll_page_up +# map kitty_mod+page_down scroll_page_down +# map cmd+page_down scroll_page_down +# map kitty_mod+home scroll_home +# map cmd+home scroll_home +# map kitty_mod+end scroll_end +# map cmd+end scroll_end +# map kitty_mod+h show_scrollback + +#: You can pipe the contents of the current screen + history buffer as +#: STDIN to an arbitrary program using the ``launch`` function. For +#: example, the following opens the scrollback buffer in less in an +#: overlay window:: + +#: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R + +#: For more details on piping screen and buffer contents to external +#: programs, see launch. + +#: }}} + +#: Window management {{{ + +# map kitty_mod+enter new_window + +#: You can open a new window running an arbitrary program, for +#: example:: + +#: map kitty_mod+y launch mutt + +#: You can open a new window with the current working directory set to +#: the working directory of the current window using:: + +map ctrl+shift+enter launch --cwd=current + +#: You can open a new window that is allowed to control kitty via the +#: kitty remote control facility by prefixing the command line with @. +#: Any programs running in that window will be allowed to control +#: kitty. For example:: + +#: map ctrl+enter launch --allow-remote-control some_program + +#: You can open a new window next to the currently active window or as +#: the first window, with:: + +#: map ctrl+n launch --location=neighbor some_program +#: map ctrl+f launch --location=first some_program + +#: For more details, see launch. + +# map cmd+enter new_window +# map kitty_mod+n new_os_window + +#: Works like new_window above, except that it opens a top level OS +#: kitty window. In particular you can use new_os_window_with_cwd to +#: open a window with the current working directory. + +# map cmd+n new_os_window +# map kitty_mod+w close_window +# map shift+cmd+d close_window +# map kitty_mod+] next_window +# map kitty_mod+[ previous_window +# map kitty_mod+f move_window_forward +# map kitty_mod+b move_window_backward +# map kitty_mod+` move_window_to_top +# map kitty_mod+r start_resizing_window +# map cmd+r start_resizing_window +# map kitty_mod+1 first_window +# map cmd+1 first_window +# map kitty_mod+2 second_window +# map cmd+2 second_window +# map kitty_mod+3 third_window +# map cmd+3 third_window +# map kitty_mod+4 fourth_window +# map cmd+4 fourth_window +# map kitty_mod+5 fifth_window +# map cmd+5 fifth_window +# map kitty_mod+6 sixth_window +# map cmd+6 sixth_window +# map kitty_mod+7 seventh_window +# map cmd+7 seventh_window +# map kitty_mod+8 eighth_window +# map cmd+8 eighth_window +# map kitty_mod+9 ninth_window +# map cmd+9 ninth_window +# map kitty_mod+0 tenth_window +#: }}} + +#: Tab management {{{ + +# map kitty_mod+right next_tab +# map ctrl+tab next_tab +# map shift+cmd+] next_tab +# map kitty_mod+left previous_tab +# map shift+ctrl+tab previous_tab +# map shift+cmd+[ previous_tab +# map kitty_mod+t new_tab +# map cmd+t new_tab +# map kitty_mod+q close_tab +# map cmd+w close_tab +# map shift+cmd+w close_os_window +# map kitty_mod+. move_tab_forward +# map kitty_mod+, move_tab_backward +# map kitty_mod+alt+t set_tab_title +# map shift+cmd+i set_tab_title + +#: You can also create shortcuts to go to specific tabs, with 1 being +#: the first tab, 2 the second tab and -1 being the previously active +#: tab, and any number larger than the last tab being the last tab:: + +#: map ctrl+alt+1 goto_tab 1 +#: map ctrl+alt+2 goto_tab 2 + +#: Just as with new_window above, you can also pass the name of +#: arbitrary commands to run when using new_tab and use +#: new_tab_with_cwd. Finally, if you want the new tab to open next to +#: the current tab rather than at the end of the tabs list, use:: + +#: map ctrl+t new_tab !neighbor [optional cmd to run] +#: }}} + +#: Layout management {{{ + +# map kitty_mod+l next_layout +map kitty_mod+x toggle_layout stack + +#: You can also create shortcuts to switch to specific layouts:: + +#: map ctrl+alt+t goto_layout tall +#: map ctrl+alt+s goto_layout stack + +#: Similarly, to switch back to the previous layout:: + +#: map ctrl+alt+p last_used_layout + +map ctrl+shift+n resize_window narrower +map ctrl+shift+w resize_window wider +map ctrl+shift+t resize_window taller +map ctrl+shift+s resize_window shorter 3 +#: }}} + +#: Font sizes {{{ + +#: You can change the font size for all top-level kitty OS windows at +#: a time or only the current one. + +# map kitty_mod+equal change_font_size all +2.0 +# map cmd+plus change_font_size all +2.0 +# map cmd+shift+equal change_font_size all +2.0 +# map kitty_mod+minus change_font_size all -2.0 +# map cmd+minus change_font_size all -2.0 +# map kitty_mod+backspace change_font_size all 0 +# map cmd+0 change_font_size all 0 + +#: To setup shortcuts for specific font sizes:: + +#: map kitty_mod+f6 change_font_size all 10.0 + +#: To setup shortcuts to change only the current OS window's font +#: size:: + +#: map kitty_mod+f6 change_font_size current 10.0 +#: }}} + +#: Select and act on visible text {{{ + +#: Use the hints kitten to select text and either pass it to an +#: external program or insert it into the terminal or copy it to the +#: clipboard. + +# map kitty_mod+e kitten hints + +#: Open a currently visible URL using the keyboard. The program used +#: to open the URL is specified in open_url_with. + +# map kitty_mod+p>f kitten hints --type path --program - + +#: Select a path/filename and insert it into the terminal. Useful, for +#: instance to run git commands on a filename output from a previous +#: git command. + +# map kitty_mod+p>shift+f kitten hints --type path + +#: Select a path/filename and open it with the default open program. + +# map kitty_mod+p>l kitten hints --type line --program - + +#: Select a line of text and insert it into the terminal. Use for the +#: output of things like: ls -1 + +# map kitty_mod+p>w kitten hints --type word --program - + +#: Select words and insert into terminal. + +# map kitty_mod+p>h kitten hints --type hash --program - + +#: Select something that looks like a hash and insert it into the +#: terminal. Useful with git, which uses sha1 hashes to identify +#: commits + +# map kitty_mod+p>n kitten hints --type linenum + +#: Select something that looks like filename:linenum and open it in +#: vim at the specified line number. + + +#: The hints kitten has many more modes of operation that you can map +#: to different shortcuts. For a full description see kittens/hints. +#: }}} + +#: Miscellaneous {{{ + +# map kitty_mod+f11 toggle_fullscreen +# map kitty_mod+f10 toggle_maximized +# map kitty_mod+u kitten unicode_input +# map kitty_mod+f2 edit_config_file +# map kitty_mod+escape kitty_shell window + +#: Open the kitty shell in a new window/tab/overlay/os_window to +#: control kitty using commands. + +# map kitty_mod+a>m set_background_opacity +0.1 +# map kitty_mod+a>l set_background_opacity -0.1 +# map kitty_mod+a>1 set_background_opacity 1 +# map kitty_mod+a>d set_background_opacity default +# map kitty_mod+delete clear_terminal reset active + +#: You can create shortcuts to clear/reset the terminal. For example:: + +#: # Reset the terminal +#: map kitty_mod+f9 clear_terminal reset active +#: # Clear the terminal screen by erasing all contents +#: map kitty_mod+f10 clear_terminal clear active +#: # Clear the terminal scrollback by erasing it +#: map kitty_mod+f11 clear_terminal scrollback active +#: # Scroll the contents of the screen into the scrollback +#: map kitty_mod+f12 clear_terminal scroll active + +#: If you want to operate on all windows instead of just the current +#: one, use all instead of active. + +#: It is also possible to remap Ctrl+L to both scroll the current +#: screen contents into the scrollback buffer and clear the screen, +#: instead of just clearing the screen:: + +#: map ctrl+l combine : clear_terminal scroll active : send_text normal,application \x0c + + +#: You can tell kitty to send arbitrary (UTF-8) encoded text to the +#: client program when pressing specified shortcut keys. For example:: + +#: map ctrl+alt+a send_text all Special text + +#: This will send "Special text" when you press the ctrl+alt+a key +#: combination. The text to be sent is a python string literal so you +#: can use escapes like \x1b to send control codes or \u21fb to send +#: unicode characters (or you can just input the unicode characters +#: directly as UTF-8 text). The first argument to send_text is the +#: keyboard modes in which to activate the shortcut. The possible +#: values are normal or application or kitty or a comma separated +#: combination of them. The special keyword all means all modes. The +#: modes normal and application refer to the DECCKM cursor key mode +#: for terminals, and kitty refers to the special kitty extended +#: keyboard protocol. + +#: Another example, that outputs a word and then moves the cursor to +#: the start of the line (same as pressing the Home key):: + +#: map ctrl+alt+a send_text normal Word\x1b[H +#: map ctrl+alt+a send_text application Word\x1bOH + +#: }}} + +# }}} + + +# BEGIN_KITTY_THEME +# Catppuccin-Mocha +include current-theme.conf +# END_KITTY_THEME diff --git a/private_dot_config/nvim/init.lua b/private_dot_config/nvim/init.lua new file mode 100644 index 0000000..0816cbd --- /dev/null +++ b/private_dot_config/nvim/init.lua @@ -0,0 +1,18 @@ +require "user.options" +require "user.keymaps" +require "user.plugins" +require "user.nvim-tree" +require "user.telescope" +require "user.lualine" +require "user.bufferline" +require "user.colorscheme" +require "user.treesitter" +require "user.lsp" +require "user.cmp" +require "user.gitsigns" +require "user.autopairs" +require "user.comment" +require "user.autocommands" +require "user.which-key" +require "user.toggleterm" +require "user.indentline" diff --git a/private_dot_config/nvim/lua/user/autocommands.lua b/private_dot_config/nvim/lua/user/autocommands.lua new file mode 100644 index 0000000..54a8431 --- /dev/null +++ b/private_dot_config/nvim/lua/user/autocommands.lua @@ -0,0 +1,29 @@ +vim.api.nvim_create_autocmd({ "FileType" }, { + pattern = { "qf", "help", "man", "lspinfo", "spectre_panel" }, + callback = function() + vim.cmd [[ + nnoremap q :close + set nobuflisted + ]] + end, +}) + +vim.api.nvim_create_autocmd({ "FileType" }, { + pattern = { "gitcommit", "markdown" }, + callback = function() + vim.opt_local.wrap = true + vim.opt_local.spell = true + end, +}) + +vim.api.nvim_create_autocmd({ "FileType" }, { + pattern = { "dart" }, + callback = function() + vim.opt_local.shiftwidth = 2 + vim.opt_local.tabstop = 2 + end, +}) + + +-- Automatically close tab/vim when nvim-tree is the last window in the tab +vim.cmd "autocmd BufEnter * ++nested if winnr('$') == 1 && bufname() == 'NvimTree_' . tabpagenr() | quit | endif" diff --git a/nvim/.config/nvim/lua/user/autopairs.lua b/private_dot_config/nvim/lua/user/autopairs.lua similarity index 100% rename from nvim/.config/nvim/lua/user/autopairs.lua rename to private_dot_config/nvim/lua/user/autopairs.lua diff --git a/nvim/.config/nvim/lua/user/bufferline.lua b/private_dot_config/nvim/lua/user/bufferline.lua similarity index 100% rename from nvim/.config/nvim/lua/user/bufferline.lua rename to private_dot_config/nvim/lua/user/bufferline.lua diff --git a/private_dot_config/nvim/lua/user/cmp.lua b/private_dot_config/nvim/lua/user/cmp.lua new file mode 100644 index 0000000..42477ce --- /dev/null +++ b/private_dot_config/nvim/lua/user/cmp.lua @@ -0,0 +1,128 @@ +local cmp_status_ok, cmp = pcall(require, "cmp") +if not cmp_status_ok then + return +end + +local snip_status_ok, luasnip = pcall(require, "luasnip") +if not snip_status_ok then + return +end + +require("luasnip/loaders/from_vscode").lazy_load() + +local check_backspace = function() + local col = vim.fn.col "." - 1 + return col == 0 or vim.fn.getline("."):sub(col, col):match "%s" +end + +local kind_icons = { + Text = "", + Method = "", + Function = "", + Constructor = "", + Field = "", + Variable = "", + Class = "", + Interface = "", + Module = "", + Property = "", + Unit = "", + Value = "", + Enum = "", + Keyword = "", + Snippet = "", + Color = "", + File = "", + Reference = "", + Folder = "", + EnumMember = "", + Constant = "", + Struct = "", + Event = "", + Operator = "", + TypeParameter = "", +} + +cmp.setup { + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) -- For `luasnip` users. + end, + }, + + mapping = cmp.mapping.preset.insert { + [""] = cmp.mapping.select_prev_item(), + [""] = cmp.mapping.select_next_item(), + [""] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }), + [""] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }), + [""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), + [""] = cmp.mapping { + i = cmp.mapping.abort(), + c = cmp.mapping.close(), + }, + -- Accept currently selected item. If none selected, `select` first item. + -- Set `select` to `false` to only confirm explicitly selected items. + [""] = cmp.mapping.confirm { select = true }, + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expandable() then + luasnip.expand() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + elseif check_backspace() then + fallback() + else + fallback() + end + end, { + "i", + "s", + }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { + "i", + "s", + }), + }, + formatting = { + fields = { "kind", "abbr", "menu" }, + format = function(entry, vim_item) + vim_item.kind = kind_icons[vim_item.kind] + vim_item.menu = ({ + nvim_lsp = "", + nvim_lua = "", + luasnip = "", + buffer = "", + path = "", + emoji = "", + })[entry.source.name] + return vim_item + end, + }, + sources = { + { name = "nvim_lsp" }, + { name = "nvim_lua" }, + { name = "luasnip" }, + { name = "buffer" }, + { name = "path" }, + }, + confirm_opts = { + behavior = cmp.ConfirmBehavior.Replace, + select = false, + }, + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + experimental = { + ghost_text = true, + }, +} diff --git a/nvim/.config/nvim/lua/user/colorscheme.lua b/private_dot_config/nvim/lua/user/colorscheme.lua similarity index 100% rename from nvim/.config/nvim/lua/user/colorscheme.lua rename to private_dot_config/nvim/lua/user/colorscheme.lua diff --git a/nvim/.config/nvim/lua/user/comment.lua b/private_dot_config/nvim/lua/user/comment.lua similarity index 100% rename from nvim/.config/nvim/lua/user/comment.lua rename to private_dot_config/nvim/lua/user/comment.lua diff --git a/private_dot_config/nvim/lua/user/gitsigns.lua b/private_dot_config/nvim/lua/user/gitsigns.lua new file mode 100644 index 0000000..9453e4f --- /dev/null +++ b/private_dot_config/nvim/lua/user/gitsigns.lua @@ -0,0 +1,36 @@ +local status_ok, gitsigns = pcall(require, "gitsigns") +if not status_ok then + return +end + +gitsigns.setup { + signs = { + add = { hl = "GitSignsAdd", text = "▎", numhl = "GitSignsAddNr", linehl = "GitSignsAddLn" }, + change = { hl = "GitSignsChange", text = "▎", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" }, + delete = { hl = "GitSignsDelete", text = "契", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" }, + topdelete = { hl = "GitSignsDelete", text = "契", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" }, + changedelete = { hl = "GitSignsChange", text = "▎", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" }, + }, + signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` + watch_gitdir = { + interval = 1000, + follow_files = true, + }, + attach_to_untracked = true, + current_line_blame_opts = { + virt_text = true, + virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align' + delay = 1000, + }, + sign_priority = 6, + update_debounce = 100, + status_formatter = nil, -- Use default + preview_config = { + -- Options passed to nvim_open_win + border = "single", + style = "minimal", + relative = "cursor", + row = 0, + col = 1, + }, +} diff --git a/private_dot_config/nvim/lua/user/indentline.lua b/private_dot_config/nvim/lua/user/indentline.lua new file mode 100644 index 0000000..d953f5c --- /dev/null +++ b/private_dot_config/nvim/lua/user/indentline.lua @@ -0,0 +1,18 @@ +local status_ok, indent_blankline = pcall(require, "indent_blankline") +if not status_ok then + return +end + +indent_blankline.setup { + char = "▏", + show_trailing_blankline_indent = false, + show_first_indent_level = false, + use_treesitter = true, + show_current_context = true, + buftype_exclude = { "terminal", "nofile" }, + filetype_exclude = { + "help", + "packer", + "NvimTree", + }, +} diff --git a/private_dot_config/nvim/lua/user/keymaps.lua b/private_dot_config/nvim/lua/user/keymaps.lua new file mode 100644 index 0000000..3cd9a5a --- /dev/null +++ b/private_dot_config/nvim/lua/user/keymaps.lua @@ -0,0 +1,55 @@ +-- Shorten function name +local keymap = vim.keymap.set +-- Silent keymap option +local opts = { silent = true } + +-- Remap space as leader key +keymap("", "", "", opts) +vim.g.mapleader = " " + +-- Save +keymap("n", "w", ":write") + +-- Normal -- +-- Better window navigation +keymap("n", "", "h", opts) +keymap("n", "", "j", opts) +keymap("n", "", "k", opts) +keymap("n", "", "l", opts) + +-- Resize with arrows +keymap("n", "", ":resize -2", opts) +keymap("n", "", ":resize +2", opts) +keymap("n", "", ":vertical resize -2", opts) +keymap("n", "", ":vertical resize +2", opts) + +-- Navigate buffers +keymap("n", "", ":bnext", opts) +keymap("n", "", ":bprevious", opts) + +-- Clear highlights +keymap("n", "h", "nohlsearch", opts) + +-- Close buffers +keymap("n", "", "Bdelete!", opts) + +-- Better paste +keymap("v", "p", '"_dP', opts) + +-- Plugins -- + +-- NvimTree +keymap("n", "e", ":NvimTreeToggle", opts) +keymap("n", "j", ":NvimTreeFindFile", opts) + +-- Telescope +keymap("n", "ff", ":Telescope find_files", opts) +keymap("n", "ft", ":Telescope live_grep", opts) +keymap("n", "fb", ":Telescope buffers", opts) + +-- Comment +keymap("n", "/", "lua require('Comment.api').toggle.linewise.current()", opts) +keymap("x", "/", "lua require('Comment.api').toggle.linewise(vim.fn.visualmode())", opts) + +-- Lsp +keymap("n", "lf", "lua vim.lsp.buf.format{ async = true }", opts) diff --git a/private_dot_config/nvim/lua/user/lsp/handlers.lua b/private_dot_config/nvim/lua/user/lsp/handlers.lua new file mode 100644 index 0000000..e6f5fdb --- /dev/null +++ b/private_dot_config/nvim/lua/user/lsp/handlers.lua @@ -0,0 +1,77 @@ +local M = {} + +local status_cmp_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp") +if not status_cmp_ok then + return +end + +M.capabilities = vim.lsp.protocol.make_client_capabilities() +M.capabilities.textDocument.completion.completionItem.snippetSupport = true +M.capabilities = cmp_nvim_lsp.default_capabilities(M.capabilities) + +M.setup = function() + local signs = { + + { name = "DiagnosticSignError", text = "" }, + { name = "DiagnosticSignWarn", text = "" }, + { name = "DiagnosticSignHint", text = "" }, + { name = "DiagnosticSignInfo", text = "" }, + } + + for _, sign in ipairs(signs) do + vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" }) + end + + local config = { + virtual_text = false, -- disable virtual text + signs = { + active = signs, -- show signs + }, + update_in_insert = true, + underline = true, + severity_sort = true, + float = { + focusable = true, + style = "minimal", + border = "rounded", + source = "always", + header = "", + prefix = "", + }, + } + + vim.diagnostic.config(config) + + vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { + border = "rounded", + }) + + vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { + border = "rounded", + }) +end + +local function lsp_keymaps(bufnr) + local opts = { noremap = true, silent = true } + local keymap = vim.api.nvim_buf_set_keymap + keymap(bufnr, "n", "gD", "lua vim.lsp.buf.declaration()", opts) + keymap(bufnr, "n", "gd", "lua vim.lsp.buf.definition()", opts) + keymap(bufnr, "n", "K", "lua vim.lsp.buf.hover()", opts) + keymap(bufnr, "n", "gI", "lua vim.lsp.buf.implementation()", opts) + keymap(bufnr, "n", "gr", "lua vim.lsp.buf.references()", opts) + keymap(bufnr, "n", "gl", "lua vim.diagnostic.open_float()", opts) + keymap(bufnr, "n", "li", "LspInfo", opts) + keymap(bufnr, "n", "lI", "Mason", opts) + keymap(bufnr, "n", "la", "lua vim.lsp.buf.code_action()", opts) + keymap(bufnr, "n", "lj", "lua vim.diagnostic.goto_next({buffer=0})", opts) + keymap(bufnr, "n", "lk", "lua vim.diagnostic.goto_prev({buffer=0})", opts) + keymap(bufnr, "n", "lr", "lua vim.lsp.buf.rename()", opts) + keymap(bufnr, "n", "ls", "lua vim.lsp.buf.signature_help()", opts) + keymap(bufnr, "n", "lq", "lua vim.diagnostic.setloclist()", opts) +end + +M.on_attach = function(client, bufnr) + lsp_keymaps(bufnr) +end + +return M diff --git a/nvim/.config/nvim/lua/user/lsp/init.lua b/private_dot_config/nvim/lua/user/lsp/init.lua similarity index 100% rename from nvim/.config/nvim/lua/user/lsp/init.lua rename to private_dot_config/nvim/lua/user/lsp/init.lua diff --git a/private_dot_config/nvim/lua/user/lsp/mason.lua b/private_dot_config/nvim/lua/user/lsp/mason.lua new file mode 100644 index 0000000..858d087 --- /dev/null +++ b/private_dot_config/nvim/lua/user/lsp/mason.lua @@ -0,0 +1,48 @@ +local servers = { + "pyright", + "sourcekit", + "dartls", + "tsserver" +} + +local settings = { + ui = { + border = "none", + icons = { + package_installed = "◍", + package_pending = "◍", + package_uninstalled = "◍", + }, + }, + log_level = vim.log.levels.INFO, + max_concurrent_installers = 4, +} + +require("mason").setup(settings) +require("mason-lspconfig").setup({ + -- ensure_installed = servers, + automatic_installation = true, +}) + +local lspconfig_status_ok, lspconfig = pcall(require, "lspconfig") +if not lspconfig_status_ok then + return +end + +local opts = {} + +for _, server in pairs(servers) do + opts = { + on_attach = require("user.lsp.handlers").on_attach, + capabilities = require("user.lsp.handlers").capabilities, + } + + server = vim.split(server, "@")[1] + + local require_ok, conf_opts = pcall(require, "user.lsp.settings." .. server) + if require_ok then + opts = vim.tbl_deep_extend("force", conf_opts, opts) + end + + lspconfig[server].setup(opts) +end diff --git a/nvim/.config/nvim/lua/user/lsp/null-ls.lua b/private_dot_config/nvim/lua/user/lsp/null-ls.lua similarity index 100% rename from nvim/.config/nvim/lua/user/lsp/null-ls.lua rename to private_dot_config/nvim/lua/user/lsp/null-ls.lua diff --git a/nvim/.config/nvim/lua/user/lsp/settings/pyright.lua b/private_dot_config/nvim/lua/user/lsp/settings/pyright.lua similarity index 100% rename from nvim/.config/nvim/lua/user/lsp/settings/pyright.lua rename to private_dot_config/nvim/lua/user/lsp/settings/pyright.lua diff --git a/private_dot_config/nvim/lua/user/lualine.lua b/private_dot_config/nvim/lua/user/lualine.lua new file mode 100644 index 0000000..c57331b --- /dev/null +++ b/private_dot_config/nvim/lua/user/lualine.lua @@ -0,0 +1,64 @@ +local status_ok, lualine = pcall(require, "lualine") +if not status_ok then + return +end + +local hide_in_width = function() + return vim.fn.winwidth(0) > 80 +end + +local branch = { + "branch", + separator = { left = "", right = "" }, +} + +local diagnostics = { + "diagnostics", + sources = { "nvim_diagnostic" }, + sections = { "error", "warn" }, + symbols = { error = " ", warn = " " }, + colored = false, + always_visible = true, +} + +local diff = { + "diff", + colored = false, + symbols = { added = " ", modified = " ", removed = " " }, -- changes diff symbols + cond = hide_in_width, +} + +local filetype = { + "filetype", + icons_enabled = false, +} + +local location = { + "location", + padding = { left = 0, right = 1 }, +} + +local spaces = function() + return "spaces: " .. vim.api.nvim_buf_get_option(0, "shiftwidth") +end + +lualine.setup { + options = { + globalstatus = true, + icons_enabled = true, + theme = "auto", + component_separators = { left = "", right = "" }, + section_separators = { left = "", right = "" }, + disabled_filetypes = { "alpha", "dashboard" }, + always_divide_middle = true, + }, + sections = { + lualine_a = { "mode" }, + lualine_b = { branch }, + lualine_c = { diagnostics }, + lualine_x = { diff, spaces, "encoding", filetype }, + lualine_y = { location }, + lualine_z = { "progress" }, + }, +} + diff --git a/private_dot_config/nvim/lua/user/nvim-tree.lua b/private_dot_config/nvim/lua/user/nvim-tree.lua new file mode 100644 index 0000000..d5cff7b --- /dev/null +++ b/private_dot_config/nvim/lua/user/nvim-tree.lua @@ -0,0 +1,10 @@ +-- disable netrw at the very start of your init.lua (strongly advised) +vim.g.loaded_netrw = 1 +vim.g.loaded_netrwPlugin = 1 + +local status_ok, nvim_tree = pcall(require, "nvim-tree") +if not status_ok then + return +end + +nvim_tree.setup {} diff --git a/nvim/.config/nvim/lua/user/options.lua b/private_dot_config/nvim/lua/user/options.lua similarity index 100% rename from nvim/.config/nvim/lua/user/options.lua rename to private_dot_config/nvim/lua/user/options.lua diff --git a/private_dot_config/nvim/lua/user/plugins.lua b/private_dot_config/nvim/lua/user/plugins.lua new file mode 100644 index 0000000..1d98408 --- /dev/null +++ b/private_dot_config/nvim/lua/user/plugins.lua @@ -0,0 +1,93 @@ +local fn = vim.fn + +-- Automatically install packer +local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim" +if fn.empty(fn.glob(install_path)) > 0 then + PACKER_BOOTSTRAP = fn.system({ + "git", + "clone", + "--depth", + "1", + "https://github.com/wbthomason/packer.nvim", + install_path, + }) + print("Installing packer close and reopen Neovim...") + vim.cmd([[packadd packer.nvim]]) +end + +-- Autocommand that reloads neovim whenever you save the plugins.lua file +vim.cmd([[ + augroup packer_user_config + autocmd! + autocmd BufWritePost plugins.lua source | PackerSync + augroup end +]]) + +-- Use a protected call so we don't error out on first use +local status_ok, packer = pcall(require, "packer") +if not status_ok then + return +end + +-- Have packer use a popup window +packer.init({ + display = { + open_fn = function() + return require("packer.util").float({ border = "rounded" }) + end, + }, +}) + +-- Install plugins here +return packer.startup(function(use) + use { "wbthomason/packer.nvim", commit = "6afb67460283f0e990d35d229fd38fdc04063e0a" } -- Have packer manage itself + use { "nvim-tree/nvim-tree.lua" } + use { "nvim-lua/plenary.nvim" } + use { "nvim-telescope/telescope.nvim" } + use { "nvim-tree/nvim-web-devicons" } + use { "nvim-lualine/lualine.nvim", commit = "a52f078026b27694d2290e34efa61a6e4a690621" } + use { "akinsho/bufferline.nvim" } + use { "moll/vim-bbye" } + use { "windwp/nvim-autopairs" } + use { "numToStr/Comment.nvim" } + use { + "folke/which-key.nvim", + config = function() + vim.o.timeout = true + vim.o.timeoutlen = 300 + end + } + use { "akinsho/toggleterm.nvim" } + + -- Colorschemes + use { "EdenEast/nightfox.nvim" } + use { "neanias/everforest-nvim" } + use { "catppuccin/nvim", as = "catppuccin" } + + -- cmp plugins + use { "hrsh7th/nvim-cmp" } -- The completion plugin + use { "hrsh7th/cmp-buffer" } -- buffer completions + use { "hrsh7th/cmp-path" } -- path completions + use { "saadparwaiz1/cmp_luasnip" } -- snippet completions + use { "hrsh7th/cmp-nvim-lsp" } + + -- snippets + use { "L3MON4D3/LuaSnip", commit = "e81cbe6004051c390721d8570a4a0541ceb0df10" } + use { "rafamadriz/friendly-snippets" } -- a bunch of snippets to use + + -- LSP + use { "neovim/nvim-lspconfig", commit = "b6091272422bb0fbd729f7f5d17a56d37499c54f" } -- enable LSP + use { "williamboman/mason.nvim" } + use { "williamboman/mason-lspconfig.nvim", commit = "e86a4c84ff35240639643ffed56ee1c4d55f538e" } + use { "nvimtools/none-ls.nvim" } -- for formatters and linters + + -- Treesitter + use { "nvim-treesitter/nvim-treesitter", commit = "4fd6d9dc175f367cdcec87630d8a3950ba7daef4" } + + -- Git + use { "lewis6991/gitsigns.nvim" } + + if PACKER_BOOTSTRAP then + require("packer").sync() + end +end) diff --git a/private_dot_config/nvim/lua/user/telescope.lua b/private_dot_config/nvim/lua/user/telescope.lua new file mode 100644 index 0000000..a4fca82 --- /dev/null +++ b/private_dot_config/nvim/lua/user/telescope.lua @@ -0,0 +1,25 @@ +local status_ok, telescope = pcall(require, "telescope") +if not status_ok then + return +end + +local actions = require "telescope.actions" + +telescope.setup { + defaults = { + prompt_prefix = " ", + selection_caret = " ", + path_display = { "smart" }, + file_ignore_patterns = { ".git/", "node_modules" }, + + mappings = { + i = { + [""] = actions.close, + [""] = actions.cycle_history_next, + [""] = actions.cycle_history_prev, + [""] = actions.move_selection_next, + [""] = actions.move_selection_previous, + }, + }, + }, +} diff --git a/private_dot_config/nvim/lua/user/toggleterm.lua b/private_dot_config/nvim/lua/user/toggleterm.lua new file mode 100644 index 0000000..4a464e8 --- /dev/null +++ b/private_dot_config/nvim/lua/user/toggleterm.lua @@ -0,0 +1,32 @@ +local status_ok, toggleterm = pcall(require, "toggleterm") +if not status_ok then + return +end + +toggleterm.setup { + open_mapping = [[]], + hide_numbers = true, + shade_terminals = true, + shading_factor = 2, + start_in_insert = true, + close_on_exit = true, + shell = vim.o.shell, +} + +function _G.set_terminal_keymaps() + local opts = { noremap = true } + -- vim.api.nvim_buf_set_keymap(0, 't', '', [[]], opts) + vim.api.nvim_buf_set_keymap(0, "t", "", [[h]], opts) + vim.api.nvim_buf_set_keymap(0, "t", "", [[j]], opts) + vim.api.nvim_buf_set_keymap(0, "t", "", [[k]], opts) + vim.api.nvim_buf_set_keymap(0, "t", "", [[l]], opts) +end + +vim.cmd "autocmd! TermOpen term://* lua set_terminal_keymaps()" + +local Terminal = require("toggleterm.terminal").Terminal +local lazygit = Terminal:new { cmd = "lazygit", hidden = true } + +function _LAZYGIT_TOGGLE() + lazygit:toggle() +end diff --git a/private_dot_config/nvim/lua/user/treesitter.lua b/private_dot_config/nvim/lua/user/treesitter.lua new file mode 100644 index 0000000..acfbb76 --- /dev/null +++ b/private_dot_config/nvim/lua/user/treesitter.lua @@ -0,0 +1,30 @@ +local status_ok, treesitter = pcall(require, "nvim-treesitter") +if not status_ok then + return +end + +local status_ok, configs = pcall(require, "nvim-treesitter.configs") +if not status_ok then + return +end + +configs.setup { + ensure_installed = { "lua", "javascript", "typescript", "tsx", "html", "css", "json", "markdown", "markdown_inline", "bash", "python", "swift", "dart" }, -- put the language you want in this array + -- ensure_installed = "all", -- one of "all" or a list of languages + ignore_install = { "" }, -- List of parsers to ignore installing + sync_install = false, -- install languages synchronously (only applied to `ensure_installed`) + + highlight = { + enable = true, -- false will disable the whole extension + disable = { "css" }, -- list of language that will be disabled + }, + autopairs = { + enable = true, + }, + indent = { enable = true, disable = { "python", "css" } }, + + context_commentstring = { + enable = true, + enable_autocmd = false, + }, +} diff --git a/private_dot_config/nvim/lua/user/which-key.lua b/private_dot_config/nvim/lua/user/which-key.lua new file mode 100644 index 0000000..30301f2 --- /dev/null +++ b/private_dot_config/nvim/lua/user/which-key.lua @@ -0,0 +1,6 @@ +local status_ok, wk = pcall(require, "which-key") +if not status_ok then + return +end + +wk.setup {} diff --git a/karabiner/assets/complex_modifications/1597572871.json b/private_dot_config/private_karabiner/private_assets/private_complex_modifications/1597572871.json similarity index 100% rename from karabiner/assets/complex_modifications/1597572871.json rename to private_dot_config/private_karabiner/private_assets/private_complex_modifications/1597572871.json diff --git a/karabiner/assets/complex_modifications/1597574790.json b/private_dot_config/private_karabiner/private_assets/private_complex_modifications/1597574790.json similarity index 100% rename from karabiner/assets/complex_modifications/1597574790.json rename to private_dot_config/private_karabiner/private_assets/private_complex_modifications/1597574790.json diff --git a/karabiner/assets/complex_modifications/1597576542.json b/private_dot_config/private_karabiner/private_assets/private_complex_modifications/1597576542.json similarity index 100% rename from karabiner/assets/complex_modifications/1597576542.json rename to private_dot_config/private_karabiner/private_assets/private_complex_modifications/1597576542.json diff --git a/karabiner/assets/complex_modifications/1655107459.json b/private_dot_config/private_karabiner/private_assets/private_complex_modifications/1655107459.json similarity index 100% rename from karabiner/assets/complex_modifications/1655107459.json rename to private_dot_config/private_karabiner/private_assets/private_complex_modifications/1655107459.json diff --git a/private_dot_config/private_karabiner/private_karabiner.json b/private_dot_config/private_karabiner/private_karabiner.json new file mode 100644 index 0000000..4b5955e --- /dev/null +++ b/private_dot_config/private_karabiner/private_karabiner.json @@ -0,0 +1,4032 @@ +{ + "global": { "show_profile_name_in_menu_bar": true }, + "profiles": [ + { + "complex_modifications": { + "rules": [ + { + "description": "Post left_ctrl when return_or_enter is hold.", + "manipulators": [ + { + "from": { + "key_code": "return_or_enter", + "modifiers": { "optional": ["any"] } + }, + "to": [{ "key_code": "right_control" }], + "to_if_alone": [{ "key_code": "return_or_enter" }], + "type": "basic" + } + ] + }, + { + "description": "Post escape if caps is pressed alone, left_ctrl otherwise", + "manipulators": [ + { + "from": { + "key_code": "caps_lock", + "modifiers": { "optional": ["any"] } + }, + "to": [{ "key_code": "left_control" }], + "to_if_alone": [{ "key_code": "escape" }], + "type": "basic" + } + ] + }, + { + "description": "Map left_ctrl to caps_lock.", + "manipulators": [ + { + "from": { + "key_code": "left_control", + "modifiers": { "optional": ["any"] } + }, + "to": [{ "key_code": "caps_lock" }], + "type": "basic" + } + ] + }, + { + "description": "Colemak Mod-DH", + "manipulators": [ + { + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "grave_accent_and_tilde" }], + "type": "basic" + }, + { + "from": { + "key_code": "1", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "1" }], + "type": "basic" + }, + { + "from": { + "key_code": "2", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "2" }], + "type": "basic" + }, + { + "from": { + "key_code": "4", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "4" }], + "type": "basic" + }, + { + "from": { + "key_code": "5", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "5" }], + "type": "basic" + }, + { + "from": { + "key_code": "6", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "6" }], + "type": "basic" + }, + { + "from": { + "key_code": "7", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "7" }], + "type": "basic" + }, + { + "from": { + "key_code": "8", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "8" }], + "type": "basic" + }, + { + "from": { + "key_code": "9", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "9" }], + "type": "basic" + }, + { + "from": { + "key_code": "0", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "0" }], + "type": "basic" + }, + { + "from": { + "key_code": "hyphen", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "hyphen" }], + "type": "basic" + }, + { + "from": { + "key_code": "equal_sign", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "equal_sign" }], + "type": "basic" + }, + { + "from": { + "key_code": "q", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "q" }], + "type": "basic" + }, + { + "from": { + "key_code": "w", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "w" }], + "type": "basic" + }, + { + "from": { + "key_code": "e", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "f" }], + "type": "basic" + }, + { + "from": { + "key_code": "r", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "p" }], + "type": "basic" + }, + { + "from": { + "key_code": "t", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "b" }], + "type": "basic" + }, + { + "from": { + "key_code": "y", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "j" }], + "type": "basic" + }, + { + "from": { + "key_code": "u", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "l" }], + "type": "basic" + }, + { + "from": { + "key_code": "i", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "u" }], + "type": "basic" + }, + { + "from": { + "key_code": "o", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "y" }], + "type": "basic" + }, + { + "from": { + "key_code": "p", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "semicolon" }], + "type": "basic" + }, + { + "from": { + "key_code": "open_bracket", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "open_bracket" }], + "type": "basic" + }, + { + "from": { + "key_code": "close_bracket", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "close_bracket" }], + "type": "basic" + }, + { + "from": { + "key_code": "backslash", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "backslash" }], + "type": "basic" + }, + { + "from": { + "key_code": "a", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "a" }], + "type": "basic" + }, + { + "from": { + "key_code": "s", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "r" }], + "type": "basic" + }, + { + "from": { + "key_code": "d", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "s" }], + "type": "basic" + }, + { + "from": { + "key_code": "f", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "t" }], + "type": "basic" + }, + { + "from": { + "key_code": "g", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "g" }], + "type": "basic" + }, + { + "from": { + "key_code": "h", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "m" }], + "type": "basic" + }, + { + "from": { + "key_code": "j", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "n" }], + "type": "basic" + }, + { + "from": { + "key_code": "k", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "e" }], + "type": "basic" + }, + { + "from": { + "key_code": "l", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "i" }], + "type": "basic" + }, + { + "from": { + "key_code": "semicolon", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "o" }], + "type": "basic" + }, + { + "from": { + "key_code": "quote", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "quote" }], + "type": "basic" + }, + { + "from": { + "key_code": "z", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "z" }], + "type": "basic" + }, + { + "from": { + "key_code": "x", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "x" }], + "type": "basic" + }, + { + "from": { + "key_code": "c", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "c" }], + "type": "basic" + }, + { + "from": { + "key_code": "v", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "d" }], + "type": "basic" + }, + { + "from": { + "key_code": "b", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "v" }], + "type": "basic" + }, + { + "from": { + "key_code": "n", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "k" }], + "type": "basic" + }, + { + "from": { + "key_code": "m", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "h" }], + "type": "basic" + }, + { + "from": { + "key_code": "comma", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "comma" }], + "type": "basic" + }, + { + "from": { + "key_code": "period", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "period" }], + "type": "basic" + }, + { + "from": { + "key_code": "slash", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "slash" }], + "type": "basic" + }, + { + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "grave_accent_and_tilde", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "1", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "2", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "4", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "5", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "5", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "6", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "6", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "7", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "7", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "8", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "8", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "9", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "9", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "0", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "0", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "hyphen", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "hyphen", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "equal_sign", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "equal_sign", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "q", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "w", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "e", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "r", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "t", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "y", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "j", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "u", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "i", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "o", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "p", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "semicolon", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "open_bracket", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "open_bracket", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "close_bracket", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "close_bracket", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "backslash", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "backslash", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "a", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "s", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "d", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "f", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "g", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "h", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "m", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "j", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "k", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "e", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "semicolon", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "quote", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "quote", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "z", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "x", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "c", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "v", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "d", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "b", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "n", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "m", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "h", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "comma", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "comma", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "period", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "period", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "grave_accent_and_tilde", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "1", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "2", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "4", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "5", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "5", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "6", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "6", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "7", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "7", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "8", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "8", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "9", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "9", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "0", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "0", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "hyphen", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "hyphen", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "equal_sign", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "equal_sign", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "q", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "w", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "e", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "r", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "t", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "y", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "j", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "u", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "i", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "o", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "p", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "semicolon", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "open_bracket", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "open_bracket", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "close_bracket", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "close_bracket", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "backslash", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "backslash", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "a", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "s", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "d", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "f", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "g", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "h", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "m", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "j", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "k", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "e", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "semicolon", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "quote", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "quote", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "z", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "x", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "c", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "v", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "d", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "b", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "n", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "m", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "h", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "comma", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "comma", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "period", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "period", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { "key_code": "caps_lock" }, + "to": [{ "key_code": "delete_or_backspace" }], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "identifiers": { + "is_keyboard": true, + "product_id": 51966, + "vendor_id": 65261 + }, + "ignore": true, + "manipulate_caps_lock_led": false + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 4694, + "vendor_id": 51984 + }, + "ignore": true, + "manipulate_caps_lock_led": false + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 4871, + "vendor_id": 65261 + }, + "ignore": true, + "manipulate_caps_lock_led": false + } + ], + "fn_function_keys": [ + { + "from": { "key_code": "f3" }, + "to": [{ "key_code": "mission_control" }] + }, + { + "from": { "key_code": "f4" }, + "to": [{ "key_code": "launchpad" }] + }, + { + "from": { "key_code": "f5" }, + "to": [{ "key_code": "illumination_decrement" }] + }, + { + "from": { "key_code": "f6" }, + "to": [{ "key_code": "illumination_increment" }] + } + ], + "name": "Apple", + "simple_modifications": [ + { + "from": { "key_code": "backslash" }, + "to": [{ "key_code": "delete_or_backspace" }] + }, + { + "from": { "key_code": "delete_or_backspace" }, + "to": [{ "key_code": "backslash" }] + } + ], + "virtual_hid_keyboard": { "keyboard_type_v2": "ansi" } + }, + { + "complex_modifications": { + "rules": [ + { + "description": "Apps navigation", + "enabled": false, + "manipulators": [ + { + "from": { + "key_code": "caps_lock", + "modifiers": { "optional": ["any"] } + }, + "to": [ + { + "set_variable": { + "name": "hyper_mode", + "value": 1 + } + } + ], + "to_after_key_up": [ + { + "set_variable": { + "name": "hyper_mode", + "value": 0 + } + } + ], + "to_if_alone": [{ "key_code": "escape" }], + "type": "basic" + }, + { + "conditions": [ + { + "name": "hyper_mode", + "type": "variable_if", + "value": 1 + } + ], + "from": { "key_code": "spacebar" }, + "to": [ + { + "set_variable": { + "name": "app_launcher", + "value": 1 + } + } + ], + "to_after_key_up": [ + { + "set_variable": { + "name": "app_launcher", + "value": 0 + } + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "name": "app_launcher", + "type": "variable_if", + "value": 1 + } + ], + "from": { "key_code": "a" }, + "to": [{ "shell_command": "open -a 'Arc'" }], + "type": "basic" + }, + { + "conditions": [ + { + "name": "app_launcher", + "type": "variable_if", + "value": 1 + } + ], + "from": { "key_code": "t" }, + "to": [{ "shell_command": "open -a 'Kitty'" }], + "type": "basic" + }, + { + "conditions": [ + { + "name": "app_launcher", + "type": "variable_if", + "value": 1 + } + ], + "from": { "key_code": "x" }, + "to": [{ "shell_command": "open -a 'Xcode'" }], + "type": "basic" + }, + { + "conditions": [ + { + "name": "app_launcher", + "type": "variable_if", + "value": 1 + } + ], + "from": { "key_code": "f" }, + "to": [{ "shell_command": "open -a 'Finder'" }], + "type": "basic" + }, + { + "conditions": [ + { + "name": "app_launcher", + "type": "variable_if", + "value": 1 + } + ], + "from": { "key_code": "v" }, + "to": [{ "shell_command": "open -a 'Preview'" }], + "type": "basic" + }, + { + "conditions": [ + { + "name": "app_launcher", + "type": "variable_if", + "value": 1 + } + ], + "from": { "key_code": "p" }, + "to": [{ "shell_command": "open -a '1Password'" }], + "type": "basic" + } + ] + }, + { + "description": "Colemak Mod-DH", + "manipulators": [ + { + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "grave_accent_and_tilde" }], + "type": "basic" + }, + { + "from": { + "key_code": "1", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "1" }], + "type": "basic" + }, + { + "from": { + "key_code": "2", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "2" }], + "type": "basic" + }, + { + "from": { + "key_code": "4", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "4" }], + "type": "basic" + }, + { + "from": { + "key_code": "5", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "5" }], + "type": "basic" + }, + { + "from": { + "key_code": "6", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "6" }], + "type": "basic" + }, + { + "from": { + "key_code": "7", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "7" }], + "type": "basic" + }, + { + "from": { + "key_code": "8", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "8" }], + "type": "basic" + }, + { + "from": { + "key_code": "9", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "9" }], + "type": "basic" + }, + { + "from": { + "key_code": "0", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "0" }], + "type": "basic" + }, + { + "from": { + "key_code": "hyphen", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "hyphen" }], + "type": "basic" + }, + { + "from": { + "key_code": "equal_sign", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "equal_sign" }], + "type": "basic" + }, + { + "from": { + "key_code": "q", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "q" }], + "type": "basic" + }, + { + "from": { + "key_code": "w", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "w" }], + "type": "basic" + }, + { + "from": { + "key_code": "e", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "f" }], + "type": "basic" + }, + { + "from": { + "key_code": "r", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "p" }], + "type": "basic" + }, + { + "from": { + "key_code": "t", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "b" }], + "type": "basic" + }, + { + "from": { + "key_code": "y", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "j" }], + "type": "basic" + }, + { + "from": { + "key_code": "u", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "l" }], + "type": "basic" + }, + { + "from": { + "key_code": "i", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "u" }], + "type": "basic" + }, + { + "from": { + "key_code": "o", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "y" }], + "type": "basic" + }, + { + "from": { + "key_code": "p", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "semicolon" }], + "type": "basic" + }, + { + "from": { + "key_code": "open_bracket", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "open_bracket" }], + "type": "basic" + }, + { + "from": { + "key_code": "close_bracket", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "close_bracket" }], + "type": "basic" + }, + { + "from": { + "key_code": "backslash", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "backslash" }], + "type": "basic" + }, + { + "from": { + "key_code": "a", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "a" }], + "type": "basic" + }, + { + "from": { + "key_code": "s", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "r" }], + "type": "basic" + }, + { + "from": { + "key_code": "d", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "s" }], + "type": "basic" + }, + { + "from": { + "key_code": "f", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "t" }], + "type": "basic" + }, + { + "from": { + "key_code": "g", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "g" }], + "type": "basic" + }, + { + "from": { + "key_code": "h", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "m" }], + "type": "basic" + }, + { + "from": { + "key_code": "j", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "n" }], + "type": "basic" + }, + { + "from": { + "key_code": "k", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "e" }], + "type": "basic" + }, + { + "from": { + "key_code": "l", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "i" }], + "type": "basic" + }, + { + "from": { + "key_code": "semicolon", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "o" }], + "type": "basic" + }, + { + "from": { + "key_code": "quote", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "quote" }], + "type": "basic" + }, + { + "from": { + "key_code": "z", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "z" }], + "type": "basic" + }, + { + "from": { + "key_code": "x", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "x" }], + "type": "basic" + }, + { + "from": { + "key_code": "c", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "c" }], + "type": "basic" + }, + { + "from": { + "key_code": "v", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "d" }], + "type": "basic" + }, + { + "from": { + "key_code": "b", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "v" }], + "type": "basic" + }, + { + "from": { + "key_code": "n", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "k" }], + "type": "basic" + }, + { + "from": { + "key_code": "m", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "h" }], + "type": "basic" + }, + { + "from": { + "key_code": "comma", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "comma" }], + "type": "basic" + }, + { + "from": { + "key_code": "period", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "period" }], + "type": "basic" + }, + { + "from": { + "key_code": "slash", + "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] } + }, + "to": [{ "key_code": "slash" }], + "type": "basic" + }, + { + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "grave_accent_and_tilde", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "1", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "2", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "4", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "5", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "5", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "6", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "6", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "7", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "7", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "8", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "8", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "9", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "9", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "0", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "0", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "hyphen", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "hyphen", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "equal_sign", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "equal_sign", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "q", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "w", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "e", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "r", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "t", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "y", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "j", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "u", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "i", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "o", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "p", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "semicolon", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "open_bracket", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "open_bracket", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "close_bracket", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "close_bracket", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "backslash", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "backslash", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "a", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "s", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "d", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "f", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "g", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "h", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "m", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "j", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "k", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "e", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "semicolon", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "quote", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "quote", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "z", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "x", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "c", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "v", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "d", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "b", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "n", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "m", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "h", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "comma", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "comma", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "period", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "period", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "grave_accent_and_tilde", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "1", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "2", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "4", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "5", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "5", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "6", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "6", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "7", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "7", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "8", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "8", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "9", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "9", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "0", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "0", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "hyphen", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "hyphen", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "equal_sign", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "equal_sign", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "q", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "w", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "e", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "r", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "t", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "y", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "j", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "u", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "i", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "o", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "p", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "semicolon", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "open_bracket", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "open_bracket", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "close_bracket", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "close_bracket", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "backslash", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "backslash", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "a", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "s", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "d", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "f", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "g", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "h", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "m", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "j", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "k", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "e", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "semicolon", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "quote", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "quote", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "z", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "x", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "c", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "v", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "d", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "b", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "n", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "m", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "h", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "comma", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "comma", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "period", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "period", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": ["right_shift"], + "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": ["right_shift"] + } + ], + "type": "basic" + }, + { + "from": { "key_code": "caps_lock" }, + "to": [{ "key_code": "delete_or_backspace" }], + "type": "basic" + } + ] + }, + { + "description": "Post escape if left_control is pressed alone.", + "manipulators": [ + { + "from": { + "key_code": "left_control", + "modifiers": { "optional": ["any"] } + }, + "to": [{ "key_code": "left_control" }], + "to_if_alone": [{ "key_code": "escape" }], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "identifiers": { + "is_keyboard": true, + "product_id": 51966, + "vendor_id": 65261 + }, + "ignore": true, + "manipulate_caps_lock_led": false + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 4694, + "vendor_id": 51984 + }, + "ignore": true, + "manipulate_caps_lock_led": false + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 4871, + "vendor_id": 65261 + }, + "ignore": true, + "manipulate_caps_lock_led": false + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 832, + "vendor_id": 1452 + }, + "ignore": true + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 34304, + "vendor_id": 1452 + }, + "ignore": true + } + ], + "fn_function_keys": [ + { + "from": { "key_code": "f3" }, + "to": [{ "key_code": "mission_control" }] + }, + { + "from": { "key_code": "f4" }, + "to": [{ "key_code": "launchpad" }] + }, + { + "from": { "key_code": "f5" }, + "to": [{ "key_code": "illumination_decrement" }] + }, + { + "from": { "key_code": "f6" }, + "to": [{ "key_code": "illumination_increment" }] + } + ], + "name": "HHKB", + "selected": true, + "simple_modifications": [ + { + "from": { "key_code": "escape" }, + "to": [{ "key_code": "grave_accent_and_tilde" }] + } + ], + "virtual_hid_keyboard": { "keyboard_type_v2": "ansi" } + } + ] +} \ No newline at end of file diff --git a/fish/.config/fish/config.fish b/stow-legacy/fish/.config/fish/config.fish similarity index 100% rename from fish/.config/fish/config.fish rename to stow-legacy/fish/.config/fish/config.fish diff --git a/fish/.config/fish/fish_variables b/stow-legacy/fish/.config/fish/fish_variables similarity index 100% rename from fish/.config/fish/fish_variables rename to stow-legacy/fish/.config/fish/fish_variables diff --git a/fish/.config/fish/functions/fish_prompt.fish b/stow-legacy/fish/.config/fish/functions/fish_prompt.fish similarity index 100% rename from fish/.config/fish/functions/fish_prompt.fish rename to stow-legacy/fish/.config/fish/functions/fish_prompt.fish diff --git a/fish/.config/fish/functions/fish_user_key_bindings.fish b/stow-legacy/fish/.config/fish/functions/fish_user_key_bindings.fish similarity index 100% rename from fish/.config/fish/functions/fish_user_key_bindings.fish rename to stow-legacy/fish/.config/fish/functions/fish_user_key_bindings.fish diff --git a/fish/.config/fish/themes/Catppuccin Frappe.theme b/stow-legacy/fish/.config/fish/themes/Catppuccin Frappe.theme similarity index 100% rename from fish/.config/fish/themes/Catppuccin Frappe.theme rename to stow-legacy/fish/.config/fish/themes/Catppuccin Frappe.theme diff --git a/fish/.config/fish/themes/Catppuccin Latte.theme b/stow-legacy/fish/.config/fish/themes/Catppuccin Latte.theme similarity index 100% rename from fish/.config/fish/themes/Catppuccin Latte.theme rename to stow-legacy/fish/.config/fish/themes/Catppuccin Latte.theme diff --git a/fish/.config/fish/themes/Catppuccin Macchiato.theme b/stow-legacy/fish/.config/fish/themes/Catppuccin Macchiato.theme similarity index 100% rename from fish/.config/fish/themes/Catppuccin Macchiato.theme rename to stow-legacy/fish/.config/fish/themes/Catppuccin Macchiato.theme diff --git a/fish/.config/fish/themes/Catppuccin Mocha.theme b/stow-legacy/fish/.config/fish/themes/Catppuccin Mocha.theme similarity index 100% rename from fish/.config/fish/themes/Catppuccin Mocha.theme rename to stow-legacy/fish/.config/fish/themes/Catppuccin Mocha.theme diff --git a/git/.gitconfig b/stow-legacy/git/.gitconfig similarity index 100% rename from git/.gitconfig rename to stow-legacy/git/.gitconfig diff --git a/stow-legacy/karabiner/assets/complex_modifications/1597572871.json b/stow-legacy/karabiner/assets/complex_modifications/1597572871.json new file mode 100644 index 0000000..6004eff --- /dev/null +++ b/stow-legacy/karabiner/assets/complex_modifications/1597572871.json @@ -0,0 +1,10784 @@ +{ + "title": "Colemak Mod-DH Keyboard (ANSI)", + "rules": [ + { + "description": "Colemak Mod-DH Standard (ANSI)", + "manipulators": [ + { + "type": "basic", + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "grave_accent_and_tilde" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "1", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "1" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "2", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "2" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "4", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "4" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "5", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "5" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "6", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "6" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "7", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "7" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "8", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "8" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "9", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "9" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "0", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "0" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "hyphen", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "hyphen" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "equal_sign", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "equal_sign" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "q", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "q" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "w", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "w" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "e", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "f" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "r", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "p" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "t", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "b" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "y", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "j" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "u", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "l" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "i", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "u" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "o", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "y" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "p", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "semicolon" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "open_bracket", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "open_bracket" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "close_bracket", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "close_bracket" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "backslash", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "backslash" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "a", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "a" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "s", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "r" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "d", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "s" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "f", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "t" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "g", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "g" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "h", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "k" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "j", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "n" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "k", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "e" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "l", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "i" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "semicolon", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "o" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "quote", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "quote" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "z", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "x" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "x", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "c" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "c", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "d" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "v", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "v" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "b", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "z" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "n", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "m" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "m", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "h" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "comma", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "comma" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "period", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "period" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "slash", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "slash" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "grave_accent_and_tilde", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "1", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "2", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "4", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "5", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "5", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "6", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "6", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "7", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "7", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "8", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "8", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "9", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "9", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "0", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "0", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "hyphen", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "hyphen", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "equal_sign", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "equal_sign", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "q", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "w", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "e", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "r", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "t", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "y", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "j", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "u", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "i", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "o", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "p", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "semicolon", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "open_bracket", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "open_bracket", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "close_bracket", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "close_bracket", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "backslash", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "backslash", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "a", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "s", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "d", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "f", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "g", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "h", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "j", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "e", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "semicolon", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "quote", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "quote", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "z", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "x", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "d", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "b", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "n", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "m", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "m", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "h", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "comma", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "comma", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "period", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "period", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "grave_accent_and_tilde", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "1", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "2", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "4", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "5", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "5", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "6", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "6", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "7", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "7", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "8", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "8", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "9", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "9", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "0", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "0", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "hyphen", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "hyphen", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "equal_sign", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "equal_sign", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "q", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "w", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "e", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "r", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "t", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "y", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "j", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "u", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "i", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "o", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "p", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "semicolon", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "open_bracket", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "open_bracket", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "close_bracket", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "close_bracket", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "backslash", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "backslash", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "a", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "s", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "d", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "f", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "g", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "h", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "j", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "e", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "semicolon", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "quote", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "quote", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "z", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "x", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "d", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "b", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "n", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "m", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "m", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "h", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "comma", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "comma", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "period", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "period", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "right_shift" + ] + } + ] + } + ] + }, + { + "description": "Colemak Mod-DH Wide (ANSI)", + "manipulators": [ + { + "type": "basic", + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "grave_accent_and_tilde" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "1", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "1" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "2", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "2" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "4", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "4" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "5", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "5" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "6", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "equal_sign" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "7", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "6" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "8", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "7" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "9", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "8" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "0", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "9" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "hyphen", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "0" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "equal_sign", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "hyphen" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "q", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "q" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "w", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "w" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "e", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "f" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "r", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "p" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "t", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "b" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "y", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "open_bracket" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "u", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "j" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "i", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "l" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "o", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "u" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "p", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "y" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "open_bracket", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "semicolon" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "close_bracket", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "quote" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "backslash", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "backslash" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "a", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "a" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "s", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "r" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "d", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "s" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "f", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "t" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "g", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "g" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "h", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "close_bracket" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "j", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "k" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "k", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "n" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "l", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "e" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "semicolon", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "i" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "quote", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "o" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "z", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "x" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "x", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "c" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "c", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "d" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "v", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "v" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "b", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "z" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "n", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "slash" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "m", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "m" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "comma", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "h" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "period", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "comma" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "slash", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "period" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "grave_accent_and_tilde", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "1", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "2", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "4", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "5", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "5", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "6", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "equal_sign", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "7", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "6", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "8", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "7", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "9", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "8", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "0", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "9", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "hyphen", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "0", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "equal_sign", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "hyphen", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "q", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "w", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "e", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "r", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "t", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "y", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "open_bracket", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "u", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "j", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "i", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "o", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "p", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "open_bracket", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "semicolon", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "close_bracket", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "quote", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "backslash", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "backslash", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "a", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "s", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "d", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "f", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "g", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "h", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "close_bracket", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "j", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "e", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "semicolon", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "quote", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "z", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "x", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "d", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "b", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "n", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "m", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "m", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "comma", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "h", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "period", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "comma", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "period", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "grave_accent_and_tilde", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "1", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "2", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "4", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "5", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "5", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "6", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "equal_sign", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "7", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "6", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "8", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "7", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "9", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "8", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "0", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "9", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "hyphen", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "0", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "equal_sign", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "hyphen", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "q", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "w", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "e", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "r", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "t", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "y", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "open_bracket", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "u", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "j", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "i", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "o", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "p", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "open_bracket", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "semicolon", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "close_bracket", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "quote", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "backslash", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "backslash", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "a", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "s", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "d", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "f", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "g", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "h", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "close_bracket", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "j", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "e", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "semicolon", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "quote", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "z", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "x", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "d", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "b", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "n", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "m", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "m", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "comma", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "h", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "period", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "comma", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "period", + "modifiers": [ + "right_shift" + ] + } + ] + } + ] + }, + { + "description": "Colemak Mod-DH Alt-Home (ANSI)", + "manipulators": [ + { + "type": "basic", + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "grave_accent_and_tilde" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "1", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "hyphen" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "2", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "1" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "4", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "2" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "5", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "4" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "6", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "5" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "7", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "6" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "8", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "7" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "9", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "8" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "0", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "9" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "hyphen", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "0" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "equal_sign", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "equal_sign" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "q", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "close_bracket" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "w", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "q" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "e", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "w" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "r", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "f" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "t", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "p" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "y", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "b" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "u", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "j" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "i", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "l" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "o", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "u" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "p", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "y" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "open_bracket", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "semicolon" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "close_bracket", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "quote" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "backslash", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "backslash" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "a", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "open_bracket" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "s", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "a" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "d", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "r" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "f", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "s" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "g", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "t" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "h", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "g" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "j", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "k" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "k", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "n" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "l", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "e" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "semicolon", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "i" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "quote", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "o" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "z", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "z" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "x", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "x" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "c", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "c" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "v", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "d" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "b", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "v" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "n", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "slash" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "m", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "m" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "comma", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "h" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "period", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "comma" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "slash", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "period" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "grave_accent_and_tilde", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "1", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "hyphen", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "2", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "4", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "5", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "6", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "5", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "7", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "6", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "8", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "7", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "9", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "8", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "0", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "9", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "hyphen", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "0", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "equal_sign", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "equal_sign", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "q", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "close_bracket", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "w", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "e", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "r", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "t", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "y", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "u", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "j", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "i", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "o", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "p", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "open_bracket", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "semicolon", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "close_bracket", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "quote", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "backslash", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "backslash", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "a", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "open_bracket", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "s", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "d", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "f", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "g", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "h", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "j", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "e", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "semicolon", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "quote", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "z", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "x", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "d", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "b", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "n", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "m", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "m", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "comma", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "h", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "period", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "comma", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "period", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "grave_accent_and_tilde", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "1", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "hyphen", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "2", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "4", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "5", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "6", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "5", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "7", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "6", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "8", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "7", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "9", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "8", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "0", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "9", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "hyphen", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "0", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "equal_sign", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "equal_sign", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "q", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "close_bracket", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "w", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "e", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "r", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "t", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "y", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "u", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "j", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "i", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "o", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "p", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "open_bracket", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "semicolon", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "close_bracket", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "quote", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "backslash", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "backslash", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "a", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "open_bracket", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "s", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "d", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "f", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "g", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "h", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "j", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "e", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "semicolon", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "quote", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "z", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "x", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "d", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "b", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "n", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "m", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "m", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "comma", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "h", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "period", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "comma", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "period", + "modifiers": [ + "right_shift" + ] + } + ] + } + ] + } + ] +} diff --git a/stow-legacy/karabiner/assets/complex_modifications/1597574790.json b/stow-legacy/karabiner/assets/complex_modifications/1597574790.json new file mode 100644 index 0000000..95a1ec8 --- /dev/null +++ b/stow-legacy/karabiner/assets/complex_modifications/1597574790.json @@ -0,0 +1,3609 @@ +{ + "title": "Colemak Keyboard", + "rules": [ + { + "description": "Remap keys to use Colemak keyboard layout", + "manipulators": [ + { + "type": "basic", + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "grave_accent_and_tilde" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "1", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "1" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "2", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "2" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "4", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "4" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "5", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "5" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "6", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "6" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "7", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "7" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "8", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "8" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "9", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "9" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "0", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "0" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "hyphen", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "hyphen" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "equal_sign", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "equal_sign" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "q", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "q" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "w", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "w" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "e", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "f" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "r", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "p" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "t", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "g" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "y", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "j" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "u", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "l" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "i", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "u" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "o", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "y" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "p", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "semicolon" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "open_bracket", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "open_bracket" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "close_bracket", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "close_bracket" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "backslash", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "backslash" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "a", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "a" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "s", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "r" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "d", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "s" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "f", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "t" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "g", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "d" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "h", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "h" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "j", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "n" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "k", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "e" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "l", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "i" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "semicolon", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "o" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "quote", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "quote" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "z", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "z" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "x", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "x" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "c", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "c" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "v", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "v" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "b", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "b" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "n", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "k" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "m", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "m" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "comma", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "comma" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "period", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "period" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "slash", + "modifiers": { + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "slash" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "grave_accent_and_tilde", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "1", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "2", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "4", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "5", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "5", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "6", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "6", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "7", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "7", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "8", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "8", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "9", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "9", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "0", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "0", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "hyphen", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "hyphen", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "equal_sign", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "equal_sign", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "q", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "w", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "e", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "r", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "t", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "y", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "j", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "u", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "i", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "o", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "p", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "semicolon", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "open_bracket", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "open_bracket", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "close_bracket", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "close_bracket", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "backslash", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "backslash", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "a", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "s", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "d", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "f", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "g", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "d", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "h", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "h", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "j", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "e", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "semicolon", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "quote", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "quote", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "z", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "x", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "b", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "n", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "m", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "m", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "comma", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "comma", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "period", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "period", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": [ + "left_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "left_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "grave_accent_and_tilde", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "1", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "1", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "2", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "2", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "4", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "4", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "5", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "5", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "6", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "6", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "7", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "7", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "8", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "8", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "9", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "9", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "0", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "0", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "hyphen", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "hyphen", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "equal_sign", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "equal_sign", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "q", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "q", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "w", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "w", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "e", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "f", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "r", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "p", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "t", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "g", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "y", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "j", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "u", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "l", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "i", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "u", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "o", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "y", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "p", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "semicolon", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "open_bracket", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "open_bracket", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "close_bracket", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "close_bracket", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "backslash", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "backslash", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "a", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "a", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "s", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "r", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "d", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "s", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "f", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "t", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "g", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "d", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "h", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "h", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "j", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "n", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "e", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "i", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "semicolon", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "o", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "quote", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "quote", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "z", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "z", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "x", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "x", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "c", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "c", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "v", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "v", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "b", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "b", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "n", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "k", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "m", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "m", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "comma", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "comma", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "period", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "period", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "slash", + "modifiers": { + "mandatory": [ + "right_shift" + ], + "optional": [ + "caps_lock", + "left_command", + "left_control", + "left_alt", + "right_command", + "right_control", + "right_alt" + ] + } + }, + "to": [ + { + "key_code": "slash", + "modifiers": [ + "right_shift" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "caps_lock" + }, + "to": [ + { + "key_code": "delete_or_backspace" + } + ] + } + ] + } + ] +} diff --git a/stow-legacy/karabiner/assets/complex_modifications/1597576542.json b/stow-legacy/karabiner/assets/complex_modifications/1597576542.json new file mode 100644 index 0000000..4727894 --- /dev/null +++ b/stow-legacy/karabiner/assets/complex_modifications/1597576542.json @@ -0,0 +1,78 @@ +{ + "title": "Caps and return to ctrl. Ctrl to caps.", + "rules": [ + { + "description": "Post left_ctrl when return_or_enter is hold.", + "manipulators": [ + { + "from": { + "key_code": "return_or_enter", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_control" + } + ], + "to_if_alone": [ + { + "key_code": "return_or_enter" + } + ], + "type": "basic" + } + ] + }, + { + "description": "Post escape if caps is pressed alone, left_ctrl otherwise", + "manipulators": [ + { + "from": { + "key_code": "caps_lock", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_control" + } + ], + "to_if_alone": [ + { + "key_code": "escape" + } + ], + "type": "basic" + } + ] + }, + { + "description": "Map left_ctrl to caps_lock.", + "manipulators": [ + { + "from": { + "key_code": "left_control", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "caps_lock" + } + ], + "type": "basic" + } + ] + } + ] +} diff --git a/stow-legacy/karabiner/assets/complex_modifications/1655107459.json b/stow-legacy/karabiner/assets/complex_modifications/1655107459.json new file mode 100644 index 0000000..1d2c718 --- /dev/null +++ b/stow-legacy/karabiner/assets/complex_modifications/1655107459.json @@ -0,0 +1,83 @@ +{ + "title": "Change control key", + "rules": [ + { + "description": "Post escape if left_control is pressed alone.", + "manipulators": [ + { + "type": "basic", + "from": { + "key_code": "left_control", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_control" + } + ], + "to_if_alone": [ + { + "key_code": "escape" + } + ] + } + ] + }, + { + "description": "Post caps_lock if left_control is pressed alone.", + "manipulators": [ + { + "type": "basic", + "from": { + "key_code": "left_control", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_control" + } + ], + "to_if_alone": [ + { + "key_code": "caps_lock" + } + ] + } + ] + }, + { + "description": "Post return_or_enter if right_control is pressed alone.", + "manipulators": [ + { + "type": "basic", + "from": { + "key_code": "right_control", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_control" + } + ], + "to_if_alone": [ + { + "key_code": "return_or_enter" + } + ] + } + ] + } + ] +} diff --git a/karabiner/karabiner.json b/stow-legacy/karabiner/karabiner.json similarity index 100% rename from karabiner/karabiner.json rename to stow-legacy/karabiner/karabiner.json diff --git a/kitty/.config/kitty/kitty.conf b/stow-legacy/kitty/.config/kitty/kitty.conf similarity index 100% rename from kitty/.config/kitty/kitty.conf rename to stow-legacy/kitty/.config/kitty/kitty.conf diff --git a/nvim/.config/nvim/init.lua b/stow-legacy/nvim/.config/nvim/init.lua similarity index 100% rename from nvim/.config/nvim/init.lua rename to stow-legacy/nvim/.config/nvim/init.lua diff --git a/nvim/.config/nvim/lua/user/alpha.lua b/stow-legacy/nvim/.config/nvim/lua/user/alpha.lua similarity index 100% rename from nvim/.config/nvim/lua/user/alpha.lua rename to stow-legacy/nvim/.config/nvim/lua/user/alpha.lua diff --git a/nvim/.config/nvim/lua/user/autocommands.lua b/stow-legacy/nvim/.config/nvim/lua/user/autocommands.lua similarity index 100% rename from nvim/.config/nvim/lua/user/autocommands.lua rename to stow-legacy/nvim/.config/nvim/lua/user/autocommands.lua diff --git a/stow-legacy/nvim/.config/nvim/lua/user/autopairs.lua b/stow-legacy/nvim/.config/nvim/lua/user/autopairs.lua new file mode 100644 index 0000000..224fa89 --- /dev/null +++ b/stow-legacy/nvim/.config/nvim/lua/user/autopairs.lua @@ -0,0 +1,8 @@ +local status_ok, npairs = pcall(require, "nvim-autopairs") +if not status_ok then + return +end + +npairs.setup { + disable_filetype = { "TelescopePrompt" }, +} diff --git a/stow-legacy/nvim/.config/nvim/lua/user/bufferline.lua b/stow-legacy/nvim/.config/nvim/lua/user/bufferline.lua new file mode 100644 index 0000000..7cdb077 --- /dev/null +++ b/stow-legacy/nvim/.config/nvim/lua/user/bufferline.lua @@ -0,0 +1,13 @@ +local status_ok, bufferline = pcall(require, "bufferline") +if not status_ok then + return +end + +bufferline.setup { + options = { + close_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" + right_mouse_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" + offsets = { { filetype = "NvimTree", text = "", padding = 1 } }, + separator_style = "thin", -- | "thick" | "thin" | { 'any', 'any' }, + }, +} diff --git a/nvim/.config/nvim/lua/user/cmp.lua b/stow-legacy/nvim/.config/nvim/lua/user/cmp.lua similarity index 100% rename from nvim/.config/nvim/lua/user/cmp.lua rename to stow-legacy/nvim/.config/nvim/lua/user/cmp.lua diff --git a/stow-legacy/nvim/.config/nvim/lua/user/colorscheme.lua b/stow-legacy/nvim/.config/nvim/lua/user/colorscheme.lua new file mode 100644 index 0000000..f931d2a --- /dev/null +++ b/stow-legacy/nvim/.config/nvim/lua/user/colorscheme.lua @@ -0,0 +1,6 @@ +colorscheme = "catppuccin-mocha" +local status_ok, _ = pcall(vim.cmd.colorscheme, colorscheme) +if not status_ok then + return +end + diff --git a/stow-legacy/nvim/.config/nvim/lua/user/comment.lua b/stow-legacy/nvim/.config/nvim/lua/user/comment.lua new file mode 100644 index 0000000..95ce945 --- /dev/null +++ b/stow-legacy/nvim/.config/nvim/lua/user/comment.lua @@ -0,0 +1,8 @@ +local status_ok, comment = pcall(require, "Comment") +if not status_ok then + return +end + +comment.setup { + -- Set up +} diff --git a/nvim/.config/nvim/lua/user/gitsigns.lua b/stow-legacy/nvim/.config/nvim/lua/user/gitsigns.lua similarity index 100% rename from nvim/.config/nvim/lua/user/gitsigns.lua rename to stow-legacy/nvim/.config/nvim/lua/user/gitsigns.lua diff --git a/nvim/.config/nvim/lua/user/keymaps.lua b/stow-legacy/nvim/.config/nvim/lua/user/keymaps.lua similarity index 100% rename from nvim/.config/nvim/lua/user/keymaps.lua rename to stow-legacy/nvim/.config/nvim/lua/user/keymaps.lua diff --git a/nvim/.config/nvim/lua/user/lsp/handlers.lua b/stow-legacy/nvim/.config/nvim/lua/user/lsp/handlers.lua similarity index 100% rename from nvim/.config/nvim/lua/user/lsp/handlers.lua rename to stow-legacy/nvim/.config/nvim/lua/user/lsp/handlers.lua diff --git a/stow-legacy/nvim/.config/nvim/lua/user/lsp/init.lua b/stow-legacy/nvim/.config/nvim/lua/user/lsp/init.lua new file mode 100644 index 0000000..6cb90c5 --- /dev/null +++ b/stow-legacy/nvim/.config/nvim/lua/user/lsp/init.lua @@ -0,0 +1,8 @@ +local status_ok, _ = pcall(require, "lspconfig") +if not status_ok then + return +end + +require "user.lsp.mason" +require("user.lsp.handlers").setup() +require("user.lsp.null-ls") diff --git a/nvim/.config/nvim/lua/user/lsp/mason.lua b/stow-legacy/nvim/.config/nvim/lua/user/lsp/mason.lua similarity index 100% rename from nvim/.config/nvim/lua/user/lsp/mason.lua rename to stow-legacy/nvim/.config/nvim/lua/user/lsp/mason.lua diff --git a/stow-legacy/nvim/.config/nvim/lua/user/lsp/null-ls.lua b/stow-legacy/nvim/.config/nvim/lua/user/lsp/null-ls.lua new file mode 100644 index 0000000..960ebbb --- /dev/null +++ b/stow-legacy/nvim/.config/nvim/lua/user/lsp/null-ls.lua @@ -0,0 +1,19 @@ +local null_ls_status_ok, null_ls = pcall(require, "null-ls") +if not null_ls_status_ok then + return +end + +-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting +local formatting = null_ls.builtins.formatting +-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics +local diagnostics = null_ls.builtins.diagnostics + +-- https://github.com/prettier-solidity/prettier-plugin-solidity +null_ls.setup { + debug = false, + sources = { + formatting.black.with { extra_args = { "--fast" } }, + formatting.stylua, + diagnostics.flake8, + }, +} diff --git a/stow-legacy/nvim/.config/nvim/lua/user/lsp/settings/pyright.lua b/stow-legacy/nvim/.config/nvim/lua/user/lsp/settings/pyright.lua new file mode 100644 index 0000000..c2a518d --- /dev/null +++ b/stow-legacy/nvim/.config/nvim/lua/user/lsp/settings/pyright.lua @@ -0,0 +1,9 @@ +return { + settings = { + python = { + analysis = { + typeCheckingMode = "off", + }, + }, + }, +} diff --git a/nvim/.config/nvim/lua/user/lualine.lua b/stow-legacy/nvim/.config/nvim/lua/user/lualine.lua similarity index 100% rename from nvim/.config/nvim/lua/user/lualine.lua rename to stow-legacy/nvim/.config/nvim/lua/user/lualine.lua diff --git a/nvim/.config/nvim/lua/user/nvim-dap.lua b/stow-legacy/nvim/.config/nvim/lua/user/nvim-dap.lua similarity index 100% rename from nvim/.config/nvim/lua/user/nvim-dap.lua rename to stow-legacy/nvim/.config/nvim/lua/user/nvim-dap.lua diff --git a/nvim/.config/nvim/lua/user/nvim-dapui.lua b/stow-legacy/nvim/.config/nvim/lua/user/nvim-dapui.lua similarity index 100% rename from nvim/.config/nvim/lua/user/nvim-dapui.lua rename to stow-legacy/nvim/.config/nvim/lua/user/nvim-dapui.lua diff --git a/nvim/.config/nvim/lua/user/nvim-tree.lua b/stow-legacy/nvim/.config/nvim/lua/user/nvim-tree.lua similarity index 100% rename from nvim/.config/nvim/lua/user/nvim-tree.lua rename to stow-legacy/nvim/.config/nvim/lua/user/nvim-tree.lua diff --git a/stow-legacy/nvim/.config/nvim/lua/user/options.lua b/stow-legacy/nvim/.config/nvim/lua/user/options.lua new file mode 100644 index 0000000..78cacea --- /dev/null +++ b/stow-legacy/nvim/.config/nvim/lua/user/options.lua @@ -0,0 +1,15 @@ +local options = { + number = true, + cursorline = true, + ignorecase = true, + smartcase = true, + expandtab = true, + smarttab = true, + shiftwidth = 4, + tabstop = 4, +} + +for k, v in pairs(options) do + vim.opt[k] = v +end + diff --git a/nvim/.config/nvim/lua/user/plugins.lua b/stow-legacy/nvim/.config/nvim/lua/user/plugins.lua similarity index 100% rename from nvim/.config/nvim/lua/user/plugins.lua rename to stow-legacy/nvim/.config/nvim/lua/user/plugins.lua diff --git a/nvim/.config/nvim/lua/user/telescope.lua b/stow-legacy/nvim/.config/nvim/lua/user/telescope.lua similarity index 100% rename from nvim/.config/nvim/lua/user/telescope.lua rename to stow-legacy/nvim/.config/nvim/lua/user/telescope.lua diff --git a/nvim/.config/nvim/lua/user/toggleterm.lua b/stow-legacy/nvim/.config/nvim/lua/user/toggleterm.lua similarity index 100% rename from nvim/.config/nvim/lua/user/toggleterm.lua rename to stow-legacy/nvim/.config/nvim/lua/user/toggleterm.lua diff --git a/nvim/.config/nvim/lua/user/treesitter.lua b/stow-legacy/nvim/.config/nvim/lua/user/treesitter.lua similarity index 100% rename from nvim/.config/nvim/lua/user/treesitter.lua rename to stow-legacy/nvim/.config/nvim/lua/user/treesitter.lua diff --git a/nvim/.config/nvim/lua/user/which-key.lua b/stow-legacy/nvim/.config/nvim/lua/user/which-key.lua similarity index 100% rename from nvim/.config/nvim/lua/user/which-key.lua rename to stow-legacy/nvim/.config/nvim/lua/user/which-key.lua diff --git a/nvim/.config/nvim/lua/user/xcodebuild.lua b/stow-legacy/nvim/.config/nvim/lua/user/xcodebuild.lua similarity index 100% rename from nvim/.config/nvim/lua/user/xcodebuild.lua rename to stow-legacy/nvim/.config/nvim/lua/user/xcodebuild.lua diff --git a/vim/.vimrc b/stow-legacy/vim/.vimrc similarity index 100% rename from vim/.vimrc rename to stow-legacy/vim/.vimrc From 93d5a19a9b32d472d1a9d162e392c1dea4619479 Mon Sep 17 00:00:00 2001 From: Doan Thieu Date: Fri, 15 May 2026 21:34:11 +0700 Subject: [PATCH 02/18] Clean up Kitty config --- private_dot_config/kitty/Nightfox.conf | 52 - private_dot_config/kitty/kitty.conf | 1285 +----------------------- 2 files changed, 6 insertions(+), 1331 deletions(-) delete mode 100644 private_dot_config/kitty/Nightfox.conf diff --git a/private_dot_config/kitty/Nightfox.conf b/private_dot_config/kitty/Nightfox.conf deleted file mode 100644 index 6e9772d..0000000 --- a/private_dot_config/kitty/Nightfox.conf +++ /dev/null @@ -1,52 +0,0 @@ -# vim:ft=kitty - -## name: Nightfox -## author: EdenEast -## license: MIT -## upstream: https://github.com/EdenEast/nightfox.nvim/blob/main/extra/nightfox/nightfox_kitty.conf - -background #192330 -foreground #cdcecf -selection_background #2b3b51 -selection_foreground #cdcecf -url_color #81b29a - -# Cursor -# uncomment for reverse background -# cursor none -cursor #cdcecf - -# Border -active_border_color #719cd6 -inactive_border_color #39506d -bell_border_color #f4a261 - -# Tabs -active_tab_background #719cd6 -active_tab_foreground #131a24 -inactive_tab_background #2b3b51 -inactive_tab_foreground #738091 - -# normal -color0 #393b44 -color1 #c94f6d -color2 #81b29a -color3 #dbc074 -color4 #719cd6 -color5 #9d79d6 -color6 #63cdcf -color7 #dfdfe0 - -# bright -color8 #575860 -color9 #d16983 -color10 #8ebaa4 -color11 #e0c989 -color12 #86abdc -color13 #baa1e2 -color14 #7ad5d6 -color15 #e4e4e5 - -# extended colors -color16 #f4a261 -color17 #d67ad2 diff --git a/private_dot_config/kitty/kitty.conf b/private_dot_config/kitty/kitty.conf index 9cb9ccd..0aae22b 100644 --- a/private_dot_config/kitty/kitty.conf +++ b/private_dot_config/kitty/kitty.conf @@ -1,1301 +1,28 @@ -# vim:fileencoding=utf-8:ft=conf:foldmethod=marker +# vim:fileencoding=utf-8:ft=conf -# shell integration -shell_integration no-cursor - -#: Fonts {{{ - -#: kitty has very powerful font management. You can configure -#: individual font faces and even specify special fonts for particular -#: characters. - -font_family SourceCodePro-Medium -bold_font auto -italic_font auto +font_family SourceCodePro-Medium +bold_font auto +italic_font auto bold_italic_font auto - -#: You can specify different fonts for the bold/italic/bold-italic -#: variants. To get a full list of supported fonts use the `kitty -#: list-fonts` command. By default they are derived automatically, by -#: the OSes font system. Setting them manually is useful for font -#: families that have many weight variants like Book, Medium, Thick, -#: etc. For example:: - -#: font_family Operator Mono Book -#: bold_font Operator Mono Medium -#: italic_font Operator Mono Book Italic -#: bold_italic_font Operator Mono Medium Italic - font_size 20.0 +adjust_line_height 110% -#: Font size (in pts) - -# force_ltr no - -#: kitty does not support BIDI (bidirectional text), however, for RTL -#: scripts, words are automatically displayed in RTL. That is to say, -#: in an RTL script, the words "HELLO WORLD" display in kitty as -#: "WORLD HELLO", and if you try to select a substring of an RTL- -#: shaped string, you will get the character that would be there had -#: the the string been LTR. For example, assuming the Hebrew word -#: ירושלים, selecting the character that on the screen appears to be ם -#: actually writes into the selection buffer the character י. - -#: kitty's default behavior is useful in conjunction with a filter to -#: reverse the word order, however, if you wish to manipulate RTL -#: glyphs, it can be very challenging to work with, so this option is -#: provided to turn it off. Furthermore, this option can be used with -#: the command line program GNU FriBidi -#: to get BIDI -#: support, because it will force kitty to always treat the text as -#: LTR, which FriBidi expects for terminals. - -adjust_line_height 110% -# adjust_column_width 0 - -#: Change the size of each character cell kitty renders. You can use -#: either numbers, which are interpreted as pixels or percentages -#: (number followed by %), which are interpreted as percentages of the -#: unmodified values. You can use negative pixels or percentages less -#: than 100% to reduce sizes (but this might cause rendering -#: artifacts). - -# symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols - -#: Map the specified unicode codepoints to a particular font. Useful -#: if you need special rendering for some symbols, such as for -#: Powerline. Avoids the need for patched fonts. Each unicode code -#: point is specified in the form U+. You -#: can specify multiple code points, separated by commas and ranges -#: separated by hyphens. symbol_map itself can be specified multiple -#: times. Syntax is:: - -#: symbol_map codepoints Font Family Name - -# disable_ligatures never - -#: Choose how you want to handle multi-character ligatures. The -#: default is to always render them. You can tell kitty to not render -#: them when the cursor is over them by using cursor to make editing -#: easier, or have kitty never render them at all by using always, if -#: you don't like them. The ligature strategy can be set per-window -#: either using the kitty remote control facility or by defining -#: shortcuts for it in kitty.conf, for example:: - -#: map alt+1 disable_ligatures_in active always -#: map alt+2 disable_ligatures_in all never -#: map alt+3 disable_ligatures_in tab cursor - -#: Note that this refers to programming ligatures, typically -#: implemented using the calt OpenType feature. For disabling general -#: ligatures, use the font_features setting. - -# font_features none - -#: Choose exactly which OpenType features to enable or disable. This -#: is useful as some fonts might have features worthwhile in a -#: terminal. For example, Fira Code Retina includes a discretionary -#: feature, zero, which in that font changes the appearance of the -#: zero (0), to make it more easily distinguishable from Ø. Fira Code -#: Retina also includes other discretionary features known as -#: Stylistic Sets which have the tags ss01 through ss20. - -#: Note that this code is indexed by PostScript name, and not the font -#: family. This allows you to define very precise feature settings; -#: e.g. you can disable a feature in the italic font but not in the -#: regular font. - -#: To get the PostScript name for a font, use kitty + list-fonts -#: --psnames:: - -#: $ kitty + list-fonts --psnames | grep Fira -#: Fira Code -#: Fira Code Bold (FiraCode-Bold) -#: Fira Code Light (FiraCode-Light) -#: Fira Code Medium (FiraCode-Medium) -#: Fira Code Regular (FiraCode-Regular) -#: Fira Code Retina (FiraCode-Retina) - -#: The part in brackets is the PostScript name. - -#: Enable alternate zero and oldstyle numerals:: - -#: font_features FiraCode-Retina +zero +onum - -#: Enable only alternate zero:: - -#: font_features FiraCode-Retina +zero - -#: Disable the normal ligatures, but keep the calt feature which (in -#: this font) breaks up monotony:: - -#: font_features TT2020StyleB-Regular -liga +calt - -#: In conjunction with force_ltr, you may want to disable Arabic -#: shaping entirely, and only look at their isolated forms if they -#: show up in a document. You can do this with e.g.:: - -#: font_features UnifontMedium +isol -medi -fina -init - -# box_drawing_scale 0.001, 1, 1.5, 2 - -#: Change the sizes of the lines used for the box drawing unicode -#: characters These values are in pts. They will be scaled by the -#: monitor DPI to arrive at a pixel value. There must be four values -#: corresponding to thin, normal, thick, and very thick lines. - -#: }}} - -#: Cursor customization {{{ - -# cursor #81a1c1 - -# Url corsor -# url_color #0087bd - -#: Default cursor color - -# cursor_text_color #111111 - -#: Choose the color of text under the cursor. If you want it rendered -#: with the background color of the cell underneath instead, use the -#: special keyword: background - +shell_integration no-cursor cursor_shape block -#: The cursor shape can be one of (block, beam, underline) - -# cursor_beam_thickness 1.5 - -#: Defines the thickness of the beam cursor (in pts) - -# cursor_underline_thickness 2.0 - -#: Defines the thickness of the underline cursor (in pts) - -# cursor_blink_interval -1 - -#: The interval (in seconds) at which to blink the cursor. Set to zero -#: to disable blinking. Negative values mean use system default. Note -#: that numbers smaller than repaint_delay will be limited to -#: repaint_delay. - -# cursor_stop_blinking_after 15.0 - -#: Stop blinking cursor after the specified number of seconds of -#: keyboard inactivity. Set to zero to never stop blinking. - -#: }}} - -#: Scrollback {{{ - -# scrollback_lines 2000 - -#: Number of lines of history to keep in memory for scrolling back. -#: Memory is allocated on demand. Negative numbers are (effectively) -#: infinite scrollback. Note that using very large scrollback is not -#: recommended as it can slow down resizing of the terminal and also -#: use large amounts of RAM. - -# scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER - -#: Program with which to view scrollback in a new window. The -#: scrollback buffer is passed as STDIN to this program. If you change -#: it, make sure the program you use can handle ANSI escape sequences -#: for colors and text formatting. INPUT_LINE_NUMBER in the command -#: line above will be replaced by an integer representing which line -#: should be at the top of the screen. Similarly CURSOR_LINE and -#: CURSOR_COLUMN will be replaced by the current cursor position. - -# scrollback_pager_history_size 0 - -#: Separate scrollback history size, used only for browsing the -#: scrollback buffer (in MB). This separate buffer is not available -#: for interactive scrolling but will be piped to the pager program -#: when viewing scrollback buffer in a separate window. The current -#: implementation stores one character in 4 bytes, so approximatively -#: 2500 lines per megabyte at 100 chars per line. A value of zero or -#: less disables this feature. The maximum allowed size is 4GB. - -# wheel_scroll_multiplier 5.0 - -#: Modify the amount scrolled by the mouse wheel. Note this is only -#: used for low precision scrolling devices, not for high precision -#: scrolling on platforms such as macOS and Wayland. Use negative -#: numbers to change scroll direction. - -# touch_scroll_multiplier 1.0 - -#: Modify the amount scrolled by a touchpad. Note this is only used -#: for high precision scrolling devices on platforms such as macOS and -#: Wayland. Use negative numbers to change scroll direction. - -#: }}} - -#: Mouse {{{ - -# mouse_hide_wait 0.0 - -#: Hide mouse cursor after the specified number of seconds of the -#: mouse not being used. Set to zero to disable mouse cursor hiding. -#: Set to a negative value to hide the mouse cursor immediately when -#: typing text. Disabled by default on macOS as getting it to work -#: robustly with the ever-changing sea of bugs that is Cocoa is too -#: much effort. - -# url_color #0087bd -# url_style curly - -#: The color and style for highlighting URLs on mouse-over. url_style -#: can be one of: none, single, double, curly - -# open_url_modifiers kitty_mod - -#: The modifier keys to press when clicking with the mouse on URLs to -#: open the URL - -# open_url_with default - -#: The program with which to open URLs that are clicked on. The -#: special value default means to use the operating system's default -#: URL handler. - -# url_prefixes http https file ftp - -#: The set of URL prefixes to look for when detecting a URL under the -#: mouse cursor. - -# copy_on_select no - -#: Copy to clipboard or a private buffer on select. With this set to -#: clipboard, simply selecting text with the mouse will cause the text -#: to be copied to clipboard. Useful on platforms such as macOS that -#: do not have the concept of primary selections. You can instead -#: specify a name such as a1 to copy to a private kitty buffer -#: instead. Map a shortcut with the paste_from_buffer action to paste -#: from this private buffer. For example:: - -#: map cmd+shift+v paste_from_buffer a1 - -#: Note that copying to the clipboard is a security risk, as all -#: programs, including websites open in your browser can read the -#: contents of the system clipboard. - -# strip_trailing_spaces never - -#: Remove spaces at the end of lines when copying to clipboard. A -#: value of smart will do it when using normal selections, but not -#: rectangle selections. always will always do it. - -# rectangle_select_modifiers ctrl+alt - -#: The modifiers to use rectangular selection (i.e. to select text in -#: a rectangular block with the mouse) - -# terminal_select_modifiers shift - -#: The modifiers to override mouse selection even when a terminal -#: application has grabbed the mouse - -# select_by_word_characters @-./_~?&=%+# - -#: Characters considered part of a word when double clicking. In -#: addition to these characters any character that is marked as an -#: alphanumeric character in the unicode database will be matched. - -# click_interval -1.0 - -#: The interval between successive clicks to detect double/triple -#: clicks (in seconds). Negative numbers will use the system default -#: instead, if available, or fallback to 0.5. - -# focus_follows_mouse no - -#: Set the active window to the window under the mouse when moving the -#: mouse around - -# pointer_shape_when_grabbed arrow - -#: The shape of the mouse pointer when the program running in the -#: terminal grabs the mouse. Valid values are: arrow, beam and hand - -#: }}} - -#: Performance tuning {{{ - -# repaint_delay 10 - -#: Delay (in milliseconds) between screen updates. Decreasing it, -#: increases frames-per-second (FPS) at the cost of more CPU usage. -#: The default value yields ~100 FPS which is more than sufficient for -#: most uses. Note that to actually achieve 100 FPS you have to either -#: set sync_to_monitor to no or use a monitor with a high refresh -#: rate. Also, to minimize latency when there is pending input to be -#: processed, repaint_delay is ignored. - -# input_delay 3 - -#: Delay (in milliseconds) before input from the program running in -#: the terminal is processed. Note that decreasing it will increase -#: responsiveness, but also increase CPU usage and might cause flicker -#: in full screen programs that redraw the entire screen on each loop, -#: because kitty is so fast that partial screen updates will be drawn. - -# sync_to_monitor yes - -#: Sync screen updates to the refresh rate of the monitor. This -#: prevents tearing (https://en.wikipedia.org/wiki/Screen_tearing) -#: when scrolling. However, it limits the rendering speed to the -#: refresh rate of your monitor. With a very high speed mouse/high -#: keyboard repeat rate, you may notice some slight input latency. If -#: so, set this to no. - -#: }}} - -#: Terminal bell {{{ - -# enable_audio_bell yes - -#: Enable/disable the audio bell. Useful in environments that require -#: silence. - -# visual_bell_duration 0.0 - -#: Visual bell duration. Flash the screen when a bell occurs for the -#: specified number of seconds. Set to zero to disable. - -# window_alert_on_bell yes - -#: Request window attention on bell. Makes the dock icon bounce on -#: macOS or the taskbar flash on linux. - -# bell_on_tab yes - -#: Show a bell symbol on the tab if a bell occurs in one of the -#: windows in the tab and the window is not the currently focused -#: window - -# command_on_bell none - -#: Program to run when a bell occurs. - -#: }}} - -#: Window layout {{{ - -# remember_window_size yes -# initial_window_width 640 -# initial_window_height 400 - -#: If enabled, the window size will be remembered so that new -#: instances of kitty will have the same size as the previous -#: instance. If disabled, the window will initially have size -#: configured by initial_window_width/height, in pixels. You can use a -#: suffix of "c" on the width/height values to have them interpreted -#: as number of cells instead of pixels. - enabled_layouts * - -#: The enabled window layouts. A comma separated list of layout names. -#: The special value all means all layouts. The first listed layout -#: will be used as the startup layout. Default configuration is all -#: layouts in alphabetical order. For a list of available layouts, see -#: the https://sw.kovidgoyal.net/kitty/index.html#layouts. - -# window_resize_step_cells 2 -# window_resize_step_lines 2 - -#: The step size (in units of cell width/cell height) to use when -#: resizing windows. The cells value is used for horizontal resizing -#: and the lines value for vertical resizing. - window_border_width 1.0 - -#: The width (in pts) of window borders. Will be rounded to the -#: nearest number of pixels based on screen resolution. Note that -#: borders are displayed only when more than one window is visible. -#: They are meant to separate multiple windows. - -# draw_minimal_borders yes - -#: Draw only the minimum borders needed. This means that only the -#: minimum needed borders for inactive windows are drawn. That is only -#: the borders that separate the inactive window from a neighbor. Note -#: that setting a non-zero window margin overrides this and causes all -#: borders to be drawn. - -# window_margin_width 0 2 - -#: The window margin (in pts) (blank area outside the border). A -#: single value sets all four sides. Two values set the vertical and -#: horizontal sides. Three values set top, horizontal and bottom. Four -#: values set top, right, bottom and left. - -# single_window_margin_width -1 - -#: The window margin (in pts) to use when only a single window is -#: visible. Negative values will cause the value of -#: window_margin_width to be used instead. A single value sets all -#: four sides. Two values set the vertical and horizontal sides. Three -#: values set top, horizontal and bottom. Four values set top, right, -#: bottom and left. - window_padding_width 4 - -#: The window padding (in pts) (blank area between the text and the -#: window border). A single value sets all four sides. Two values set -#: the vertical and horizontal sides. Three values set top, horizontal -#: and bottom. Four values set top, right, bottom and left. - -# placement_strategy center - -#: When the window size is not an exact multiple of the cell size, the -#: cell area of the terminal window will have some extra padding on -#: the sides. You can control how that padding is distributed with -#: this option. Using a value of center means the cell area will be -#: placed centrally. A value of top-left means the padding will be on -#: only the bottom and right edges. -# active_border_color #00ff00 - -#: The color for the border of the active window. Set this to none to -#: not draw borders around the active window. -# inactive_border_color #cccccc - -#: The color for the border of inactive windows - -# bell_border_color #ff5a00 - -#: The color for the border of inactive windows in which a bell has -#: occurred - inactive_text_alpha 0.4 - -#: Fade the text in inactive windows by the specified amount (a number -#: between zero and one, with zero being fully faded). - -# hide_window_decorations no - -#: Hide the window decorations (title-bar and window borders) with -#: yes. On macOS, titlebar-only can be used to only hide the titlebar. -#: Whether this works and exactly what effect it has depends on the -#: window manager/operating system. - -# resize_debounce_time 0.1 - -#: The time (in seconds) to wait before redrawing the screen when a -#: resize event is received. On platforms such as macOS, where the -#: operating system sends events corresponding to the start and end of -#: a resize, this number is ignored. - -# resize_draw_strategy static - -#: Choose how kitty draws a window while a resize is in progress. A -#: value of static means draw the current window contents, mostly -#: unchanged. A value of scale means draw the current window contents -#: scaled. A value of blank means draw a blank window. A value of size -#: means show the window size in cells. - -# resize_in_steps no - -#: Resize the OS window in steps as large as the cells, instead of -#: with the usual pixel accuracy. Combined with an -#: initial_window_width and initial_window_height in number of cells, -#: this option can be used to keep the margins as small as possible -#: when resizing the OS window. Note that this does not currently work -#: on Wayland. - -# confirm_os_window_close 0 - -#: Ask for confirmation when closing an OS window or a tab that has at -#: least this number of kitty windows in it. A value of zero disables -#: confirmation. This confirmation also applies to requests to quit -#: the entire application (all OS windows, via the quit action). - -#: }}} - -#: Tab bar {{{ - -# tab_bar_edge bottom - -#: Which edge to show the tab bar on, top or bottom - -# tab_bar_margin_width 0.0 - -#: The margin to the left and right of the tab bar (in pts) - tab_bar_style fade -#: The tab bar style, can be one of: fade, separator, powerline, or -#: hidden. In the fade style, each tab's edges fade into the -#: background color, in the separator style, tabs are separated by a -#: configurable separator, and the powerline shows the tabs as a -#: continuous line. - -# tab_bar_min_tabs 2 - -#: The minimum number of tabs that must exist before the tab bar is -#: shown - -# tab_switch_strategy previous - -#: The algorithm to use when switching to a tab when the current tab -#: is closed. The default of previous will switch to the last used -#: tab. A value of left will switch to the tab to the left of the -#: closed tab. A value of last will switch to the right-most tab. - -# tab_fade 0.25 0.5 0.75 1 - -#: Control how each tab fades into the background when using fade for -#: the tab_bar_style. Each number is an alpha (between zero and one) -#: that controls how much the corresponding cell fades into the -#: background, with zero being no fade and one being full fade. You -#: can change the number of cells used by adding/removing entries to -#: this list. - -# tab_separator " ┇" - -#: The separator between tabs in the tab bar when using separator as -#: the tab_bar_style. - -# tab_title_template "{title}" - -#: A template to render the tab title. The default just renders the -#: title. If you wish to include the tab-index as well, use something -#: like: {index}: {title}. Useful if you have shortcuts mapped for -#: goto_tab N. In addition you can use {layout_name} for the current -#: layout name and {num_windows} for the number of windows in the tab. -#: Note that formatting is done by Python's string formatting -#: machinery, so you can use, for instance, {layout_name[:2].upper()} -#: to show only the first two letters of the layout name, upper-cased. - -# active_tab_title_template none - -#: Template to use for active tabs, if not specified falls back to -#: tab_title_template. - -# active_tab_foreground #000 -# active_tab_background #eee -# active_tab_font_style bold-italic -# inactive_tab_foreground #444 -# inactive_tab_background #999 -# inactive_tab_font_style normal - -#: Tab bar colors and styles - -# tab_bar_background none - -#: Background color for the tab bar. Defaults to using the terminal -#: background color. - -#: }}} - -#: Color scheme {{{ -# foreground #d8dee9 -# background #2e3440 - -#: The foreground and background colors - -# background_opacity 1.0 - -#: The opacity of the background. A number between 0 and 1, where 1 is -#: opaque and 0 is fully transparent. This will only work if -#: supported by the OS (for instance, when using a compositor under -#: X11). Note that it only sets the background color's opacity in -#: cells that have the same background color as the default terminal -#: background. This is so that things like the status bar in vim, -#: powerline prompts, etc. still look good. But it means that if you -#: use a color theme with a background color in your editor, it will -#: not be rendered as transparent. Instead you should change the -#: default background color in your kitty config and not use a -#: background color in the editor color scheme. Or use the escape -#: codes to set the terminals default colors in a shell script to -#: launch your editor. Be aware that using a value less than 1.0 is a -#: (possibly significant) performance hit. If you want to dynamically -#: change transparency of windows set dynamic_background_opacity to -#: yes (this is off by default as it has a performance cost) - -# background_image none - -#: Path to a background image. Must be in PNG format. - -# background_image_layout tiled - -#: Whether to tile or scale the background image. - -# background_image_linear no - -#: When background image is scaled, whether linear interpolation -#: should be used. - -# dynamic_background_opacity no - -#: Allow changing of the background_opacity dynamically, using either -#: keyboard shortcuts (increase_background_opacity and -#: decrease_background_opacity) or the remote control facility. - -# background_tint 0.0 - -#: How much to tint the background image by the background color. The -#: tint is applied only under the text area, not margin/borders. Makes -#: it easier to read the text. Tinting is done using the current -#: background color for each window. This setting applies only if -#: background_opacity is set and transparent windows are supported or -#: background_image is set. - -# dim_opacity 0.75 - -#: How much to dim text that has the DIM/FAINT attribute set. One -#: means no dimming and zero means fully dimmed (i.e. invisible). -# selection_foreground #000000 - -#: The foreground for text selected with the mouse. A value of none -#: means to leave the color unchanged. -# selection_background #fffacd - -#: The background for text selected with the mouse. - - -#: The 16 terminal colors. There are 8 basic colors, each color has a -#: dull and bright version. You can also set the remaining colors from -#: the 256 color table as color16 to color255. - -#: black -# color0 #3b4252 -# color8 #616e88 - -#: red -# color1 #bf616a -# color9 #bf616a - -#: green -# color2 #a3be8c -# color10 #a3be8c - -#: yellow -# color3 #ebcb8b -# color11 #ebcb8b - -#: blue -# color4 #81a1c1 -# color12 #81a1c1 - -#: magenta -# color5 #b48ead -# color13 #b48ead - -#: cyan -# color6 #88c0d0 -# color14 #8fbcbb - -#: white -# color7 #e5e9f0 -# color15 #eceff4 - -# mark1_foreground black - -#: Color for marks of type 1 - -# mark1_background #98d3cb - -#: Color for marks of type 1 (light steel blue) - -# mark2_foreground black - -#: Color for marks of type 2 - -# mark2_background #f2dcd3 - -#: Color for marks of type 1 (beige) - -# mark3_foreground black - -#: Color for marks of type 3 - -# mark3_background #f274bc - -#: Color for marks of type 1 (violet) - -#: }}} - -#: Advanced {{{ - -# shell . - -#: The shell program to execute. The default value of . means to use -#: whatever shell is set as the default shell for the current user. -#: Note that on macOS if you change this, you might need to add -#: --login to ensure that the shell starts in interactive mode and -#: reads its startup rc files. - -# editor . - -#: The console editor to use when editing the kitty config file or -#: similar tasks. A value of . means to use the environment variables -#: VISUAL and EDITOR in that order. Note that this environment -#: variable has to be set not just in your shell startup scripts but -#: system-wide, otherwise kitty will not see it. - -# close_on_child_death no - -#: Close the window when the child process (shell) exits. If no (the -#: default), the terminal will remain open when the child exits as -#: long as there are still processes outputting to the terminal (for -#: example disowned or backgrounded processes). If yes, the window -#: will close as soon as the child process exits. Note that setting it -#: to yes means that any background processes still using the terminal -#: can fail silently because their stdout/stderr/stdin no longer work. - -# allow_remote_control no - -#: Allow other programs to control kitty. If you turn this on other -#: programs can control all aspects of kitty, including sending text -#: to kitty windows, opening new windows, closing windows, reading the -#: content of windows, etc. Note that this even works over ssh -#: connections. You can chose to either allow any program running -#: within kitty to control it, with yes or only programs that connect -#: to the socket specified with the kitty --listen-on command line -#: option, if you use the value socket-only. The latter is useful if -#: you want to prevent programs running on a remote computer over ssh -#: from controlling kitty. - -# listen_on none - -#: Tell kitty to listen to the specified unix/tcp socket for remote -#: control connections. Note that this will apply to all kitty -#: instances. It can be overridden by the kitty --listen-on command -#: line flag. This option accepts only UNIX sockets, such as -#: unix:${TEMP}/mykitty or (on Linux) unix:@mykitty. Environment -#: variables are expanded. If {kitty_pid} is present then it is -#: replaced by the PID of the kitty process, otherwise the PID of the -#: kitty process is appended to the value, with a hyphen. This option -#: is ignored unless you also set allow_remote_control to enable -#: remote control. See the help for kitty --listen-on for more -#: details. - -# env - -#: Specify environment variables to set in all child processes. Note -#: that environment variables are expanded recursively, so if you -#: use:: - -#: env MYVAR1=a -#: env MYVAR2=${MYVAR1}/${HOME}/b - -#: The value of MYVAR2 will be a//b. - -# update_check_interval 24 - -#: Periodically check if an update to kitty is available. If an update -#: is found a system notification is displayed informing you of the -#: available update. The default is to check every 24 hrs, set to zero -#: to disable. - -# startup_session none - -#: Path to a session file to use for all kitty instances. Can be -#: overridden by using the kitty --session command line option for -#: individual instances. See -#: https://sw.kovidgoyal.net/kitty/index.html#sessions in the kitty -#: documentation for details. Note that relative paths are interpreted -#: with respect to the kitty config directory. Environment variables -#: in the path are expanded. - -# clipboard_control write-clipboard write-primary - -#: Allow programs running in kitty to read and write from the -#: clipboard. You can control exactly which actions are allowed. The -#: set of possible actions is: write-clipboard read-clipboard write- -#: primary read-primary. You can additionally specify no-append to -#: disable kitty's protocol extension for clipboard concatenation. The -#: default is to allow writing to the clipboard and primary selection -#: with concatenation enabled. Note that enabling the read -#: functionality is a security risk as it means that any program, even -#: one running on a remote server via SSH can read your clipboard. - -# term xterm-kitty - -#: The value of the TERM environment variable to set. Changing this -#: can break many terminal programs, only change it if you know what -#: you are doing, not because you read some advice on Stack Overflow -#: to change it. The TERM variable is used by various programs to get -#: information about the capabilities and behavior of the terminal. If -#: you change it, depending on what programs you run, and how -#: different the terminal you are changing it to is, various things -#: from key-presses, to colors, to various advanced features may not -#: work. - -#: }}} - -#: OS specific tweaks {{{ -# macos_titlebar_color #15202b - -#: Change the color of the kitty window's titlebar on macOS. A value -#: of system means to use the default system color, a value of -#: background means to use the background color of the currently -#: active window and finally you can use an arbitrary color, such as -#: #12af59 or red. WARNING: This option works by using a hack, as -#: there is no proper Cocoa API for it. It sets the background color -#: of the entire window and makes the titlebar transparent. As such it -#: is incompatible with background_opacity. If you want to use both, -#: you are probably better off just hiding the titlebar with -#: hide_window_decorations. - macos_option_as_alt yes -#: Use the option key as an alt key. With this set to no, kitty will -#: use the macOS native Option+Key = unicode character behavior. This -#: will break any Alt+key keyboard shortcuts in your terminal -#: programs, but you can use the macOS unicode input technique. You -#: can use the values: left, right, or both to use only the left, -#: right or both Option keys as Alt, instead. - -# macos_hide_from_tasks no - -#: Hide the kitty window from running tasks (Option+Tab) on macOS. - -# macos_quit_when_last_window_closed no - -#: Have kitty quit when all the top-level windows are closed. By -#: default, kitty will stay running, even with no open windows, as is -#: the expected behavior on macOS. - -# macos_window_resizable yes - -#: Disable this if you want kitty top-level (OS) windows to not be -#: resizable on macOS. - -# macos_thicken_font 0 - -#: Draw an extra border around the font with the given width, to -#: increase legibility at small font sizes. For example, a value of -#: 0.75 will result in rendering that looks similar to sub-pixel -#: antialiasing at common font sizes. - -# macos_traditional_fullscreen no - -#: Use the traditional full-screen transition, that is faster, but -#: less pretty. - -# macos_show_window_title_in all - -#: Show or hide the window title in the macOS window or menu-bar. A -#: value of window will show the title of the currently active window -#: at the top of the macOS window. A value of menubar will show the -#: title of the currently active window in the macOS menu-bar, making -#: use of otherwise wasted space. all will show the title everywhere -#: and none hides the title in the window and the menu-bar. - -# macos_custom_beam_cursor no - -#: Enable/disable custom mouse cursor for macOS that is easier to see -#: on both light and dark backgrounds. WARNING: this might make your -#: mouse cursor invisible on dual GPU machines. - -# linux_display_server auto - -#: Choose between Wayland and X11 backends. By default, an appropriate -#: backend based on the system state is chosen automatically. Set it -#: to x11 or wayland to force the choice. - -#: }}} - -#: Keyboard shortcuts {{{ - -#: For a list of key names, see: the GLFW key macros -#: . -#: The name to use is the part after the GLFW_KEY_ prefix. For a list -#: of modifier names, see: GLFW mods -#: - -#: On Linux you can also use XKB key names to bind keys that are not -#: supported by GLFW. See XKB keys -#: for a list of key names. The name to use is the part -#: after the XKB_KEY_ prefix. Note that you can only use an XKB key -#: name for keys that are not known as GLFW keys. - -#: Finally, you can use raw system key codes to map keys, again only -#: for keys that are not known as GLFW keys. To see the system key -#: code for a key, start kitty with the kitty --debug-keyboard option. -#: Then kitty will output some debug text for every key event. In that -#: text look for ``native_code`` the value of that becomes the key -#: name in the shortcut. For example: - -#: .. code-block:: none - -#: on_key_input: glfw key: 65 native_code: 0x61 action: PRESS mods: 0x0 text: 'a' - -#: Here, the key name for the A key is 0x61 and you can use it with:: - -#: map ctrl+0x61 something - -#: to map ctrl+a to something. - -#: You can use the special action no_op to unmap a keyboard shortcut -#: that is assigned in the default configuration:: - -#: map kitty_mod+space no_op - -#: You can combine multiple actions to be triggered by a single -#: shortcut, using the syntax below:: - -#: map key combine action1 action2 action3 ... - -#: For example:: - -#: map kitty_mod+e combine : new_window : next_layout - -#: this will create a new window and switch to the next available -#: layout - -#: You can use multi-key shortcuts using the syntax shown below:: - -#: map key1>key2>key3 action - -#: For example:: - -#: map ctrl+f>2 set_font_size 20 - -# kitty_mod ctrl+shift - -#: The value of kitty_mod is used as the modifier for all default -#: shortcuts, you can change it in your kitty.conf to change the -#: modifiers for all the default shortcuts. - -# clear_all_shortcuts no - -#: You can have kitty remove all shortcut definition seen up to this -#: point. Useful, for instance, to remove the default shortcuts. - -# kitten_alias hints hints --hints-offset=0 - -#: You can create aliases for kitten names, this allows overriding the -#: defaults for kitten options and can also be used to shorten -#: repeated mappings of the same kitten with a specific group of -#: options. For example, the above alias changes the default value of -#: kitty +kitten hints --hints-offset to zero for all mappings, -#: including the builtin ones. - -#: Clipboard {{{ - -# map kitty_mod+c copy_to_clipboard - -#: There is also a copy_or_interrupt action that can be optionally -#: mapped to Ctrl+c. It will copy only if there is a selection and -#: send an interrupt otherwise. Similarly, copy_and_clear_or_interrupt -#: will copy and clear the selection or send an interrupt if there is -#: no selection. - -# map cmd+c copy_to_clipboard -# map kitty_mod+v paste_from_clipboard -# map cmd+v paste_from_clipboard -# map kitty_mod+s paste_from_selection -# map shift+insert paste_from_selection -# map kitty_mod+o pass_selection_to_program - -#: You can also pass the contents of the current selection to any -#: program using pass_selection_to_program. By default, the system's -#: open program is used, but you can specify your own, the selection -#: will be passed as a command line argument to the program, for -#: example:: - -#: map kitty_mod+o pass_selection_to_program firefox - -#: You can pass the current selection to a terminal program running in -#: a new kitty window, by using the @selection placeholder:: - -#: map kitty_mod+y new_window less @selection - -#: }}} - -#: Scrolling {{{ - -# map kitty_mod+up scroll_line_up -# map alt+cmd+page_up scroll_line_up -# map cmd+up scroll_line_up -# map kitty_mod+k scroll_line_up -# map kitty_mod+down scroll_line_down -# map kitty_mod+j scroll_line_down -# map alt+cmd+page_down scroll_line_down -# map cmd+down scroll_line_down -# map kitty_mod+page_up scroll_page_up -# map cmd+page_up scroll_page_up -# map kitty_mod+page_down scroll_page_down -# map cmd+page_down scroll_page_down -# map kitty_mod+home scroll_home -# map cmd+home scroll_home -# map kitty_mod+end scroll_end -# map cmd+end scroll_end -# map kitty_mod+h show_scrollback - -#: You can pipe the contents of the current screen + history buffer as -#: STDIN to an arbitrary program using the ``launch`` function. For -#: example, the following opens the scrollback buffer in less in an -#: overlay window:: - -#: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R - -#: For more details on piping screen and buffer contents to external -#: programs, see launch. - -#: }}} - -#: Window management {{{ - -# map kitty_mod+enter new_window - -#: You can open a new window running an arbitrary program, for -#: example:: - -#: map kitty_mod+y launch mutt - -#: You can open a new window with the current working directory set to -#: the working directory of the current window using:: - map ctrl+shift+enter launch --cwd=current - -#: You can open a new window that is allowed to control kitty via the -#: kitty remote control facility by prefixing the command line with @. -#: Any programs running in that window will be allowed to control -#: kitty. For example:: - -#: map ctrl+enter launch --allow-remote-control some_program - -#: You can open a new window next to the currently active window or as -#: the first window, with:: - -#: map ctrl+n launch --location=neighbor some_program -#: map ctrl+f launch --location=first some_program - -#: For more details, see launch. - -# map cmd+enter new_window -# map kitty_mod+n new_os_window - -#: Works like new_window above, except that it opens a top level OS -#: kitty window. In particular you can use new_os_window_with_cwd to -#: open a window with the current working directory. - -# map cmd+n new_os_window -# map kitty_mod+w close_window -# map shift+cmd+d close_window -# map kitty_mod+] next_window -# map kitty_mod+[ previous_window -# map kitty_mod+f move_window_forward -# map kitty_mod+b move_window_backward -# map kitty_mod+` move_window_to_top -# map kitty_mod+r start_resizing_window -# map cmd+r start_resizing_window -# map kitty_mod+1 first_window -# map cmd+1 first_window -# map kitty_mod+2 second_window -# map cmd+2 second_window -# map kitty_mod+3 third_window -# map cmd+3 third_window -# map kitty_mod+4 fourth_window -# map cmd+4 fourth_window -# map kitty_mod+5 fifth_window -# map cmd+5 fifth_window -# map kitty_mod+6 sixth_window -# map cmd+6 sixth_window -# map kitty_mod+7 seventh_window -# map cmd+7 seventh_window -# map kitty_mod+8 eighth_window -# map cmd+8 eighth_window -# map kitty_mod+9 ninth_window -# map cmd+9 ninth_window -# map kitty_mod+0 tenth_window -#: }}} - -#: Tab management {{{ - -# map kitty_mod+right next_tab -# map ctrl+tab next_tab -# map shift+cmd+] next_tab -# map kitty_mod+left previous_tab -# map shift+ctrl+tab previous_tab -# map shift+cmd+[ previous_tab -# map kitty_mod+t new_tab -# map cmd+t new_tab -# map kitty_mod+q close_tab -# map cmd+w close_tab -# map shift+cmd+w close_os_window -# map kitty_mod+. move_tab_forward -# map kitty_mod+, move_tab_backward -# map kitty_mod+alt+t set_tab_title -# map shift+cmd+i set_tab_title - -#: You can also create shortcuts to go to specific tabs, with 1 being -#: the first tab, 2 the second tab and -1 being the previously active -#: tab, and any number larger than the last tab being the last tab:: - -#: map ctrl+alt+1 goto_tab 1 -#: map ctrl+alt+2 goto_tab 2 - -#: Just as with new_window above, you can also pass the name of -#: arbitrary commands to run when using new_tab and use -#: new_tab_with_cwd. Finally, if you want the new tab to open next to -#: the current tab rather than at the end of the tabs list, use:: - -#: map ctrl+t new_tab !neighbor [optional cmd to run] -#: }}} - -#: Layout management {{{ - -# map kitty_mod+l next_layout map kitty_mod+x toggle_layout stack - -#: You can also create shortcuts to switch to specific layouts:: - -#: map ctrl+alt+t goto_layout tall -#: map ctrl+alt+s goto_layout stack - -#: Similarly, to switch back to the previous layout:: - -#: map ctrl+alt+p last_used_layout - map ctrl+shift+n resize_window narrower map ctrl+shift+w resize_window wider map ctrl+shift+t resize_window taller map ctrl+shift+s resize_window shorter 3 -#: }}} - -#: Font sizes {{{ - -#: You can change the font size for all top-level kitty OS windows at -#: a time or only the current one. - -# map kitty_mod+equal change_font_size all +2.0 -# map cmd+plus change_font_size all +2.0 -# map cmd+shift+equal change_font_size all +2.0 -# map kitty_mod+minus change_font_size all -2.0 -# map cmd+minus change_font_size all -2.0 -# map kitty_mod+backspace change_font_size all 0 -# map cmd+0 change_font_size all 0 - -#: To setup shortcuts for specific font sizes:: - -#: map kitty_mod+f6 change_font_size all 10.0 - -#: To setup shortcuts to change only the current OS window's font -#: size:: - -#: map kitty_mod+f6 change_font_size current 10.0 -#: }}} - -#: Select and act on visible text {{{ - -#: Use the hints kitten to select text and either pass it to an -#: external program or insert it into the terminal or copy it to the -#: clipboard. - -# map kitty_mod+e kitten hints - -#: Open a currently visible URL using the keyboard. The program used -#: to open the URL is specified in open_url_with. - -# map kitty_mod+p>f kitten hints --type path --program - - -#: Select a path/filename and insert it into the terminal. Useful, for -#: instance to run git commands on a filename output from a previous -#: git command. - -# map kitty_mod+p>shift+f kitten hints --type path - -#: Select a path/filename and open it with the default open program. - -# map kitty_mod+p>l kitten hints --type line --program - - -#: Select a line of text and insert it into the terminal. Use for the -#: output of things like: ls -1 - -# map kitty_mod+p>w kitten hints --type word --program - - -#: Select words and insert into terminal. - -# map kitty_mod+p>h kitten hints --type hash --program - - -#: Select something that looks like a hash and insert it into the -#: terminal. Useful with git, which uses sha1 hashes to identify -#: commits - -# map kitty_mod+p>n kitten hints --type linenum - -#: Select something that looks like filename:linenum and open it in -#: vim at the specified line number. - - -#: The hints kitten has many more modes of operation that you can map -#: to different shortcuts. For a full description see kittens/hints. -#: }}} - -#: Miscellaneous {{{ - -# map kitty_mod+f11 toggle_fullscreen -# map kitty_mod+f10 toggle_maximized -# map kitty_mod+u kitten unicode_input -# map kitty_mod+f2 edit_config_file -# map kitty_mod+escape kitty_shell window - -#: Open the kitty shell in a new window/tab/overlay/os_window to -#: control kitty using commands. - -# map kitty_mod+a>m set_background_opacity +0.1 -# map kitty_mod+a>l set_background_opacity -0.1 -# map kitty_mod+a>1 set_background_opacity 1 -# map kitty_mod+a>d set_background_opacity default -# map kitty_mod+delete clear_terminal reset active - -#: You can create shortcuts to clear/reset the terminal. For example:: - -#: # Reset the terminal -#: map kitty_mod+f9 clear_terminal reset active -#: # Clear the terminal screen by erasing all contents -#: map kitty_mod+f10 clear_terminal clear active -#: # Clear the terminal scrollback by erasing it -#: map kitty_mod+f11 clear_terminal scrollback active -#: # Scroll the contents of the screen into the scrollback -#: map kitty_mod+f12 clear_terminal scroll active - -#: If you want to operate on all windows instead of just the current -#: one, use all instead of active. - -#: It is also possible to remap Ctrl+L to both scroll the current -#: screen contents into the scrollback buffer and clear the screen, -#: instead of just clearing the screen:: - -#: map ctrl+l combine : clear_terminal scroll active : send_text normal,application \x0c - - -#: You can tell kitty to send arbitrary (UTF-8) encoded text to the -#: client program when pressing specified shortcut keys. For example:: - -#: map ctrl+alt+a send_text all Special text - -#: This will send "Special text" when you press the ctrl+alt+a key -#: combination. The text to be sent is a python string literal so you -#: can use escapes like \x1b to send control codes or \u21fb to send -#: unicode characters (or you can just input the unicode characters -#: directly as UTF-8 text). The first argument to send_text is the -#: keyboard modes in which to activate the shortcut. The possible -#: values are normal or application or kitty or a comma separated -#: combination of them. The special keyword all means all modes. The -#: modes normal and application refer to the DECCKM cursor key mode -#: for terminals, and kitty refers to the special kitty extended -#: keyboard protocol. - -#: Another example, that outputs a word and then moves the cursor to -#: the start of the line (same as pressing the Home key):: - -#: map ctrl+alt+a send_text normal Word\x1b[H -#: map ctrl+alt+a send_text application Word\x1bOH - -#: }}} - -# }}} - -# BEGIN_KITTY_THEME -# Catppuccin-Mocha include current-theme.conf -# END_KITTY_THEME From f84f3c120c148f868e685f5deaccac2cec697373 Mon Sep 17 00:00:00 2001 From: Doan Thieu Date: Fri, 15 May 2026 21:39:44 +0700 Subject: [PATCH 03/18] Remove public personal metadata --- .chezmoiignore | 1 - README.md | 10 +- dot_gitconfig | 5 +- stow-legacy/fish/.config/fish/config.fish | 9 - stow-legacy/fish/.config/fish/fish_variables | 45 - .../.config/fish/functions/fish_prompt.fish | 90 - .../functions/fish_user_key_bindings.fish | 3 - .../fish/themes/Catppuccin Frappe.theme | 30 - .../fish/themes/Catppuccin Latte.theme | 30 - .../fish/themes/Catppuccin Macchiato.theme | 30 - .../fish/themes/Catppuccin Mocha.theme | 30 - stow-legacy/git/.gitconfig | 19 - .../complex_modifications/1597572871.json | 10784 ---------------- .../complex_modifications/1597574790.json | 3609 ------ .../complex_modifications/1597576542.json | 78 - .../complex_modifications/1655107459.json | 83 - stow-legacy/karabiner/karabiner.json | 7898 ----------- stow-legacy/kitty/.config/kitty/kitty.conf | 1294 -- stow-legacy/nvim/.config/nvim/init.lua | 21 - .../nvim/.config/nvim/lua/user/alpha.lua | 42 - .../.config/nvim/lua/user/autocommands.lua | 2 - .../nvim/.config/nvim/lua/user/autopairs.lua | 8 - .../nvim/.config/nvim/lua/user/bufferline.lua | 13 - .../nvim/.config/nvim/lua/user/cmp.lua | 129 - .../.config/nvim/lua/user/colorscheme.lua | 6 - .../nvim/.config/nvim/lua/user/comment.lua | 8 - .../nvim/.config/nvim/lua/user/gitsigns.lua | 36 - .../nvim/.config/nvim/lua/user/keymaps.lua | 56 - .../.config/nvim/lua/user/lsp/handlers.lua | 77 - .../nvim/.config/nvim/lua/user/lsp/init.lua | 8 - .../nvim/.config/nvim/lua/user/lsp/mason.lua | 47 - .../.config/nvim/lua/user/lsp/null-ls.lua | 19 - .../nvim/lua/user/lsp/settings/pyright.lua | 9 - .../nvim/.config/nvim/lua/user/lualine.lua | 73 - .../nvim/.config/nvim/lua/user/nvim-dap.lua | 65 - .../nvim/.config/nvim/lua/user/nvim-dapui.lua | 83 - .../nvim/.config/nvim/lua/user/nvim-tree.lua | 6 - .../nvim/.config/nvim/lua/user/options.lua | 15 - .../nvim/.config/nvim/lua/user/plugins.lua | 100 - .../nvim/.config/nvim/lua/user/telescope.lua | 26 - .../nvim/.config/nvim/lua/user/toggleterm.lua | 39 - .../nvim/.config/nvim/lua/user/treesitter.lua | 30 - .../nvim/.config/nvim/lua/user/which-key.lua | 6 - .../nvim/.config/nvim/lua/user/xcodebuild.lua | 6 - stow-legacy/vim/.vimrc | 264 - 45 files changed, 11 insertions(+), 25231 deletions(-) delete mode 100644 stow-legacy/fish/.config/fish/config.fish delete mode 100644 stow-legacy/fish/.config/fish/fish_variables delete mode 100644 stow-legacy/fish/.config/fish/functions/fish_prompt.fish delete mode 100644 stow-legacy/fish/.config/fish/functions/fish_user_key_bindings.fish delete mode 100644 stow-legacy/fish/.config/fish/themes/Catppuccin Frappe.theme delete mode 100644 stow-legacy/fish/.config/fish/themes/Catppuccin Latte.theme delete mode 100644 stow-legacy/fish/.config/fish/themes/Catppuccin Macchiato.theme delete mode 100644 stow-legacy/fish/.config/fish/themes/Catppuccin Mocha.theme delete mode 100644 stow-legacy/git/.gitconfig delete mode 100644 stow-legacy/karabiner/assets/complex_modifications/1597572871.json delete mode 100644 stow-legacy/karabiner/assets/complex_modifications/1597574790.json delete mode 100644 stow-legacy/karabiner/assets/complex_modifications/1597576542.json delete mode 100644 stow-legacy/karabiner/assets/complex_modifications/1655107459.json delete mode 100644 stow-legacy/karabiner/karabiner.json delete mode 100644 stow-legacy/kitty/.config/kitty/kitty.conf delete mode 100644 stow-legacy/nvim/.config/nvim/init.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/alpha.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/autocommands.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/autopairs.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/bufferline.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/cmp.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/colorscheme.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/comment.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/gitsigns.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/keymaps.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/lsp/handlers.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/lsp/init.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/lsp/mason.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/lsp/null-ls.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/lsp/settings/pyright.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/lualine.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/nvim-dap.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/nvim-dapui.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/nvim-tree.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/options.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/plugins.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/telescope.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/toggleterm.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/treesitter.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/which-key.lua delete mode 100644 stow-legacy/nvim/.config/nvim/lua/user/xcodebuild.lua delete mode 100644 stow-legacy/vim/.vimrc diff --git a/.chezmoiignore b/.chezmoiignore index ab7ebaf..73d52b6 100644 --- a/.chezmoiignore +++ b/.chezmoiignore @@ -1,4 +1,3 @@ README.md .gitignore .DS_Store -stow-legacy/** diff --git a/README.md b/README.md index 9fff972..4363097 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,15 @@ chezmoi --source "$PWD" apply - `dot_gitconfig` -> `~/.gitconfig` - `private_dot_config/` -> `~/.config/` -- `stow-legacy/` keeps the previous GNU Stow package layout for review. + +Git identity is intentionally kept out of the public repository. Put local +identity in `~/.gitconfig.local`, for example: + +```ini +[user] + name = Your Name + email = you@example.com +``` Generated and local-only files are intentionally not managed, including Neovim compiled packer output, `.DS_Store`, Kitty backups, and Karabiner automatic diff --git a/dot_gitconfig b/dot_gitconfig index e7b5581..203b4de 100644 --- a/dot_gitconfig +++ b/dot_gitconfig @@ -3,12 +3,11 @@ smudge = git-lfs smudge -- %f process = git-lfs filter-process required = true -[user] - name = Doan Thieu - email = thieurom@gmail.com [core] editor = nvim pager = delta +[include] + path = ~/.gitconfig.local [init] defaultBranch = main [alias] diff --git a/stow-legacy/fish/.config/fish/config.fish b/stow-legacy/fish/.config/fish/config.fish deleted file mode 100644 index 521003a..0000000 --- a/stow-legacy/fish/.config/fish/config.fish +++ /dev/null @@ -1,9 +0,0 @@ -if status is-interactive - # Commands to run in interactive sessions can go here -end - -set -Ux EDITOR nvim -alias vi="nvim" -alias vim="nvim" -alias view="nvim -R" -alias vimdiff="nvim -d" diff --git a/stow-legacy/fish/.config/fish/fish_variables b/stow-legacy/fish/.config/fish/fish_variables deleted file mode 100644 index c6e17db..0000000 --- a/stow-legacy/fish/.config/fish/fish_variables +++ /dev/null @@ -1,45 +0,0 @@ -# This file contains fish universal variable definitions. -# VERSION: 3.0 -SETUVAR --export EDITOR:nvim -SETUVAR __fish_initialized:3800 -SETUVAR fish_color_autosuggestion:6c7086 -SETUVAR fish_color_cancel:f38ba8 -SETUVAR fish_color_command:89b4fa -SETUVAR fish_color_comment:7f849c -SETUVAR fish_color_cwd:f9e2af -SETUVAR fish_color_cwd_root:red -SETUVAR fish_color_end:fab387 -SETUVAR fish_color_error:f38ba8 -SETUVAR fish_color_escape:eba0ac -SETUVAR fish_color_gray:6c7086 -SETUVAR fish_color_history_current:\x2d\x2dbold -SETUVAR fish_color_host:89b4fa -SETUVAR fish_color_host_remote:a6e3a1 -SETUVAR fish_color_keyword:f38ba8 -SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue -SETUVAR fish_color_normal:cdd6f4 -SETUVAR fish_color_operator:f5c2e7 -SETUVAR fish_color_option:a6e3a1 -SETUVAR fish_color_param:f2cdcd -SETUVAR fish_color_quote:a6e3a1 -SETUVAR fish_color_redirection:f5c2e7 -SETUVAR fish_color_search_match:\x2d\x2dbackground\x3d313244 -SETUVAR fish_color_selection:\x2d\x2dbackground\x3d313244 -SETUVAR fish_color_status:f38ba8 -SETUVAR fish_color_user:94e2d5 -SETUVAR fish_color_valid_path:\x2d\x2dunderline -SETUVAR fish_key_bindings:fish_default_key_bindings -SETUVAR fish_pager_color_background:\x1d -SETUVAR fish_pager_color_completion:cdd6f4 -SETUVAR fish_pager_color_description:6c7086 -SETUVAR fish_pager_color_prefix:f5c2e7 -SETUVAR fish_pager_color_progress:6c7086 -SETUVAR fish_pager_color_secondary_background:\x1d -SETUVAR fish_pager_color_secondary_completion:\x1d -SETUVAR fish_pager_color_secondary_description:\x1d -SETUVAR fish_pager_color_secondary_prefix:\x1d -SETUVAR fish_pager_color_selected_background:\x1d -SETUVAR fish_pager_color_selected_completion:\x1d -SETUVAR fish_pager_color_selected_description:\x1d -SETUVAR fish_pager_color_selected_prefix:\x1d -SETUVAR fish_user_paths:/Users/doanthieu/\x2easdf/shims\x1e/opt/homebrew/opt/asdf/libexec/bin\x1e/opt/homebrew/bin diff --git a/stow-legacy/fish/.config/fish/functions/fish_prompt.fish b/stow-legacy/fish/.config/fish/functions/fish_prompt.fish deleted file mode 100644 index 8b1d19c..0000000 --- a/stow-legacy/fish/.config/fish/functions/fish_prompt.fish +++ /dev/null @@ -1,90 +0,0 @@ -function fish_prompt - set -l __last_command_exit_status $status - - if not set -q -g __fish_arrow_functions_defined - set -g __fish_arrow_functions_defined - function _git_branch_name - set -l branch (git symbolic-ref --quiet HEAD 2>/dev/null) - if set -q branch[1] - echo (string replace -r '^refs/heads/' '' $branch) - else - echo (git rev-parse --short HEAD 2>/dev/null) - end - end - - function _is_git_dirty - not command git diff-index --cached --quiet HEAD -- &>/dev/null - or not command git diff --no-ext-diff --quiet --exit-code &>/dev/null - end - - function _is_git_repo - type -q git - or return 1 - git rev-parse --git-dir >/dev/null 2>&1 - end - - function _hg_branch_name - echo (hg branch 2>/dev/null) - end - - function _is_hg_dirty - set -l stat (hg status -mard 2>/dev/null) - test -n "$stat" - end - - function _is_hg_repo - fish_print_hg_root >/dev/null - end - - function _repo_branch_name - _$argv[1]_branch_name - end - - function _is_repo_dirty - _is_$argv[1]_dirty - end - - function _repo_type - if _is_hg_repo - echo hg - return 0 - else if _is_git_repo - echo git - return 0 - end - return 1 - end - end - - set -l cyan (set_color -o cyan) - set -l yellow (set_color -o yellow) - set -l red (set_color -o red) - set -l green (set_color -o green) - set -l blue (set_color -o blue) - set -l normal (set_color normal) - - set -l arrow_color "$green" - if test $__last_command_exit_status != 0 - set arrow_color "$red" - end - - set -l arrow "$arrow_color➜ " - if fish_is_root_user - set arrow "$arrow_color# " - end - - set -l cwd $cyan(basename (prompt_pwd)) - - set -l repo_info - if set -l repo_type (_repo_type) - set -l repo_branch $red(_repo_branch_name $repo_type) - set repo_info "$blue $repo_type:($repo_branch$blue)" - - if _is_repo_dirty $repo_type - set -l dirty "$yellow ✗" - set repo_info "$repo_info$dirty" - end - end - - echo -n -s $arrow ' '$cwd $repo_info $normal ' ' -end diff --git a/stow-legacy/fish/.config/fish/functions/fish_user_key_bindings.fish b/stow-legacy/fish/.config/fish/functions/fish_user_key_bindings.fish deleted file mode 100644 index 18b4fc9..0000000 --- a/stow-legacy/fish/.config/fish/functions/fish_user_key_bindings.fish +++ /dev/null @@ -1,3 +0,0 @@ -function fish_user_key_bindings - fzf --fish | source -end diff --git a/stow-legacy/fish/.config/fish/themes/Catppuccin Frappe.theme b/stow-legacy/fish/.config/fish/themes/Catppuccin Frappe.theme deleted file mode 100644 index b4c1994..0000000 --- a/stow-legacy/fish/.config/fish/themes/Catppuccin Frappe.theme +++ /dev/null @@ -1,30 +0,0 @@ -# name: 'Catppuccin Frappé' -# url: 'https://github.com/catppuccin/fish' -# preferred_background: 303446 - -fish_color_normal c6d0f5 -fish_color_command 8caaee -fish_color_param eebebe -fish_color_keyword e78284 -fish_color_quote a6d189 -fish_color_redirection f4b8e4 -fish_color_end ef9f76 -fish_color_comment 838ba7 -fish_color_error e78284 -fish_color_gray 737994 -fish_color_selection --background=414559 -fish_color_search_match --background=414559 -fish_color_option a6d189 -fish_color_operator f4b8e4 -fish_color_escape ea999c -fish_color_autosuggestion 737994 -fish_color_cancel e78284 -fish_color_cwd e5c890 -fish_color_user 81c8be -fish_color_host 8caaee -fish_color_host_remote a6d189 -fish_color_status e78284 -fish_pager_color_progress 737994 -fish_pager_color_prefix f4b8e4 -fish_pager_color_completion c6d0f5 -fish_pager_color_description 737994 \ No newline at end of file diff --git a/stow-legacy/fish/.config/fish/themes/Catppuccin Latte.theme b/stow-legacy/fish/.config/fish/themes/Catppuccin Latte.theme deleted file mode 100644 index 002dace..0000000 --- a/stow-legacy/fish/.config/fish/themes/Catppuccin Latte.theme +++ /dev/null @@ -1,30 +0,0 @@ -# name: 'Catppuccin Latte' -# url: 'https://github.com/catppuccin/fish' -# preferred_background: eff1f5 - -fish_color_normal 4c4f69 -fish_color_command 1e66f5 -fish_color_param dd7878 -fish_color_keyword d20f39 -fish_color_quote 40a02b -fish_color_redirection ea76cb -fish_color_end fe640b -fish_color_comment 8c8fa1 -fish_color_error d20f39 -fish_color_gray 9ca0b0 -fish_color_selection --background=ccd0da -fish_color_search_match --background=ccd0da -fish_color_option 40a02b -fish_color_operator ea76cb -fish_color_escape e64553 -fish_color_autosuggestion 9ca0b0 -fish_color_cancel d20f39 -fish_color_cwd df8e1d -fish_color_user 179299 -fish_color_host 1e66f5 -fish_color_host_remote 40a02b -fish_color_status d20f39 -fish_pager_color_progress 9ca0b0 -fish_pager_color_prefix ea76cb -fish_pager_color_completion 4c4f69 -fish_pager_color_description 9ca0b0 \ No newline at end of file diff --git a/stow-legacy/fish/.config/fish/themes/Catppuccin Macchiato.theme b/stow-legacy/fish/.config/fish/themes/Catppuccin Macchiato.theme deleted file mode 100644 index c8be912..0000000 --- a/stow-legacy/fish/.config/fish/themes/Catppuccin Macchiato.theme +++ /dev/null @@ -1,30 +0,0 @@ -# name: 'Catppuccin Macchiato' -# url: 'https://github.com/catppuccin/fish' -# preferred_background: 24273a - -fish_color_normal cad3f5 -fish_color_command 8aadf4 -fish_color_param f0c6c6 -fish_color_keyword ed8796 -fish_color_quote a6da95 -fish_color_redirection f5bde6 -fish_color_end f5a97f -fish_color_comment 8087a2 -fish_color_error ed8796 -fish_color_gray 6e738d -fish_color_selection --background=363a4f -fish_color_search_match --background=363a4f -fish_color_option a6da95 -fish_color_operator f5bde6 -fish_color_escape ee99a0 -fish_color_autosuggestion 6e738d -fish_color_cancel ed8796 -fish_color_cwd eed49f -fish_color_user 8bd5ca -fish_color_host 8aadf4 -fish_color_host_remote a6da95 -fish_color_status ed8796 -fish_pager_color_progress 6e738d -fish_pager_color_prefix f5bde6 -fish_pager_color_completion cad3f5 -fish_pager_color_description 6e738d \ No newline at end of file diff --git a/stow-legacy/fish/.config/fish/themes/Catppuccin Mocha.theme b/stow-legacy/fish/.config/fish/themes/Catppuccin Mocha.theme deleted file mode 100644 index 892a000..0000000 --- a/stow-legacy/fish/.config/fish/themes/Catppuccin Mocha.theme +++ /dev/null @@ -1,30 +0,0 @@ -# name: 'Catppuccin Mocha' -# url: 'https://github.com/catppuccin/fish' -# preferred_background: 1e1e2e - -fish_color_normal cdd6f4 -fish_color_command 89b4fa -fish_color_param f2cdcd -fish_color_keyword f38ba8 -fish_color_quote a6e3a1 -fish_color_redirection f5c2e7 -fish_color_end fab387 -fish_color_comment 7f849c -fish_color_error f38ba8 -fish_color_gray 6c7086 -fish_color_selection --background=313244 -fish_color_search_match --background=313244 -fish_color_option a6e3a1 -fish_color_operator f5c2e7 -fish_color_escape eba0ac -fish_color_autosuggestion 6c7086 -fish_color_cancel f38ba8 -fish_color_cwd f9e2af -fish_color_user 94e2d5 -fish_color_host 89b4fa -fish_color_host_remote a6e3a1 -fish_color_status f38ba8 -fish_pager_color_progress 6c7086 -fish_pager_color_prefix f5c2e7 -fish_pager_color_completion cdd6f4 -fish_pager_color_description 6c7086 \ No newline at end of file diff --git a/stow-legacy/git/.gitconfig b/stow-legacy/git/.gitconfig deleted file mode 100644 index 5481c5d..0000000 --- a/stow-legacy/git/.gitconfig +++ /dev/null @@ -1,19 +0,0 @@ -[core] - pager = delta -[delta] - syntax-theme = Nord - plus-color = "#a3be8c" - minus-color = "#bf616a" - line-numbers = true -[user] - name = Doan Le Thieu - email = thieurom@gmail.com -[alias] - ll = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit -[filter "lfs"] - process = git-lfs filter-process - required = true - clean = git-lfs clean -- %f - smudge = git-lfs smudge -- %f -[init] - defaultBranch = main diff --git a/stow-legacy/karabiner/assets/complex_modifications/1597572871.json b/stow-legacy/karabiner/assets/complex_modifications/1597572871.json deleted file mode 100644 index 6004eff..0000000 --- a/stow-legacy/karabiner/assets/complex_modifications/1597572871.json +++ /dev/null @@ -1,10784 +0,0 @@ -{ - "title": "Colemak Mod-DH Keyboard (ANSI)", - "rules": [ - { - "description": "Colemak Mod-DH Standard (ANSI)", - "manipulators": [ - { - "type": "basic", - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "1", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "2", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "4", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "5", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "6", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "7", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "8", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "9", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "0", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "hyphen", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "equal_sign", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "q", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "w", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "e", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "r", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "t", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "y", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "u", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "i", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "o", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "p", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "open_bracket", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "close_bracket", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "backslash", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "a", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "s", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "d", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "f", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "g", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "h", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "j", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "k", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "l", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "semicolon", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "quote", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "z", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "x", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "c", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "v", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "b", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "n", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "m", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "comma", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "period", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "slash", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "1", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "2", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "4", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "5", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "6", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "7", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "8", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "9", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "0", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "hyphen", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "equal_sign", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "q", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "w", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "e", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "r", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "t", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "y", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "u", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "i", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "o", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "p", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "open_bracket", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "close_bracket", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "backslash", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "a", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "s", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "d", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "f", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "g", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "h", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "j", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "k", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "l", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "semicolon", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "quote", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "z", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "x", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "c", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "v", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "b", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "n", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "m", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "comma", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "period", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "slash", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "1", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "2", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "4", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "5", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "6", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "7", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "8", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "9", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "0", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "hyphen", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "equal_sign", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "q", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "w", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "e", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "r", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "t", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "y", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "u", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "i", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "o", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "p", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "open_bracket", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "close_bracket", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "backslash", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "a", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "s", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "d", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "f", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "g", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "h", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "j", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "k", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "l", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "semicolon", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "quote", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "z", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "x", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "c", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "v", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "b", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "n", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "m", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "comma", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "period", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "slash", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash", - "modifiers": [ - "right_shift" - ] - } - ] - } - ] - }, - { - "description": "Colemak Mod-DH Wide (ANSI)", - "manipulators": [ - { - "type": "basic", - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "1", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "2", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "4", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "5", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "6", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "7", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "8", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "9", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "0", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "hyphen", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "equal_sign", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "q", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "w", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "e", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "r", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "t", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "y", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "u", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "i", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "o", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "p", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "open_bracket", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "close_bracket", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "backslash", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "a", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "s", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "d", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "f", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "g", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "h", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "j", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "k", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "l", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "semicolon", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "quote", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "z", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "x", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "c", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "v", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "b", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "n", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "m", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "comma", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "period", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "slash", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "1", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "2", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "4", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "5", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "6", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "7", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "8", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "9", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "0", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "hyphen", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "equal_sign", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "q", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "w", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "e", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "r", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "t", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "y", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "u", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "i", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "o", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "p", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "open_bracket", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "close_bracket", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "backslash", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "a", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "s", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "d", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "f", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "g", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "h", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "j", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "k", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "l", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "semicolon", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "quote", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "z", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "x", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "c", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "v", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "b", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "n", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "m", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "comma", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "period", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "slash", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "1", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "2", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "4", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "5", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "6", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "7", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "8", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "9", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "0", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "hyphen", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "equal_sign", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "q", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "w", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "e", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "r", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "t", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "y", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "u", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "i", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "o", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "p", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "open_bracket", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "close_bracket", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "backslash", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "a", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "s", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "d", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "f", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "g", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "h", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "j", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "k", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "l", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "semicolon", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "quote", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "z", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "x", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "c", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "v", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "b", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "n", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "m", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "comma", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "period", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "slash", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period", - "modifiers": [ - "right_shift" - ] - } - ] - } - ] - }, - { - "description": "Colemak Mod-DH Alt-Home (ANSI)", - "manipulators": [ - { - "type": "basic", - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "1", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "2", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "4", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "5", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "6", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "7", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "8", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "9", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "0", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "hyphen", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "equal_sign", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "q", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "w", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "e", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "r", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "t", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "y", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "u", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "i", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "o", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "p", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "open_bracket", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "close_bracket", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "backslash", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "a", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "s", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "d", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "f", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "g", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "h", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "j", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "k", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "l", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "semicolon", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "quote", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "z", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "x", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "c", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "v", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "b", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "n", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "m", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "comma", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "period", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "slash", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "1", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "2", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "4", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "5", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "6", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "7", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "8", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "9", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "0", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "hyphen", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "equal_sign", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "q", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "w", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "e", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "r", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "t", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "y", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "u", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "i", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "o", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "p", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "open_bracket", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "close_bracket", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "backslash", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "a", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "s", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "d", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "f", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "g", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "h", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "j", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "k", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "l", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "semicolon", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "quote", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "z", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "x", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "c", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "v", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "b", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "n", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "m", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "comma", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "period", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "slash", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "1", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "2", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "4", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "5", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "6", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "7", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "8", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "9", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "0", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "hyphen", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "equal_sign", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "q", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "w", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "e", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "r", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "t", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "y", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "u", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "i", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "o", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "p", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "open_bracket", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "close_bracket", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "backslash", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "a", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "s", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "d", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "f", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "g", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "h", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "j", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "k", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "l", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "semicolon", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "quote", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "z", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "x", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "c", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "v", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "b", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "n", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "m", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "comma", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "period", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "slash", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period", - "modifiers": [ - "right_shift" - ] - } - ] - } - ] - } - ] -} diff --git a/stow-legacy/karabiner/assets/complex_modifications/1597574790.json b/stow-legacy/karabiner/assets/complex_modifications/1597574790.json deleted file mode 100644 index 95a1ec8..0000000 --- a/stow-legacy/karabiner/assets/complex_modifications/1597574790.json +++ /dev/null @@ -1,3609 +0,0 @@ -{ - "title": "Colemak Keyboard", - "rules": [ - { - "description": "Remap keys to use Colemak keyboard layout", - "manipulators": [ - { - "type": "basic", - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "1", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "2", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "4", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "5", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "6", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "7", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "8", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "9", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "0", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "hyphen", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "equal_sign", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "q", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "w", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "e", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "r", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "t", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "y", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "u", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "i", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "o", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "p", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "open_bracket", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "close_bracket", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "backslash", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "a", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "s", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "d", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "f", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "g", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "h", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "j", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "k", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "l", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "semicolon", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "quote", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "z", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "x", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "c", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "v", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "b", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "n", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "m", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "comma", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "period", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "slash", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash" - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "1", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "2", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "4", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "5", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "6", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "7", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "8", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "9", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "0", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "hyphen", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "equal_sign", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "q", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "w", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "e", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "r", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "t", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "y", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "u", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "i", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "o", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "p", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "open_bracket", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "close_bracket", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "backslash", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "a", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "s", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "d", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "f", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "g", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "h", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "j", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "k", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "l", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "semicolon", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "quote", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "z", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "x", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "c", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "v", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "b", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "n", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "m", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "comma", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "period", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "slash", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash", - "modifiers": [ - "left_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "1", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "2", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "4", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "5", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "6", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "7", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "8", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "9", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "0", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "hyphen", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "equal_sign", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "q", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "w", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "e", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "r", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "t", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "y", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "u", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "i", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "o", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "p", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "open_bracket", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "close_bracket", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "backslash", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "a", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "s", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "d", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "f", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "g", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "h", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "j", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "k", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "l", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "semicolon", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "quote", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "z", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "x", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "c", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "v", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "b", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "n", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "m", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "comma", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "period", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "slash", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash", - "modifiers": [ - "right_shift" - ] - } - ] - }, - { - "type": "basic", - "from": { - "key_code": "caps_lock" - }, - "to": [ - { - "key_code": "delete_or_backspace" - } - ] - } - ] - } - ] -} diff --git a/stow-legacy/karabiner/assets/complex_modifications/1597576542.json b/stow-legacy/karabiner/assets/complex_modifications/1597576542.json deleted file mode 100644 index 4727894..0000000 --- a/stow-legacy/karabiner/assets/complex_modifications/1597576542.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "title": "Caps and return to ctrl. Ctrl to caps.", - "rules": [ - { - "description": "Post left_ctrl when return_or_enter is hold.", - "manipulators": [ - { - "from": { - "key_code": "return_or_enter", - "modifiers": { - "optional": [ - "any" - ] - } - }, - "to": [ - { - "key_code": "right_control" - } - ], - "to_if_alone": [ - { - "key_code": "return_or_enter" - } - ], - "type": "basic" - } - ] - }, - { - "description": "Post escape if caps is pressed alone, left_ctrl otherwise", - "manipulators": [ - { - "from": { - "key_code": "caps_lock", - "modifiers": { - "optional": [ - "any" - ] - } - }, - "to": [ - { - "key_code": "left_control" - } - ], - "to_if_alone": [ - { - "key_code": "escape" - } - ], - "type": "basic" - } - ] - }, - { - "description": "Map left_ctrl to caps_lock.", - "manipulators": [ - { - "from": { - "key_code": "left_control", - "modifiers": { - "optional": [ - "any" - ] - } - }, - "to": [ - { - "key_code": "caps_lock" - } - ], - "type": "basic" - } - ] - } - ] -} diff --git a/stow-legacy/karabiner/assets/complex_modifications/1655107459.json b/stow-legacy/karabiner/assets/complex_modifications/1655107459.json deleted file mode 100644 index 1d2c718..0000000 --- a/stow-legacy/karabiner/assets/complex_modifications/1655107459.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "title": "Change control key", - "rules": [ - { - "description": "Post escape if left_control is pressed alone.", - "manipulators": [ - { - "type": "basic", - "from": { - "key_code": "left_control", - "modifiers": { - "optional": [ - "any" - ] - } - }, - "to": [ - { - "key_code": "left_control" - } - ], - "to_if_alone": [ - { - "key_code": "escape" - } - ] - } - ] - }, - { - "description": "Post caps_lock if left_control is pressed alone.", - "manipulators": [ - { - "type": "basic", - "from": { - "key_code": "left_control", - "modifiers": { - "optional": [ - "any" - ] - } - }, - "to": [ - { - "key_code": "left_control" - } - ], - "to_if_alone": [ - { - "key_code": "caps_lock" - } - ] - } - ] - }, - { - "description": "Post return_or_enter if right_control is pressed alone.", - "manipulators": [ - { - "type": "basic", - "from": { - "key_code": "right_control", - "modifiers": { - "optional": [ - "any" - ] - } - }, - "to": [ - { - "key_code": "right_control" - } - ], - "to_if_alone": [ - { - "key_code": "return_or_enter" - } - ] - } - ] - } - ] -} diff --git a/stow-legacy/karabiner/karabiner.json b/stow-legacy/karabiner/karabiner.json deleted file mode 100644 index a08414f..0000000 --- a/stow-legacy/karabiner/karabiner.json +++ /dev/null @@ -1,7898 +0,0 @@ -{ - "global": { - "ask_for_confirmation_before_quitting": true, - "check_for_updates_on_startup": true, - "show_in_menu_bar": true, - "show_profile_name_in_menu_bar": true, - "unsafe_ui": false - }, - "profiles": [ - { - "complex_modifications": { - "parameters": { - "basic.simultaneous_threshold_milliseconds": 50, - "basic.to_delayed_action_delay_milliseconds": 500, - "basic.to_if_alone_timeout_milliseconds": 1000, - "basic.to_if_held_down_threshold_milliseconds": 500, - "mouse_motion_to_scroll.speed": 100 - }, - "rules": [ - { - "description": "Post left_ctrl when return_or_enter is hold.", - "manipulators": [ - { - "from": { - "key_code": "return_or_enter", - "modifiers": { - "optional": [ - "any" - ] - } - }, - "to": [ - { - "key_code": "right_control" - } - ], - "to_if_alone": [ - { - "key_code": "return_or_enter" - } - ], - "type": "basic" - } - ] - }, - { - "description": "Post escape if caps is pressed alone, left_ctrl otherwise", - "manipulators": [ - { - "from": { - "key_code": "caps_lock", - "modifiers": { - "optional": [ - "any" - ] - } - }, - "to": [ - { - "key_code": "left_control" - } - ], - "to_if_alone": [ - { - "key_code": "escape" - } - ], - "type": "basic" - } - ] - }, - { - "description": "Map left_ctrl to caps_lock.", - "manipulators": [ - { - "from": { - "key_code": "left_control", - "modifiers": { - "optional": [ - "any" - ] - } - }, - "to": [ - { - "key_code": "caps_lock" - } - ], - "type": "basic" - } - ] - }, - { - "description": "Colemak Mod-DH", - "manipulators": [ - { - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "1", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "2", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "4", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "5", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "6", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "7", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "8", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "9", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "0", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "hyphen", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "equal_sign", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "q", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "w", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "e", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "r", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "t", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "y", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "u", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "i", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "o", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "p", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "open_bracket", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "close_bracket", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "backslash", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "a", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "s", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "d", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "f", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "g", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "h", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "j", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "k", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "l", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "semicolon", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "quote", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "z", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "x", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "c", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "v", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "b", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "n", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "m", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "comma", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "period", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "slash", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "1", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "2", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "4", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "5", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "6", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "7", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "8", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "9", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "0", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "hyphen", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "equal_sign", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "q", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "w", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "e", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "r", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "t", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "y", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "u", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "i", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "o", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "p", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "open_bracket", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "close_bracket", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "backslash", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "a", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "s", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "d", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "f", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "g", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "h", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "j", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "k", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "l", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "semicolon", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "quote", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "z", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "x", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "c", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "v", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "b", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "n", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "m", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "comma", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "period", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "slash", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "1", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "2", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "4", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "5", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "6", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "7", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "8", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "9", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "0", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "hyphen", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "equal_sign", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "q", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "w", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "e", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "r", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "t", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "y", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "u", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "i", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "o", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "p", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "open_bracket", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "close_bracket", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "backslash", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "a", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "s", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "d", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "f", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "g", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "h", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "j", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "k", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "l", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "semicolon", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "quote", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "z", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "x", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "c", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "v", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "b", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "n", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "m", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "comma", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "period", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "slash", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "caps_lock" - }, - "to": [ - { - "key_code": "delete_or_backspace" - } - ], - "type": "basic" - } - ] - } - ] - }, - "devices": [ - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 51966, - "vendor_id": 65261 - }, - "ignore": true, - "manipulate_caps_lock_led": false, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 4694, - "vendor_id": 51984 - }, - "ignore": true, - "manipulate_caps_lock_led": false, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 4871, - "vendor_id": 65261 - }, - "ignore": true, - "manipulate_caps_lock_led": false, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 832, - "vendor_id": 1452 - }, - "ignore": false, - "manipulate_caps_lock_led": true, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 34304, - "vendor_id": 1452 - }, - "ignore": false, - "manipulate_caps_lock_led": true, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 615, - "vendor_id": 76 - }, - "ignore": true, - "manipulate_caps_lock_led": true, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 256, - "vendor_id": 2131 - }, - "ignore": false, - "manipulate_caps_lock_led": true, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": false, - "is_pointing_device": true, - "product_id": 832, - "vendor_id": 1452 - }, - "ignore": true, - "manipulate_caps_lock_led": false, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": true, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 668, - "vendor_id": 76 - }, - "ignore": false, - "manipulate_caps_lock_led": true, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": false, - "is_pointing_device": true, - "product_id": 617, - "vendor_id": 76 - }, - "ignore": true, - "manipulate_caps_lock_led": false, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - } - ], - "fn_function_keys": [ - { - "from": { - "key_code": "f1" - }, - "to": [ - { - "consumer_key_code": "display_brightness_decrement" - } - ] - }, - { - "from": { - "key_code": "f2" - }, - "to": [ - { - "consumer_key_code": "display_brightness_increment" - } - ] - }, - { - "from": { - "key_code": "f3" - }, - "to": [ - { - "key_code": "mission_control" - } - ] - }, - { - "from": { - "key_code": "f4" - }, - "to": [ - { - "key_code": "launchpad" - } - ] - }, - { - "from": { - "key_code": "f5" - }, - "to": [ - { - "key_code": "illumination_decrement" - } - ] - }, - { - "from": { - "key_code": "f6" - }, - "to": [ - { - "key_code": "illumination_increment" - } - ] - }, - { - "from": { - "key_code": "f7" - }, - "to": [ - { - "consumer_key_code": "rewind" - } - ] - }, - { - "from": { - "key_code": "f8" - }, - "to": [ - { - "consumer_key_code": "play_or_pause" - } - ] - }, - { - "from": { - "key_code": "f9" - }, - "to": [ - { - "consumer_key_code": "fast_forward" - } - ] - }, - { - "from": { - "key_code": "f10" - }, - "to": [ - { - "consumer_key_code": "mute" - } - ] - }, - { - "from": { - "key_code": "f11" - }, - "to": [ - { - "consumer_key_code": "volume_decrement" - } - ] - }, - { - "from": { - "key_code": "f12" - }, - "to": [ - { - "consumer_key_code": "volume_increment" - } - ] - } - ], - "name": "Apple", - "parameters": { - "delay_milliseconds_before_open_device": 1000 - }, - "selected": true, - "simple_modifications": [ - { - "from": { - "key_code": "backslash" - }, - "to": [ - { - "key_code": "delete_or_backspace" - } - ] - }, - { - "from": { - "key_code": "delete_or_backspace" - }, - "to": [ - { - "key_code": "backslash" - } - ] - } - ], - "virtual_hid_keyboard": { - "country_code": 0, - "indicate_sticky_modifier_keys_state": true, - "mouse_key_xy_scale": 100 - } - }, - { - "complex_modifications": { - "parameters": { - "basic.simultaneous_threshold_milliseconds": 50, - "basic.to_delayed_action_delay_milliseconds": 500, - "basic.to_if_alone_timeout_milliseconds": 1000, - "basic.to_if_held_down_threshold_milliseconds": 500, - "mouse_motion_to_scroll.speed": 100 - }, - "rules": [ - { - "description": "Colemak Mod-DH", - "manipulators": [ - { - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "1", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "2", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "4", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "5", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "6", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "7", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "8", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "9", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "0", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "hyphen", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "equal_sign", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "q", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "w", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "e", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "r", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "t", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "y", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "u", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "i", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "o", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "p", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "open_bracket", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "close_bracket", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "backslash", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "a", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "s", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "d", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "f", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "g", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "h", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "j", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "k", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "l", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "semicolon", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "quote", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "z", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "x", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "c", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "v", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "b", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "n", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "m", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "comma", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "period", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "slash", - "modifiers": { - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "1", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "2", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "4", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "5", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "6", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "7", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "8", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "9", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "0", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "hyphen", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "equal_sign", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "q", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "w", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "e", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "r", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "t", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "y", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "u", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "i", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "o", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "p", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "open_bracket", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "close_bracket", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "backslash", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "a", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "s", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "d", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "f", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "g", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "h", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "j", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "k", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "l", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "semicolon", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "quote", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "z", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "x", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "c", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "v", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "b", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "n", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "m", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "comma", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "period", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "slash", - "modifiers": { - "mandatory": [ - "left_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash", - "modifiers": [ - "left_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "grave_accent_and_tilde", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "1", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "1", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "2", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "2", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "4", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "4", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "5", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "5", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "6", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "6", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "7", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "7", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "8", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "8", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "9", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "9", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "0", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "0", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "hyphen", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "hyphen", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "equal_sign", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "equal_sign", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "q", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "q", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "w", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "w", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "e", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "f", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "r", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "p", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "t", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "b", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "y", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "j", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "u", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "l", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "i", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "u", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "o", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "y", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "p", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "semicolon", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "open_bracket", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "open_bracket", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "close_bracket", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "close_bracket", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "backslash", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "backslash", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "a", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "a", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "s", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "r", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "d", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "s", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "f", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "t", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "g", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "g", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "h", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "m", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "j", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "n", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "k", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "e", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "l", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "i", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "semicolon", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "o", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "quote", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "quote", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "z", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "z", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "x", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "x", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "c", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "c", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "v", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "d", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "b", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "v", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "n", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "k", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "m", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "h", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "comma", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "comma", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "period", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "period", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "slash", - "modifiers": { - "mandatory": [ - "right_shift" - ], - "optional": [ - "caps_lock", - "left_command", - "left_control", - "left_alt", - "right_command", - "right_control", - "right_alt" - ] - } - }, - "to": [ - { - "key_code": "slash", - "modifiers": [ - "right_shift" - ] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "caps_lock" - }, - "to": [ - { - "key_code": "delete_or_backspace" - } - ], - "type": "basic" - } - ] - }, - { - "description": "Post escape if left_control is pressed alone.", - "manipulators": [ - { - "from": { - "key_code": "left_control", - "modifiers": { - "optional": [ - "any" - ] - } - }, - "to": [ - { - "key_code": "left_control" - } - ], - "to_if_alone": [ - { - "key_code": "escape" - } - ], - "type": "basic" - } - ] - } - ] - }, - "devices": [ - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 51966, - "vendor_id": 65261 - }, - "ignore": true, - "manipulate_caps_lock_led": false, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 4694, - "vendor_id": 51984 - }, - "ignore": true, - "manipulate_caps_lock_led": false, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 4871, - "vendor_id": 65261 - }, - "ignore": true, - "manipulate_caps_lock_led": false, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 832, - "vendor_id": 1452 - }, - "ignore": true, - "manipulate_caps_lock_led": true, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 34304, - "vendor_id": 1452 - }, - "ignore": true, - "manipulate_caps_lock_led": true, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 615, - "vendor_id": 76 - }, - "ignore": false, - "manipulate_caps_lock_led": true, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": true, - "is_pointing_device": false, - "product_id": 256, - "vendor_id": 2131 - }, - "ignore": false, - "manipulate_caps_lock_led": true, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - }, - { - "disable_built_in_keyboard_if_exists": false, - "fn_function_keys": [], - "identifiers": { - "is_keyboard": false, - "is_pointing_device": true, - "product_id": 832, - "vendor_id": 1452 - }, - "ignore": true, - "manipulate_caps_lock_led": false, - "simple_modifications": [], - "treat_as_built_in_keyboard": false - } - ], - "fn_function_keys": [ - { - "from": { - "key_code": "f1" - }, - "to": [ - { - "consumer_key_code": "display_brightness_decrement" - } - ] - }, - { - "from": { - "key_code": "f2" - }, - "to": [ - { - "consumer_key_code": "display_brightness_increment" - } - ] - }, - { - "from": { - "key_code": "f3" - }, - "to": [ - { - "key_code": "mission_control" - } - ] - }, - { - "from": { - "key_code": "f4" - }, - "to": [ - { - "key_code": "launchpad" - } - ] - }, - { - "from": { - "key_code": "f5" - }, - "to": [ - { - "key_code": "illumination_decrement" - } - ] - }, - { - "from": { - "key_code": "f6" - }, - "to": [ - { - "key_code": "illumination_increment" - } - ] - }, - { - "from": { - "key_code": "f7" - }, - "to": [ - { - "consumer_key_code": "rewind" - } - ] - }, - { - "from": { - "key_code": "f8" - }, - "to": [ - { - "consumer_key_code": "play_or_pause" - } - ] - }, - { - "from": { - "key_code": "f9" - }, - "to": [ - { - "consumer_key_code": "fast_forward" - } - ] - }, - { - "from": { - "key_code": "f10" - }, - "to": [ - { - "consumer_key_code": "mute" - } - ] - }, - { - "from": { - "key_code": "f11" - }, - "to": [ - { - "consumer_key_code": "volume_decrement" - } - ] - }, - { - "from": { - "key_code": "f12" - }, - "to": [ - { - "consumer_key_code": "volume_increment" - } - ] - } - ], - "name": "HHKB", - "parameters": { - "delay_milliseconds_before_open_device": 1000 - }, - "selected": false, - "simple_modifications": [ - { - "from": { - "key_code": "escape" - }, - "to": [ - { - "key_code": "grave_accent_and_tilde" - } - ] - } - ], - "virtual_hid_keyboard": { - "country_code": 0, - "indicate_sticky_modifier_keys_state": true, - "mouse_key_xy_scale": 100 - } - } - ] -} \ No newline at end of file diff --git a/stow-legacy/kitty/.config/kitty/kitty.conf b/stow-legacy/kitty/.config/kitty/kitty.conf deleted file mode 100644 index 6317167..0000000 --- a/stow-legacy/kitty/.config/kitty/kitty.conf +++ /dev/null @@ -1,1294 +0,0 @@ -# vim:fileencoding=utf-8:ft=conf:foldmethod=marker - -#: Fonts {{{ - -#: kitty has very powerful font management. You can configure -#: individual font faces and even specify special fonts for particular -#: characters. - -font_family SourceCodePro-Medium -bold_font auto -italic_font auto -bold_italic_font auto - -#: You can specify different fonts for the bold/italic/bold-italic -#: variants. To get a full list of supported fonts use the `kitty -#: list-fonts` command. By default they are derived automatically, by -#: the OSes font system. Setting them manually is useful for font -#: families that have many weight variants like Book, Medium, Thick, -#: etc. For example:: - -#: font_family Operator Mono Book -#: bold_font Operator Mono Medium -#: italic_font Operator Mono Book Italic -#: bold_italic_font Operator Mono Medium Italic - -font_size 18.0 - -#: Font size (in pts) - -# force_ltr no - -#: kitty does not support BIDI (bidirectional text), however, for RTL -#: scripts, words are automatically displayed in RTL. That is to say, -#: in an RTL script, the words "HELLO WORLD" display in kitty as -#: "WORLD HELLO", and if you try to select a substring of an RTL- -#: shaped string, you will get the character that would be there had -#: the the string been LTR. For example, assuming the Hebrew word -#: ירושלים, selecting the character that on the screen appears to be ם -#: actually writes into the selection buffer the character י. - -#: kitty's default behavior is useful in conjunction with a filter to -#: reverse the word order, however, if you wish to manipulate RTL -#: glyphs, it can be very challenging to work with, so this option is -#: provided to turn it off. Furthermore, this option can be used with -#: the command line program GNU FriBidi -#: to get BIDI -#: support, because it will force kitty to always treat the text as -#: LTR, which FriBidi expects for terminals. - -adjust_line_height 110% -# adjust_column_width 0 - -#: Change the size of each character cell kitty renders. You can use -#: either numbers, which are interpreted as pixels or percentages -#: (number followed by %), which are interpreted as percentages of the -#: unmodified values. You can use negative pixels or percentages less -#: than 100% to reduce sizes (but this might cause rendering -#: artifacts). - -# symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols - -#: Map the specified unicode codepoints to a particular font. Useful -#: if you need special rendering for some symbols, such as for -#: Powerline. Avoids the need for patched fonts. Each unicode code -#: point is specified in the form U+. You -#: can specify multiple code points, separated by commas and ranges -#: separated by hyphens. symbol_map itself can be specified multiple -#: times. Syntax is:: - -#: symbol_map codepoints Font Family Name - -# disable_ligatures never - -#: Choose how you want to handle multi-character ligatures. The -#: default is to always render them. You can tell kitty to not render -#: them when the cursor is over them by using cursor to make editing -#: easier, or have kitty never render them at all by using always, if -#: you don't like them. The ligature strategy can be set per-window -#: either using the kitty remote control facility or by defining -#: shortcuts for it in kitty.conf, for example:: - -#: map alt+1 disable_ligatures_in active always -#: map alt+2 disable_ligatures_in all never -#: map alt+3 disable_ligatures_in tab cursor - -#: Note that this refers to programming ligatures, typically -#: implemented using the calt OpenType feature. For disabling general -#: ligatures, use the font_features setting. - -# font_features none - -#: Choose exactly which OpenType features to enable or disable. This -#: is useful as some fonts might have features worthwhile in a -#: terminal. For example, Fira Code Retina includes a discretionary -#: feature, zero, which in that font changes the appearance of the -#: zero (0), to make it more easily distinguishable from Ø. Fira Code -#: Retina also includes other discretionary features known as -#: Stylistic Sets which have the tags ss01 through ss20. - -#: Note that this code is indexed by PostScript name, and not the font -#: family. This allows you to define very precise feature settings; -#: e.g. you can disable a feature in the italic font but not in the -#: regular font. - -#: To get the PostScript name for a font, use kitty + list-fonts -#: --psnames:: - -#: $ kitty + list-fonts --psnames | grep Fira -#: Fira Code -#: Fira Code Bold (FiraCode-Bold) -#: Fira Code Light (FiraCode-Light) -#: Fira Code Medium (FiraCode-Medium) -#: Fira Code Regular (FiraCode-Regular) -#: Fira Code Retina (FiraCode-Retina) - -#: The part in brackets is the PostScript name. - -#: Enable alternate zero and oldstyle numerals:: - -#: font_features FiraCode-Retina +zero +onum - -#: Enable only alternate zero:: - -#: font_features FiraCode-Retina +zero - -#: Disable the normal ligatures, but keep the calt feature which (in -#: this font) breaks up monotony:: - -#: font_features TT2020StyleB-Regular -liga +calt - -#: In conjunction with force_ltr, you may want to disable Arabic -#: shaping entirely, and only look at their isolated forms if they -#: show up in a document. You can do this with e.g.:: - -#: font_features UnifontMedium +isol -medi -fina -init - -# box_drawing_scale 0.001, 1, 1.5, 2 - -#: Change the sizes of the lines used for the box drawing unicode -#: characters These values are in pts. They will be scaled by the -#: monitor DPI to arrive at a pixel value. There must be four values -#: corresponding to thin, normal, thick, and very thick lines. - -#: }}} - -#: Cursor customization {{{ - -# cursor #81a1c1 - -# Url corsor -url_color #0087bd - -#: Default cursor color - -# cursor_text_color #111111 - -#: Choose the color of text under the cursor. If you want it rendered -#: with the background color of the cell underneath instead, use the -#: special keyword: background - -# cursor_shape block - -#: The cursor shape can be one of (block, beam, underline) - -# cursor_beam_thickness 1.5 - -#: Defines the thickness of the beam cursor (in pts) - -# cursor_underline_thickness 2.0 - -#: Defines the thickness of the underline cursor (in pts) - -# cursor_blink_interval -1 - -#: The interval (in seconds) at which to blink the cursor. Set to zero -#: to disable blinking. Negative values mean use system default. Note -#: that numbers smaller than repaint_delay will be limited to -#: repaint_delay. - -# cursor_stop_blinking_after 15.0 - -#: Stop blinking cursor after the specified number of seconds of -#: keyboard inactivity. Set to zero to never stop blinking. - -shell_integration no-cursor - -#: }}} - -#: Scrollback {{{ - -# scrollback_lines 2000 - -#: Number of lines of history to keep in memory for scrolling back. -#: Memory is allocated on demand. Negative numbers are (effectively) -#: infinite scrollback. Note that using very large scrollback is not -#: recommended as it can slow down resizing of the terminal and also -#: use large amounts of RAM. - -# scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER - -#: Program with which to view scrollback in a new window. The -#: scrollback buffer is passed as STDIN to this program. If you change -#: it, make sure the program you use can handle ANSI escape sequences -#: for colors and text formatting. INPUT_LINE_NUMBER in the command -#: line above will be replaced by an integer representing which line -#: should be at the top of the screen. Similarly CURSOR_LINE and -#: CURSOR_COLUMN will be replaced by the current cursor position. - -# scrollback_pager_history_size 0 - -#: Separate scrollback history size, used only for browsing the -#: scrollback buffer (in MB). This separate buffer is not available -#: for interactive scrolling but will be piped to the pager program -#: when viewing scrollback buffer in a separate window. The current -#: implementation stores one character in 4 bytes, so approximatively -#: 2500 lines per megabyte at 100 chars per line. A value of zero or -#: less disables this feature. The maximum allowed size is 4GB. - -# wheel_scroll_multiplier 5.0 - -#: Modify the amount scrolled by the mouse wheel. Note this is only -#: used for low precision scrolling devices, not for high precision -#: scrolling on platforms such as macOS and Wayland. Use negative -#: numbers to change scroll direction. - -# touch_scroll_multiplier 1.0 - -#: Modify the amount scrolled by a touchpad. Note this is only used -#: for high precision scrolling devices on platforms such as macOS and -#: Wayland. Use negative numbers to change scroll direction. - -#: }}} - -#: Mouse {{{ - -# mouse_hide_wait 0.0 - -#: Hide mouse cursor after the specified number of seconds of the -#: mouse not being used. Set to zero to disable mouse cursor hiding. -#: Set to a negative value to hide the mouse cursor immediately when -#: typing text. Disabled by default on macOS as getting it to work -#: robustly with the ever-changing sea of bugs that is Cocoa is too -#: much effort. - -# url_color #0087bd -# url_style curly - -#: The color and style for highlighting URLs on mouse-over. url_style -#: can be one of: none, single, double, curly - -# open_url_modifiers kitty_mod - -#: The modifier keys to press when clicking with the mouse on URLs to -#: open the URL - -# open_url_with default - -#: The program with which to open URLs that are clicked on. The -#: special value default means to use the operating system's default -#: URL handler. - -# url_prefixes http https file ftp - -#: The set of URL prefixes to look for when detecting a URL under the -#: mouse cursor. - -# copy_on_select no - -#: Copy to clipboard or a private buffer on select. With this set to -#: clipboard, simply selecting text with the mouse will cause the text -#: to be copied to clipboard. Useful on platforms such as macOS that -#: do not have the concept of primary selections. You can instead -#: specify a name such as a1 to copy to a private kitty buffer -#: instead. Map a shortcut with the paste_from_buffer action to paste -#: from this private buffer. For example:: - -#: map cmd+shift+v paste_from_buffer a1 - -#: Note that copying to the clipboard is a security risk, as all -#: programs, including websites open in your browser can read the -#: contents of the system clipboard. - -# strip_trailing_spaces never - -#: Remove spaces at the end of lines when copying to clipboard. A -#: value of smart will do it when using normal selections, but not -#: rectangle selections. always will always do it. - -# rectangle_select_modifiers ctrl+alt - -#: The modifiers to use rectangular selection (i.e. to select text in -#: a rectangular block with the mouse) - -# terminal_select_modifiers shift - -#: The modifiers to override mouse selection even when a terminal -#: application has grabbed the mouse - -# select_by_word_characters @-./_~?&=%+# - -#: Characters considered part of a word when double clicking. In -#: addition to these characters any character that is marked as an -#: alphanumeric character in the unicode database will be matched. - -# click_interval -1.0 - -#: The interval between successive clicks to detect double/triple -#: clicks (in seconds). Negative numbers will use the system default -#: instead, if available, or fallback to 0.5. - -# focus_follows_mouse no - -#: Set the active window to the window under the mouse when moving the -#: mouse around - -# pointer_shape_when_grabbed arrow - -#: The shape of the mouse pointer when the program running in the -#: terminal grabs the mouse. Valid values are: arrow, beam and hand - -#: }}} - -#: Performance tuning {{{ - -# repaint_delay 10 - -#: Delay (in milliseconds) between screen updates. Decreasing it, -#: increases frames-per-second (FPS) at the cost of more CPU usage. -#: The default value yields ~100 FPS which is more than sufficient for -#: most uses. Note that to actually achieve 100 FPS you have to either -#: set sync_to_monitor to no or use a monitor with a high refresh -#: rate. Also, to minimize latency when there is pending input to be -#: processed, repaint_delay is ignored. - -# input_delay 3 - -#: Delay (in milliseconds) before input from the program running in -#: the terminal is processed. Note that decreasing it will increase -#: responsiveness, but also increase CPU usage and might cause flicker -#: in full screen programs that redraw the entire screen on each loop, -#: because kitty is so fast that partial screen updates will be drawn. - -# sync_to_monitor yes - -#: Sync screen updates to the refresh rate of the monitor. This -#: prevents tearing (https://en.wikipedia.org/wiki/Screen_tearing) -#: when scrolling. However, it limits the rendering speed to the -#: refresh rate of your monitor. With a very high speed mouse/high -#: keyboard repeat rate, you may notice some slight input latency. If -#: so, set this to no. - -#: }}} - -#: Terminal bell {{{ - -# enable_audio_bell yes - -#: Enable/disable the audio bell. Useful in environments that require -#: silence. - -# visual_bell_duration 0.0 - -#: Visual bell duration. Flash the screen when a bell occurs for the -#: specified number of seconds. Set to zero to disable. - -# window_alert_on_bell yes - -#: Request window attention on bell. Makes the dock icon bounce on -#: macOS or the taskbar flash on linux. - -# bell_on_tab yes - -#: Show a bell symbol on the tab if a bell occurs in one of the -#: windows in the tab and the window is not the currently focused -#: window - -# command_on_bell none - -#: Program to run when a bell occurs. - -#: }}} - -#: Window layout {{{ - -# remember_window_size yes -# initial_window_width 640 -# initial_window_height 400 - -#: If enabled, the window size will be remembered so that new -#: instances of kitty will have the same size as the previous -#: instance. If disabled, the window will initially have size -#: configured by initial_window_width/height, in pixels. You can use a -#: suffix of "c" on the width/height values to have them interpreted -#: as number of cells instead of pixels. - -# enabled_layouts * - -#: The enabled window layouts. A comma separated list of layout names. -#: The special value all means all layouts. The first listed layout -#: will be used as the startup layout. Default configuration is all -#: layouts in alphabetical order. For a list of available layouts, see -#: the https://sw.kovidgoyal.net/kitty/index.html#layouts. - -# window_resize_step_cells 2 -# window_resize_step_lines 2 - -#: The step size (in units of cell width/cell height) to use when -#: resizing windows. The cells value is used for horizontal resizing -#: and the lines value for vertical resizing. - -# window_border_width 1.0 - -#: The width (in pts) of window borders. Will be rounded to the -#: nearest number of pixels based on screen resolution. Note that -#: borders are displayed only when more than one window is visible. -#: They are meant to separate multiple windows. - -# draw_minimal_borders yes - -#: Draw only the minimum borders needed. This means that only the -#: minimum needed borders for inactive windows are drawn. That is only -#: the borders that separate the inactive window from a neighbor. Note -#: that setting a non-zero window margin overrides this and causes all -#: borders to be drawn. - -# window_margin_width 0 - -#: The window margin (in pts) (blank area outside the border). A -#: single value sets all four sides. Two values set the vertical and -#: horizontal sides. Three values set top, horizontal and bottom. Four -#: values set top, right, bottom and left. - -# single_window_margin_width -1 - -#: The window margin (in pts) to use when only a single window is -#: visible. Negative values will cause the value of -#: window_margin_width to be used instead. A single value sets all -#: four sides. Two values set the vertical and horizontal sides. Three -#: values set top, horizontal and bottom. Four values set top, right, -#: bottom and left. - -window_padding_width 4 - -#: The window padding (in pts) (blank area between the text and the -#: window border). A single value sets all four sides. Two values set -#: the vertical and horizontal sides. Three values set top, horizontal -#: and bottom. Four values set top, right, bottom and left. - -# placement_strategy center - -#: When the window size is not an exact multiple of the cell size, the -#: cell area of the terminal window will have some extra padding on -#: the sides. You can control how that padding is distributed with -#: this option. Using a value of center means the cell area will be -#: placed centrally. A value of top-left means the padding will be on -#: only the bottom and right edges. - -# active_border_color #00ff00 - -#: The color for the border of the active window. Set this to none to -#: not draw borders around the active window. - -# inactive_border_color #cccccc - -#: The color for the border of inactive windows - -# bell_border_color #ff5a00 - -#: The color for the border of inactive windows in which a bell has -#: occurred - -# inactive_text_alpha 1.0 - -#: Fade the text in inactive windows by the specified amount (a number -#: between zero and one, with zero being fully faded). - -# hide_window_decorations no - -#: Hide the window decorations (title-bar and window borders) with -#: yes. On macOS, titlebar-only can be used to only hide the titlebar. -#: Whether this works and exactly what effect it has depends on the -#: window manager/operating system. - -# resize_debounce_time 0.1 - -#: The time (in seconds) to wait before redrawing the screen when a -#: resize event is received. On platforms such as macOS, where the -#: operating system sends events corresponding to the start and end of -#: a resize, this number is ignored. - -# resize_draw_strategy static - -#: Choose how kitty draws a window while a resize is in progress. A -#: value of static means draw the current window contents, mostly -#: unchanged. A value of scale means draw the current window contents -#: scaled. A value of blank means draw a blank window. A value of size -#: means show the window size in cells. - -# resize_in_steps no - -#: Resize the OS window in steps as large as the cells, instead of -#: with the usual pixel accuracy. Combined with an -#: initial_window_width and initial_window_height in number of cells, -#: this option can be used to keep the margins as small as possible -#: when resizing the OS window. Note that this does not currently work -#: on Wayland. - -# confirm_os_window_close 0 - -#: Ask for confirmation when closing an OS window or a tab that has at -#: least this number of kitty windows in it. A value of zero disables -#: confirmation. This confirmation also applies to requests to quit -#: the entire application (all OS windows, via the quit action). - -#: }}} - -#: Tab bar {{{ - -# tab_bar_edge bottom - -#: Which edge to show the tab bar on, top or bottom - -# tab_bar_margin_width 0.0 - -#: The margin to the left and right of the tab bar (in pts) - -tab_bar_style fade - -#: The tab bar style, can be one of: fade, separator, powerline, or -#: hidden. In the fade style, each tab's edges fade into the -#: background color, in the separator style, tabs are separated by a -#: configurable separator, and the powerline shows the tabs as a -#: continuous line. - -# tab_bar_min_tabs 2 - -#: The minimum number of tabs that must exist before the tab bar is -#: shown - -# tab_switch_strategy previous - -#: The algorithm to use when switching to a tab when the current tab -#: is closed. The default of previous will switch to the last used -#: tab. A value of left will switch to the tab to the left of the -#: closed tab. A value of last will switch to the right-most tab. - -# tab_fade 0.25 0.5 0.75 1 - -#: Control how each tab fades into the background when using fade for -#: the tab_bar_style. Each number is an alpha (between zero and one) -#: that controls how much the corresponding cell fades into the -#: background, with zero being no fade and one being full fade. You -#: can change the number of cells used by adding/removing entries to -#: this list. - -# tab_separator " ┇" - -#: The separator between tabs in the tab bar when using separator as -#: the tab_bar_style. - -# tab_title_template "{title}" - -#: A template to render the tab title. The default just renders the -#: title. If you wish to include the tab-index as well, use something -#: like: {index}: {title}. Useful if you have shortcuts mapped for -#: goto_tab N. In addition you can use {layout_name} for the current -#: layout name and {num_windows} for the number of windows in the tab. -#: Note that formatting is done by Python's string formatting -#: machinery, so you can use, for instance, {layout_name[:2].upper()} -#: to show only the first two letters of the layout name, upper-cased. - -# active_tab_title_template none - -#: Template to use for active tabs, if not specified falls back to -#: tab_title_template. - -# active_tab_foreground #000 -# active_tab_background #eee -# active_tab_font_style bold-italic -# inactive_tab_foreground #444 -# inactive_tab_background #999 -# inactive_tab_font_style normal - -#: Tab bar colors and styles - -# tab_bar_background none - -#: Background color for the tab bar. Defaults to using the terminal -#: background color. - -#: }}} - -#: Color scheme {{{ - -foreground #d8dee9 -background #2e3440 - -#: The foreground and background colors - -# background_opacity 1.0 - -#: The opacity of the background. A number between 0 and 1, where 1 is -#: opaque and 0 is fully transparent. This will only work if -#: supported by the OS (for instance, when using a compositor under -#: X11). Note that it only sets the background color's opacity in -#: cells that have the same background color as the default terminal -#: background. This is so that things like the status bar in vim, -#: powerline prompts, etc. still look good. But it means that if you -#: use a color theme with a background color in your editor, it will -#: not be rendered as transparent. Instead you should change the -#: default background color in your kitty config and not use a -#: background color in the editor color scheme. Or use the escape -#: codes to set the terminals default colors in a shell script to -#: launch your editor. Be aware that using a value less than 1.0 is a -#: (possibly significant) performance hit. If you want to dynamically -#: change transparency of windows set dynamic_background_opacity to -#: yes (this is off by default as it has a performance cost) - -# background_image none - -#: Path to a background image. Must be in PNG format. - -# background_image_layout tiled - -#: Whether to tile or scale the background image. - -# background_image_linear no - -#: When background image is scaled, whether linear interpolation -#: should be used. - -# dynamic_background_opacity no - -#: Allow changing of the background_opacity dynamically, using either -#: keyboard shortcuts (increase_background_opacity and -#: decrease_background_opacity) or the remote control facility. - -# background_tint 0.0 - -#: How much to tint the background image by the background color. The -#: tint is applied only under the text area, not margin/borders. Makes -#: it easier to read the text. Tinting is done using the current -#: background color for each window. This setting applies only if -#: background_opacity is set and transparent windows are supported or -#: background_image is set. - -# dim_opacity 0.75 - -#: How much to dim text that has the DIM/FAINT attribute set. One -#: means no dimming and zero means fully dimmed (i.e. invisible). - -selection_foreground #000000 - -#: The foreground for text selected with the mouse. A value of none -#: means to leave the color unchanged. - -selection_background #fffacd - -#: The background for text selected with the mouse. - - -#: The 16 terminal colors. There are 8 basic colors, each color has a -#: dull and bright version. You can also set the remaining colors from -#: the 256 color table as color16 to color255. - -#: black -color0 #3b4252 -color8 #616e88 - -#: red -color1 #bf616a -color9 #bf616a - -#: green -color2 #a3be8c -color10 #a3be8c - -#: yellow -color3 #ebcb8b -color11 #ebcb8b - -#: blue -color4 #81a1c1 -color12 #81a1c1 - -#: magenta -color5 #b48ead -color13 #b48ead - -#: cyan -color6 #88c0d0 -color14 #8fbcbb - -#: white -color7 #e5e9f0 -color15 #eceff4 - -# mark1_foreground black - -#: Color for marks of type 1 - -# mark1_background #98d3cb - -#: Color for marks of type 1 (light steel blue) - -# mark2_foreground black - -#: Color for marks of type 2 - -# mark2_background #f2dcd3 - -#: Color for marks of type 1 (beige) - -# mark3_foreground black - -#: Color for marks of type 3 - -# mark3_background #f274bc - -#: Color for marks of type 1 (violet) - -#: }}} - -#: Advanced {{{ - -# shell . - -#: The shell program to execute. The default value of . means to use -#: whatever shell is set as the default shell for the current user. -#: Note that on macOS if you change this, you might need to add -#: --login to ensure that the shell starts in interactive mode and -#: reads its startup rc files. - -# editor . - -#: The console editor to use when editing the kitty config file or -#: similar tasks. A value of . means to use the environment variables -#: VISUAL and EDITOR in that order. Note that this environment -#: variable has to be set not just in your shell startup scripts but -#: system-wide, otherwise kitty will not see it. - -# close_on_child_death no - -#: Close the window when the child process (shell) exits. If no (the -#: default), the terminal will remain open when the child exits as -#: long as there are still processes outputting to the terminal (for -#: example disowned or backgrounded processes). If yes, the window -#: will close as soon as the child process exits. Note that setting it -#: to yes means that any background processes still using the terminal -#: can fail silently because their stdout/stderr/stdin no longer work. - -# allow_remote_control no - -#: Allow other programs to control kitty. If you turn this on other -#: programs can control all aspects of kitty, including sending text -#: to kitty windows, opening new windows, closing windows, reading the -#: content of windows, etc. Note that this even works over ssh -#: connections. You can chose to either allow any program running -#: within kitty to control it, with yes or only programs that connect -#: to the socket specified with the kitty --listen-on command line -#: option, if you use the value socket-only. The latter is useful if -#: you want to prevent programs running on a remote computer over ssh -#: from controlling kitty. - -# listen_on none - -#: Tell kitty to listen to the specified unix/tcp socket for remote -#: control connections. Note that this will apply to all kitty -#: instances. It can be overridden by the kitty --listen-on command -#: line flag. This option accepts only UNIX sockets, such as -#: unix:${TEMP}/mykitty or (on Linux) unix:@mykitty. Environment -#: variables are expanded. If {kitty_pid} is present then it is -#: replaced by the PID of the kitty process, otherwise the PID of the -#: kitty process is appended to the value, with a hyphen. This option -#: is ignored unless you also set allow_remote_control to enable -#: remote control. See the help for kitty --listen-on for more -#: details. - -# env - -#: Specify environment variables to set in all child processes. Note -#: that environment variables are expanded recursively, so if you -#: use:: - -#: env MYVAR1=a -#: env MYVAR2=${MYVAR1}/${HOME}/b - -#: The value of MYVAR2 will be a//b. - -# update_check_interval 24 - -#: Periodically check if an update to kitty is available. If an update -#: is found a system notification is displayed informing you of the -#: available update. The default is to check every 24 hrs, set to zero -#: to disable. - -# startup_session none - -#: Path to a session file to use for all kitty instances. Can be -#: overridden by using the kitty --session command line option for -#: individual instances. See -#: https://sw.kovidgoyal.net/kitty/index.html#sessions in the kitty -#: documentation for details. Note that relative paths are interpreted -#: with respect to the kitty config directory. Environment variables -#: in the path are expanded. - -# clipboard_control write-clipboard write-primary - -#: Allow programs running in kitty to read and write from the -#: clipboard. You can control exactly which actions are allowed. The -#: set of possible actions is: write-clipboard read-clipboard write- -#: primary read-primary. You can additionally specify no-append to -#: disable kitty's protocol extension for clipboard concatenation. The -#: default is to allow writing to the clipboard and primary selection -#: with concatenation enabled. Note that enabling the read -#: functionality is a security risk as it means that any program, even -#: one running on a remote server via SSH can read your clipboard. - -# term xterm-kitty - -#: The value of the TERM environment variable to set. Changing this -#: can break many terminal programs, only change it if you know what -#: you are doing, not because you read some advice on Stack Overflow -#: to change it. The TERM variable is used by various programs to get -#: information about the capabilities and behavior of the terminal. If -#: you change it, depending on what programs you run, and how -#: different the terminal you are changing it to is, various things -#: from key-presses, to colors, to various advanced features may not -#: work. - -#: }}} - -#: OS specific tweaks {{{ - -macos_titlebar_color #15202b - -#: Change the color of the kitty window's titlebar on macOS. A value -#: of system means to use the default system color, a value of -#: background means to use the background color of the currently -#: active window and finally you can use an arbitrary color, such as -#: #12af59 or red. WARNING: This option works by using a hack, as -#: there is no proper Cocoa API for it. It sets the background color -#: of the entire window and makes the titlebar transparent. As such it -#: is incompatible with background_opacity. If you want to use both, -#: you are probably better off just hiding the titlebar with -#: hide_window_decorations. - -# macos_option_as_alt no - -#: Use the option key as an alt key. With this set to no, kitty will -#: use the macOS native Option+Key = unicode character behavior. This -#: will break any Alt+key keyboard shortcuts in your terminal -#: programs, but you can use the macOS unicode input technique. You -#: can use the values: left, right, or both to use only the left, -#: right or both Option keys as Alt, instead. - -# macos_hide_from_tasks no - -#: Hide the kitty window from running tasks (Option+Tab) on macOS. - -# macos_quit_when_last_window_closed no - -#: Have kitty quit when all the top-level windows are closed. By -#: default, kitty will stay running, even with no open windows, as is -#: the expected behavior on macOS. - -# macos_window_resizable yes - -#: Disable this if you want kitty top-level (OS) windows to not be -#: resizable on macOS. - -# macos_thicken_font 0 - -#: Draw an extra border around the font with the given width, to -#: increase legibility at small font sizes. For example, a value of -#: 0.75 will result in rendering that looks similar to sub-pixel -#: antialiasing at common font sizes. - -# macos_traditional_fullscreen no - -#: Use the traditional full-screen transition, that is faster, but -#: less pretty. - -# macos_show_window_title_in all - -#: Show or hide the window title in the macOS window or menu-bar. A -#: value of window will show the title of the currently active window -#: at the top of the macOS window. A value of menubar will show the -#: title of the currently active window in the macOS menu-bar, making -#: use of otherwise wasted space. all will show the title everywhere -#: and none hides the title in the window and the menu-bar. - -# macos_custom_beam_cursor no - -#: Enable/disable custom mouse cursor for macOS that is easier to see -#: on both light and dark backgrounds. WARNING: this might make your -#: mouse cursor invisible on dual GPU machines. - -# linux_display_server auto - -#: Choose between Wayland and X11 backends. By default, an appropriate -#: backend based on the system state is chosen automatically. Set it -#: to x11 or wayland to force the choice. - -#: }}} - -#: Keyboard shortcuts {{{ - -#: For a list of key names, see: the GLFW key macros -#: . -#: The name to use is the part after the GLFW_KEY_ prefix. For a list -#: of modifier names, see: GLFW mods -#: - -#: On Linux you can also use XKB key names to bind keys that are not -#: supported by GLFW. See XKB keys -#: for a list of key names. The name to use is the part -#: after the XKB_KEY_ prefix. Note that you can only use an XKB key -#: name for keys that are not known as GLFW keys. - -#: Finally, you can use raw system key codes to map keys, again only -#: for keys that are not known as GLFW keys. To see the system key -#: code for a key, start kitty with the kitty --debug-keyboard option. -#: Then kitty will output some debug text for every key event. In that -#: text look for ``native_code`` the value of that becomes the key -#: name in the shortcut. For example: - -#: .. code-block:: none - -#: on_key_input: glfw key: 65 native_code: 0x61 action: PRESS mods: 0x0 text: 'a' - -#: Here, the key name for the A key is 0x61 and you can use it with:: - -#: map ctrl+0x61 something - -#: to map ctrl+a to something. - -#: You can use the special action no_op to unmap a keyboard shortcut -#: that is assigned in the default configuration:: - -#: map kitty_mod+space no_op - -#: You can combine multiple actions to be triggered by a single -#: shortcut, using the syntax below:: - -#: map key combine action1 action2 action3 ... - -#: For example:: - -#: map kitty_mod+e combine : new_window : next_layout - -#: this will create a new window and switch to the next available -#: layout - -#: You can use multi-key shortcuts using the syntax shown below:: - -#: map key1>key2>key3 action - -#: For example:: - -#: map ctrl+f>2 set_font_size 20 - -# kitty_mod ctrl+shift - -#: The value of kitty_mod is used as the modifier for all default -#: shortcuts, you can change it in your kitty.conf to change the -#: modifiers for all the default shortcuts. - -# clear_all_shortcuts no - -#: You can have kitty remove all shortcut definition seen up to this -#: point. Useful, for instance, to remove the default shortcuts. - -# kitten_alias hints hints --hints-offset=0 - -#: You can create aliases for kitten names, this allows overriding the -#: defaults for kitten options and can also be used to shorten -#: repeated mappings of the same kitten with a specific group of -#: options. For example, the above alias changes the default value of -#: kitty +kitten hints --hints-offset to zero for all mappings, -#: including the builtin ones. - -#: Clipboard {{{ - -# map kitty_mod+c copy_to_clipboard - -#: There is also a copy_or_interrupt action that can be optionally -#: mapped to Ctrl+c. It will copy only if there is a selection and -#: send an interrupt otherwise. Similarly, copy_and_clear_or_interrupt -#: will copy and clear the selection or send an interrupt if there is -#: no selection. - -# map cmd+c copy_to_clipboard -# map kitty_mod+v paste_from_clipboard -# map cmd+v paste_from_clipboard -# map kitty_mod+s paste_from_selection -# map shift+insert paste_from_selection -# map kitty_mod+o pass_selection_to_program - -#: You can also pass the contents of the current selection to any -#: program using pass_selection_to_program. By default, the system's -#: open program is used, but you can specify your own, the selection -#: will be passed as a command line argument to the program, for -#: example:: - -#: map kitty_mod+o pass_selection_to_program firefox - -#: You can pass the current selection to a terminal program running in -#: a new kitty window, by using the @selection placeholder:: - -#: map kitty_mod+y new_window less @selection - -#: }}} - -#: Scrolling {{{ - -# map kitty_mod+up scroll_line_up -# map alt+cmd+page_up scroll_line_up -# map cmd+up scroll_line_up -# map kitty_mod+k scroll_line_up -# map kitty_mod+down scroll_line_down -# map kitty_mod+j scroll_line_down -# map alt+cmd+page_down scroll_line_down -# map cmd+down scroll_line_down -# map kitty_mod+page_up scroll_page_up -# map cmd+page_up scroll_page_up -# map kitty_mod+page_down scroll_page_down -# map cmd+page_down scroll_page_down -# map kitty_mod+home scroll_home -# map cmd+home scroll_home -# map kitty_mod+end scroll_end -# map cmd+end scroll_end -# map kitty_mod+h show_scrollback - -#: You can pipe the contents of the current screen + history buffer as -#: STDIN to an arbitrary program using the ``launch`` function. For -#: example, the following opens the scrollback buffer in less in an -#: overlay window:: - -#: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R - -#: For more details on piping screen and buffer contents to external -#: programs, see launch. - -#: }}} - -#: Window management {{{ - -# map kitty_mod+enter new_window - -#: You can open a new window running an arbitrary program, for -#: example:: - -#: map kitty_mod+y launch mutt - -#: You can open a new window with the current working directory set to -#: the working directory of the current window using:: - -#: map ctrl+alt+enter launch --cwd=current - -#: You can open a new window that is allowed to control kitty via the -#: kitty remote control facility by prefixing the command line with @. -#: Any programs running in that window will be allowed to control -#: kitty. For example:: - -#: map ctrl+enter launch --allow-remote-control some_program - -#: You can open a new window next to the currently active window or as -#: the first window, with:: - -#: map ctrl+n launch --location=neighbor some_program -#: map ctrl+f launch --location=first some_program - -#: For more details, see launch. - -# map cmd+enter new_window -# map kitty_mod+n new_os_window - -#: Works like new_window above, except that it opens a top level OS -#: kitty window. In particular you can use new_os_window_with_cwd to -#: open a window with the current working directory. - -# map cmd+n new_os_window -# map kitty_mod+w close_window -# map shift+cmd+d close_window -# map kitty_mod+] next_window -# map kitty_mod+[ previous_window -# map kitty_mod+f move_window_forward -# map kitty_mod+b move_window_backward -# map kitty_mod+` move_window_to_top -# map kitty_mod+r start_resizing_window -# map cmd+r start_resizing_window -# map kitty_mod+1 first_window -# map cmd+1 first_window -# map kitty_mod+2 second_window -# map cmd+2 second_window -# map kitty_mod+3 third_window -# map cmd+3 third_window -# map kitty_mod+4 fourth_window -# map cmd+4 fourth_window -# map kitty_mod+5 fifth_window -# map cmd+5 fifth_window -# map kitty_mod+6 sixth_window -# map cmd+6 sixth_window -# map kitty_mod+7 seventh_window -# map cmd+7 seventh_window -# map kitty_mod+8 eighth_window -# map cmd+8 eighth_window -# map kitty_mod+9 ninth_window -# map cmd+9 ninth_window -# map kitty_mod+0 tenth_window -#: }}} - -#: Tab management {{{ - -# map kitty_mod+right next_tab -# map ctrl+tab next_tab -# map shift+cmd+] next_tab -# map kitty_mod+left previous_tab -# map shift+ctrl+tab previous_tab -# map shift+cmd+[ previous_tab -# map kitty_mod+t new_tab -# map cmd+t new_tab -# map kitty_mod+q close_tab -# map cmd+w close_tab -# map shift+cmd+w close_os_window -# map kitty_mod+. move_tab_forward -# map kitty_mod+, move_tab_backward -# map kitty_mod+alt+t set_tab_title -# map shift+cmd+i set_tab_title - -#: You can also create shortcuts to go to specific tabs, with 1 being -#: the first tab, 2 the second tab and -1 being the previously active -#: tab, and any number larger than the last tab being the last tab:: - -#: map ctrl+alt+1 goto_tab 1 -#: map ctrl+alt+2 goto_tab 2 - -#: Just as with new_window above, you can also pass the name of -#: arbitrary commands to run when using new_tab and use -#: new_tab_with_cwd. Finally, if you want the new tab to open next to -#: the current tab rather than at the end of the tabs list, use:: - -#: map ctrl+t new_tab !neighbor [optional cmd to run] -#: }}} - -#: Layout management {{{ - -# map kitty_mod+l next_layout - -#: You can also create shortcuts to switch to specific layouts:: - -#: map ctrl+alt+t goto_layout tall -#: map ctrl+alt+s goto_layout stack - -#: Similarly, to switch back to the previous layout:: - -#: map ctrl+alt+p last_used_layout -#: }}} - -#: Font sizes {{{ - -#: You can change the font size for all top-level kitty OS windows at -#: a time or only the current one. - -# map kitty_mod+equal change_font_size all +2.0 -# map cmd+plus change_font_size all +2.0 -# map cmd+shift+equal change_font_size all +2.0 -# map kitty_mod+minus change_font_size all -2.0 -# map cmd+minus change_font_size all -2.0 -# map kitty_mod+backspace change_font_size all 0 -# map cmd+0 change_font_size all 0 - -#: To setup shortcuts for specific font sizes:: - -#: map kitty_mod+f6 change_font_size all 10.0 - -#: To setup shortcuts to change only the current OS window's font -#: size:: - -#: map kitty_mod+f6 change_font_size current 10.0 -#: }}} - -#: Select and act on visible text {{{ - -#: Use the hints kitten to select text and either pass it to an -#: external program or insert it into the terminal or copy it to the -#: clipboard. - -# map kitty_mod+e kitten hints - -#: Open a currently visible URL using the keyboard. The program used -#: to open the URL is specified in open_url_with. - -# map kitty_mod+p>f kitten hints --type path --program - - -#: Select a path/filename and insert it into the terminal. Useful, for -#: instance to run git commands on a filename output from a previous -#: git command. - -# map kitty_mod+p>shift+f kitten hints --type path - -#: Select a path/filename and open it with the default open program. - -# map kitty_mod+p>l kitten hints --type line --program - - -#: Select a line of text and insert it into the terminal. Use for the -#: output of things like: ls -1 - -# map kitty_mod+p>w kitten hints --type word --program - - -#: Select words and insert into terminal. - -# map kitty_mod+p>h kitten hints --type hash --program - - -#: Select something that looks like a hash and insert it into the -#: terminal. Useful with git, which uses sha1 hashes to identify -#: commits - -# map kitty_mod+p>n kitten hints --type linenum - -#: Select something that looks like filename:linenum and open it in -#: vim at the specified line number. - - -#: The hints kitten has many more modes of operation that you can map -#: to different shortcuts. For a full description see kittens/hints. -#: }}} - -#: Miscellaneous {{{ - -# map kitty_mod+f11 toggle_fullscreen -# map kitty_mod+f10 toggle_maximized -# map kitty_mod+u kitten unicode_input -# map kitty_mod+f2 edit_config_file -# map kitty_mod+escape kitty_shell window - -#: Open the kitty shell in a new window/tab/overlay/os_window to -#: control kitty using commands. - -# map kitty_mod+a>m set_background_opacity +0.1 -# map kitty_mod+a>l set_background_opacity -0.1 -# map kitty_mod+a>1 set_background_opacity 1 -# map kitty_mod+a>d set_background_opacity default -# map kitty_mod+delete clear_terminal reset active - -#: You can create shortcuts to clear/reset the terminal. For example:: - -#: # Reset the terminal -#: map kitty_mod+f9 clear_terminal reset active -#: # Clear the terminal screen by erasing all contents -#: map kitty_mod+f10 clear_terminal clear active -#: # Clear the terminal scrollback by erasing it -#: map kitty_mod+f11 clear_terminal scrollback active -#: # Scroll the contents of the screen into the scrollback -#: map kitty_mod+f12 clear_terminal scroll active - -#: If you want to operate on all windows instead of just the current -#: one, use all instead of active. - -#: It is also possible to remap Ctrl+L to both scroll the current -#: screen contents into the scrollback buffer and clear the screen, -#: instead of just clearing the screen:: - -#: map ctrl+l combine : clear_terminal scroll active : send_text normal,application \x0c - - -#: You can tell kitty to send arbitrary (UTF-8) encoded text to the -#: client program when pressing specified shortcut keys. For example:: - -#: map ctrl+alt+a send_text all Special text - -#: This will send "Special text" when you press the ctrl+alt+a key -#: combination. The text to be sent is a python string literal so you -#: can use escapes like \x1b to send control codes or \u21fb to send -#: unicode characters (or you can just input the unicode characters -#: directly as UTF-8 text). The first argument to send_text is the -#: keyboard modes in which to activate the shortcut. The possible -#: values are normal or application or kitty or a comma separated -#: combination of them. The special keyword all means all modes. The -#: modes normal and application refer to the DECCKM cursor key mode -#: for terminals, and kitty refers to the special kitty extended -#: keyboard protocol. - -#: Another example, that outputs a word and then moves the cursor to -#: the start of the line (same as pressing the Home key):: - -#: map ctrl+alt+a send_text normal Word\x1b[H -#: map ctrl+alt+a send_text application Word\x1bOH - -#: }}} - -# }}} diff --git a/stow-legacy/nvim/.config/nvim/init.lua b/stow-legacy/nvim/.config/nvim/init.lua deleted file mode 100644 index 5aa0600..0000000 --- a/stow-legacy/nvim/.config/nvim/init.lua +++ /dev/null @@ -1,21 +0,0 @@ -require "user.options" -require "user.keymaps" -require "user.plugins" -require "user.nvim-tree" -require "user.telescope" -require "user.lualine" -require "user.bufferline" -require "user.colorscheme" -require "user.treesitter" -require "user.lsp" -require "user.cmp" -require "user.gitsigns" -require "user.autopairs" -require "user.comment" -require "user.autocommands" -require "user.which-key" -require "user.toggleterm" -require "user.alpha" -require "user.xcodebuild" -require "user.nvim-dapui" -require "user.nvim-dap" diff --git a/stow-legacy/nvim/.config/nvim/lua/user/alpha.lua b/stow-legacy/nvim/.config/nvim/lua/user/alpha.lua deleted file mode 100644 index 17e462c..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/alpha.lua +++ /dev/null @@ -1,42 +0,0 @@ -local status_ok, alpha = pcall(require, "alpha") -if not status_ok then - return -end - -local dashboard = require("alpha.themes.dashboard") -dashboard.section.header.val = { - [[ __ ]], - [[ ___ ___ ___ __ __ /\_\ ___ ___ ]], - [[ / _ `\ / __`\ / __`\/\ \/\ \\/\ \ / __` __`\ ]], - [[/\ \/\ \/\ __//\ \_\ \ \ \_/ |\ \ \/\ \/\ \/\ \ ]], - [[\ \_\ \_\ \____\ \____/\ \___/ \ \_\ \_\ \_\ \_\]], - [[ \/_/\/_/\/____/\/___/ \/__/ \/_/\/_/\/_/\/_/]], -} -dashboard.section.buttons.val = { - dashboard.button("f", " Find file", ":Telescope find_files "), - dashboard.button("e", " New file", ":ene startinsert "), - dashboard.button("p", " Find project", ":Telescope projects "), - dashboard.button("r", " Recently used files", ":Telescope oldfiles "), - dashboard.button("t", "󱎸 Find text", ":Telescope live_grep "), - dashboard.button("c", " Configuration", ":e $MYVIMRC "), - dashboard.button("q", " Quit Neovim", ":qa"), -} - -local function footer() --- NOTE: requires the fortune-mod package to work - -- local handle = io.popen("fortune") - -- local fortune = handle:read("*a") - -- handle:close() - -- return fortune - return "thieurom" -end - -dashboard.section.footer.val = footer() - -dashboard.section.footer.opts.hl = "Type" -dashboard.section.header.opts.hl = "Include" -dashboard.section.buttons.opts.hl = "Keyword" - -dashboard.opts.opts.noautocmd = true --- vim.cmd([[autocmd User AlphaReady echo 'ready']]) -alpha.setup(dashboard.opts) diff --git a/stow-legacy/nvim/.config/nvim/lua/user/autocommands.lua b/stow-legacy/nvim/.config/nvim/lua/user/autocommands.lua deleted file mode 100644 index 8134d10..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/autocommands.lua +++ /dev/null @@ -1,2 +0,0 @@ --- Automatically close tab/vim when nvim-tree is the last window in the tab -vim.cmd "autocmd BufEnter * ++nested if winnr('$') == 1 && bufname() == 'NvimTree_' . tabpagenr() | quit | endif" diff --git a/stow-legacy/nvim/.config/nvim/lua/user/autopairs.lua b/stow-legacy/nvim/.config/nvim/lua/user/autopairs.lua deleted file mode 100644 index 224fa89..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/autopairs.lua +++ /dev/null @@ -1,8 +0,0 @@ -local status_ok, npairs = pcall(require, "nvim-autopairs") -if not status_ok then - return -end - -npairs.setup { - disable_filetype = { "TelescopePrompt" }, -} diff --git a/stow-legacy/nvim/.config/nvim/lua/user/bufferline.lua b/stow-legacy/nvim/.config/nvim/lua/user/bufferline.lua deleted file mode 100644 index 7cdb077..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/bufferline.lua +++ /dev/null @@ -1,13 +0,0 @@ -local status_ok, bufferline = pcall(require, "bufferline") -if not status_ok then - return -end - -bufferline.setup { - options = { - close_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" - right_mouse_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" - offsets = { { filetype = "NvimTree", text = "", padding = 1 } }, - separator_style = "thin", -- | "thick" | "thin" | { 'any', 'any' }, - }, -} diff --git a/stow-legacy/nvim/.config/nvim/lua/user/cmp.lua b/stow-legacy/nvim/.config/nvim/lua/user/cmp.lua deleted file mode 100644 index 405f108..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/cmp.lua +++ /dev/null @@ -1,129 +0,0 @@ -local cmp_status_ok, cmp = pcall(require, "cmp") -if not cmp_status_ok then - return -end - -local snip_status_ok, luasnip = pcall(require, "luasnip") -if not snip_status_ok then - return -end - -require("luasnip/loaders/from_vscode").lazy_load() - -local check_backspace = function() - local col = vim.fn.col "." - 1 - return col == 0 or vim.fn.getline("."):sub(col, col):match "%s" -end - -local kind_icons = { - Text = "󰉿", - Method = "󰆧", - Function = "󰊕", - Constructor = "", - Field = " ", - Variable = "󰀫", - Class = "󰠱", - Interface = "", - Module = "", - Property = "󰜢", - Unit = "󰑭", - Value = "󰎠", - Enum = "", - Keyword = "󰌋", - Snippet = "", - Color = "󰏘", - File = "󰈙", - Reference = "", - Folder = "󰉋", - EnumMember = "", - Constant = "󰏿", - Struct = "", - Event = "", - Operator = "󰆕", - TypeParameter = " ", - Misc = " ", -} - -cmp.setup { - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) -- For `luasnip` users. - end, - }, - - mapping = cmp.mapping.preset.insert { - [""] = cmp.mapping.select_prev_item(), - [""] = cmp.mapping.select_next_item(), - [""] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }), - [""] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }), - [""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), - [""] = cmp.mapping { - i = cmp.mapping.abort(), - c = cmp.mapping.close(), - }, - -- Accept currently selected item. If none selected, `select` first item. - -- Set `select` to `false` to only confirm explicitly selected items. - [""] = cmp.mapping.confirm { select = true }, - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expandable() then - luasnip.expand() - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - elseif check_backspace() then - fallback() - else - fallback() - end - end, { - "i", - "s", - }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { - "i", - "s", - }), - }, - formatting = { - fields = { "kind", "abbr", "menu" }, - format = function(entry, vim_item) - vim_item.kind = kind_icons[vim_item.kind] - vim_item.menu = ({ - nvim_lsp = "", - nvim_lua = "", - luasnip = "", - buffer = "", - path = "", - emoji = "", - })[entry.source.name] - return vim_item - end, - }, - sources = { - { name = "nvim_lsp" }, - { name = "nvim_lua" }, - { name = "luasnip" }, - { name = "buffer" }, - { name = "path" }, - }, - confirm_opts = { - behavior = cmp.ConfirmBehavior.Replace, - select = false, - }, - window = { - completion = cmp.config.window.bordered(), - documentation = cmp.config.window.bordered(), - }, - experimental = { - ghost_text = true, - }, -} diff --git a/stow-legacy/nvim/.config/nvim/lua/user/colorscheme.lua b/stow-legacy/nvim/.config/nvim/lua/user/colorscheme.lua deleted file mode 100644 index f931d2a..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/colorscheme.lua +++ /dev/null @@ -1,6 +0,0 @@ -colorscheme = "catppuccin-mocha" -local status_ok, _ = pcall(vim.cmd.colorscheme, colorscheme) -if not status_ok then - return -end - diff --git a/stow-legacy/nvim/.config/nvim/lua/user/comment.lua b/stow-legacy/nvim/.config/nvim/lua/user/comment.lua deleted file mode 100644 index 95ce945..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/comment.lua +++ /dev/null @@ -1,8 +0,0 @@ -local status_ok, comment = pcall(require, "Comment") -if not status_ok then - return -end - -comment.setup { - -- Set up -} diff --git a/stow-legacy/nvim/.config/nvim/lua/user/gitsigns.lua b/stow-legacy/nvim/.config/nvim/lua/user/gitsigns.lua deleted file mode 100644 index dfe30f2..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/gitsigns.lua +++ /dev/null @@ -1,36 +0,0 @@ -local status_ok, gitsigns = pcall(require, "gitsigns") -if not status_ok then - return -end - -gitsigns.setup { - signs = { - add = { hl = "GitSignsAdd", text = "▎", numhl = "GitSignsAddNr", linehl = "GitSignsAddLn" }, - change = { hl = "GitSignsChange", text = "▎", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" }, - delete = { hl = "GitSignsDelete", text = "", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" }, - topdelete = { hl = "GitSignsDelete", text = "", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" }, - changedelete = { hl = "GitSignsChange", text = "▎", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" }, - }, - signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` - watch_gitdir = { - interval = 1000, - follow_files = true, - }, - attach_to_untracked = true, - current_line_blame_opts = { - virt_text = true, - virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align' - delay = 1000, - }, - sign_priority = 6, - update_debounce = 100, - status_formatter = nil, -- Use default - preview_config = { - -- Options passed to nvim_open_win - border = "single", - style = "minimal", - relative = "cursor", - row = 0, - col = 1, - }, -} diff --git a/stow-legacy/nvim/.config/nvim/lua/user/keymaps.lua b/stow-legacy/nvim/.config/nvim/lua/user/keymaps.lua deleted file mode 100644 index 0b8ca0c..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/keymaps.lua +++ /dev/null @@ -1,56 +0,0 @@ --- Shorten function name -local keymap = vim.keymap.set --- Silent keymap option -local opts = { silent = true } - --- Remap space as leader key -keymap("", "", "", opts) -vim.g.mapleader = " " - --- Save -keymap("n", "w", ":write") - --- Navigate windows -keymap("n", "", "h", opts) -keymap("n", "", "j", opts) -keymap("n", "", "k", opts) -keymap("n", "", "l", opts) - --- Navigate buffers -keymap("n", "", ":bnext", opts) -keymap("n", "", ":bprevious", opts) - --- Close buffers -keymap("n", "", "Bdelete!", opts) - --- Better paste -keymap("v", "p", '"_dP', opts) - --- Plugins -- - --- NvimTree -keymap("n", "e", ":NvimTreeToggle", opts) -keymap("n", "j", ":NvimTreeFindFile", opts) - --- Telescope -keymap("n", "ff", ":Telescope find_files", opts) -keymap("n", "ft", ":Telescope live_grep", opts) -keymap("n", "fb", ":Telescope buffers", opts) - --- Comment -keymap("n", "/", "lua require('Comment.api').toggle.linewise.current()", opts) -keymap("x", "/", "lua require('Comment.api').toggle.linewise(vim.fn.visualmode())", opts) - --- Xcodebuild -keymap("n", "X", ":XcodebuildPicker", opts) -keymap("n", "xr", ":XcodebuildBuildRun", opts) -keymap("n", "xb", ":XcodebuildBuild", opts) -keymap("n", "xt", ":XcodebuildTest", opts) - --- LSP -keymap("n", "lf", "lua vim.lsp.buf.format{ async = true }", opts) - --- Gitsigns -keymap("n", "gj", ":Gitsigns next_hunk", opts) -keymap("n", "gk", ":Gitsigns prev_hunk", opts) -keymap("n", "gp", ":Gitsigns preview_hunk", opts) diff --git a/stow-legacy/nvim/.config/nvim/lua/user/lsp/handlers.lua b/stow-legacy/nvim/.config/nvim/lua/user/lsp/handlers.lua deleted file mode 100644 index 9347c75..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/lsp/handlers.lua +++ /dev/null @@ -1,77 +0,0 @@ -local M = {} - -local status_cmp_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp") -if not status_cmp_ok then - return -end - -M.capabilities = vim.lsp.protocol.make_client_capabilities() -M.capabilities.textDocument.completion.completionItem.snippetSupport = true -M.capabilities = cmp_nvim_lsp.default_capabilities(M.capabilities) - -M.setup = function() - local signs = { - - { name = "DiagnosticSignError", text = "" }, - { name = "DiagnosticSignWarn", text = "" }, - { name = "DiagnosticSignHint", text = "󰌵" }, - { name = "DiagnosticSignInfo", text = "" }, - } - - for _, sign in ipairs(signs) do - vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" }) - end - - local config = { - virtual_text = false, -- disable virtual text - signs = { - active = signs, -- show signs - }, - update_in_insert = true, - underline = true, - severity_sort = true, - float = { - focusable = true, - style = "minimal", - border = "rounded", - source = "always", - header = "", - prefix = "", - }, - } - - vim.diagnostic.config(config) - - vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { - border = "rounded", - }) - - vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { - border = "rounded", - }) -end - -local function lsp_keymaps(bufnr) - local opts = { noremap = true, silent = true } - local keymap = vim.api.nvim_buf_set_keymap - keymap(bufnr, "n", "gD", "lua vim.lsp.buf.declaration()", opts) - keymap(bufnr, "n", "gd", "lua vim.lsp.buf.definition()", opts) - keymap(bufnr, "n", "K", "lua vim.lsp.buf.hover()", opts) - keymap(bufnr, "n", "gI", "lua vim.lsp.buf.implementation()", opts) - keymap(bufnr, "n", "gr", "lua vim.lsp.buf.references()", opts) - keymap(bufnr, "n", "gl", "lua vim.diagnostic.open_float()", opts) - keymap(bufnr, "n", "li", "LspInfo", opts) - keymap(bufnr, "n", "lI", "Mason", opts) - keymap(bufnr, "n", "la", "lua vim.lsp.buf.code_action()", opts) - keymap(bufnr, "n", "lj", "lua vim.diagnostic.goto_next({buffer=0})", opts) - keymap(bufnr, "n", "lk", "lua vim.diagnostic.goto_prev({buffer=0})", opts) - keymap(bufnr, "n", "lr", "lua vim.lsp.buf.rename()", opts) - keymap(bufnr, "n", "ls", "lua vim.lsp.buf.signature_help()", opts) - keymap(bufnr, "n", "lq", "lua vim.diagnostic.setloclist()", opts) -end - -M.on_attach = function(client, bufnr) - lsp_keymaps(bufnr) -end - -return M diff --git a/stow-legacy/nvim/.config/nvim/lua/user/lsp/init.lua b/stow-legacy/nvim/.config/nvim/lua/user/lsp/init.lua deleted file mode 100644 index 6cb90c5..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/lsp/init.lua +++ /dev/null @@ -1,8 +0,0 @@ -local status_ok, _ = pcall(require, "lspconfig") -if not status_ok then - return -end - -require "user.lsp.mason" -require("user.lsp.handlers").setup() -require("user.lsp.null-ls") diff --git a/stow-legacy/nvim/.config/nvim/lua/user/lsp/mason.lua b/stow-legacy/nvim/.config/nvim/lua/user/lsp/mason.lua deleted file mode 100644 index cd66e83..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/lsp/mason.lua +++ /dev/null @@ -1,47 +0,0 @@ -local servers = { - "pyright", - "sourcekit", - "ts_ls", -} - -local settings = { - ui = { - border = "none", - icons = { - package_installed = "◍", - package_pending = "◍", - package_uninstalled = "◍", - }, - }, - log_level = vim.log.levels.INFO, - max_concurrent_installers = 4, -} - -require("mason").setup(settings) -require("mason-lspconfig").setup({ - -- ensure_installed = servers, - automatic_installation = true, -}) - -local lspconfig_status_ok, lspconfig = pcall(require, "lspconfig") -if not lspconfig_status_ok then - return -end - -local opts = {} - -for _, server in pairs(servers) do - opts = { - on_attach = require("user.lsp.handlers").on_attach, - capabilities = require("user.lsp.handlers").capabilities, - } - - server = vim.split(server, "@")[1] - - local require_ok, conf_opts = pcall(require, "user.lsp.settings." .. server) - if require_ok then - opts = vim.tbl_deep_extend("force", conf_opts, opts) - end - - lspconfig[server].setup(opts) -end diff --git a/stow-legacy/nvim/.config/nvim/lua/user/lsp/null-ls.lua b/stow-legacy/nvim/.config/nvim/lua/user/lsp/null-ls.lua deleted file mode 100644 index 960ebbb..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/lsp/null-ls.lua +++ /dev/null @@ -1,19 +0,0 @@ -local null_ls_status_ok, null_ls = pcall(require, "null-ls") -if not null_ls_status_ok then - return -end - --- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting -local formatting = null_ls.builtins.formatting --- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics -local diagnostics = null_ls.builtins.diagnostics - --- https://github.com/prettier-solidity/prettier-plugin-solidity -null_ls.setup { - debug = false, - sources = { - formatting.black.with { extra_args = { "--fast" } }, - formatting.stylua, - diagnostics.flake8, - }, -} diff --git a/stow-legacy/nvim/.config/nvim/lua/user/lsp/settings/pyright.lua b/stow-legacy/nvim/.config/nvim/lua/user/lsp/settings/pyright.lua deleted file mode 100644 index c2a518d..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/lsp/settings/pyright.lua +++ /dev/null @@ -1,9 +0,0 @@ -return { - settings = { - python = { - analysis = { - typeCheckingMode = "off", - }, - }, - }, -} diff --git a/stow-legacy/nvim/.config/nvim/lua/user/lualine.lua b/stow-legacy/nvim/.config/nvim/lua/user/lualine.lua deleted file mode 100644 index dcba84f..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/lualine.lua +++ /dev/null @@ -1,73 +0,0 @@ -local status_ok, lualine = pcall(require, "lualine") -if not status_ok then - return -end - -local hide_in_width = function() - return vim.fn.winwidth(0) > 80 -end - -local branch = { - "branch", - icon = "󰘬", - separator = { left = "", right = "", }, -} - -local diagnostics = { - "diagnostics", - sources = { "nvim_diagnostic" }, - sections = { "error", "warn" }, - symbols = { error = " ", warn = " " }, - colored = false, - always_visible = true, -} - -local diff = { - "diff", - colored = true, - symbols = { added = " ", modified = " ", removed = " " }, -- changes diff symbols - cond = hide_in_width, -} - -local location = { - "location", - padding = { left = 0, right = 1 }, -} - -local get_active_lsp = function() - local msg = "No Active Lsp" - local buf_ft = vim.api.nvim_get_option_value("filetype", {}) - local clients = vim.lsp.get_clients { bufnr = 0 } - if next(clients) == nil then - return msg - end - - for _, client in ipairs(clients) do - local filetypes = client.config.filetypes - if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then - return client.name - end - end - return msg -end - -lualine.setup { - options = { - globalstatus = true, - icons_enabled = true, - theme = "auto", - component_separators = { left = "", right = "" }, - section_separators = { left = "", right = "" }, - disabled_filetypes = { "alpha", "dashboard" }, - always_divide_middle = true, - }, - sections = { - lualine_a = { "mode" }, - lualine_b = { branch }, - lualine_c = { diff }, - lualine_x = { diagnostics, "lsp_status" }, - lualine_y = { location }, - lualine_z = { "progress" }, - }, -} - diff --git a/stow-legacy/nvim/.config/nvim/lua/user/nvim-dap.lua b/stow-legacy/nvim/.config/nvim/lua/user/nvim-dap.lua deleted file mode 100644 index 6b3f26c..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/nvim-dap.lua +++ /dev/null @@ -1,65 +0,0 @@ -local status_ok, nvim_dap = pcall(require, "dap") -if not status_ok then - return -end - -local function setupListeners() - local dap = require("dap") - local areSet = false - - dap.listeners.after["event_initialized"]["me"] = function() - if not areSet then - areSet = true - vim.keymap.set("n", "dc", dap.continue, { desc = "Continue", noremap = true }) - vim.keymap.set("n", "dC", dap.run_to_cursor, { desc = "Run To Cursor" }) - vim.keymap.set("n", "ds", dap.step_over, { desc = "Step Over" }) - vim.keymap.set("n", "di", dap.step_into, { desc = "Step Into" }) - vim.keymap.set("n", "do", dap.step_out, { desc = "Step Out" }) - vim.keymap.set({ "n", "v" }, "dh", require("dap.ui.widgets").hover, { desc = "Hover" }) - vim.keymap.set({ "n", "v" }, "de", require("dapui").eval, { desc = "Eval" }) - end - end - - dap.listeners.after["event_terminated"]["me"] = function() - if areSet then - areSet = false - vim.keymap.del("n", "dc") - vim.keymap.del("n", "dC") - vim.keymap.del("n", "ds") - vim.keymap.del("n", "di") - vim.keymap.del("n", "do") - vim.keymap.del({ "n", "v" }, "dh") - vim.keymap.del({ "n", "v" }, "de") - end - end -end - -local xcodebuild = require("xcodebuild.integrations.dap") -local codelldbPath = os.getenv("HOME") .. "/tools/codelldb-darwin-arm64/extension/adapter/codelldb" -xcodebuild.setup(codelldbPath) - -local define = vim.fn.sign_define -define("DapBreakpoint", { text = "", texthl = "DiagnosticError", linehl = "", numhl = "" }) -define("DapBreakpointRejected", { text = "", texthl = "DiagnosticError", linehl = "", numhl = "" }) -define("DapStopped", { text = "", texthl = "DiagnosticOk", linehl = "", numhl = "" }) -define("DapLogPoint", { text = "", texthl = "DiagnosticInfo", linehl = "", numhl = "" }) -define("DapLogPoint", { text = "", texthl = "DiagnosticInfo", linehl = "", numhl = "" }) - -setupListeners() - ---when breakpoint is hit, it sets the focus to the buffer with the breakpoint -require("dap").defaults.fallback.switchbuf = "usetab,uselast" - ---stylua: ignore start -vim.keymap.set("n", "dd", xcodebuild.build_and_debug, { desc = "Build & Debug" }) -vim.keymap.set("n", "dr", xcodebuild.debug_without_build, { desc = "Debug Without Building" }) -vim.keymap.set("n", "dt", xcodebuild.debug_tests, { desc = "Debug Tests" }) -vim.keymap.set("n", "dT", xcodebuild.debug_class_tests, { desc = "Debug Class Tests" }) -vim.keymap.set("n", "b", xcodebuild.toggle_breakpoint, { desc = "Toggle Breakpoint" }) -vim.keymap.set("n", "B", xcodebuild.toggle_message_breakpoint, { desc = "Toggle Message Breakpoint" }) ---stylua: ignore end - -vim.keymap.set("n", "dx", function() - xcodebuild.terminate_session() - require("dap").listeners.after["event_terminated"]["me"]() -end, { desc = "Terminate debugger" }) diff --git a/stow-legacy/nvim/.config/nvim/lua/user/nvim-dapui.lua b/stow-legacy/nvim/.config/nvim/lua/user/nvim-dapui.lua deleted file mode 100644 index 8d2e11a..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/nvim-dapui.lua +++ /dev/null @@ -1,83 +0,0 @@ -local status_ok, nvim_dapui = pcall(require, "dapui") -if not status_ok then - return -end - -nvim_dapui.setup { - controls = { - element = "repl", - enabled = true, - icons = { - disconnect = "", - run_last = "", - terminate = "⏹︎", - pause = "⏸︎", - play = "", - step_into = "󰆹", - step_out = "󰆸", - step_over = "", - step_back = "", - }, - }, - floating = { - border = "single", - mappings = { - close = { "q", "" }, - }, - }, - icons = { - collapsed = "", - expanded = "", - current_frame = "", - }, - layouts = { - { - elements = { - { id = "stacks", size = 0.25 }, - { id = "scopes", size = 0.25 }, - { id = "breakpoints", size = 0.25 }, - { id = "watches", size = 0.25 }, - }, - position = "left", - size = 40, - }, - { - elements = { - { id = "repl", size = 0.4 }, - { id = "console", size = 0.6 }, - }, - position = "bottom", - size = 10, - }, - }, -} - -local dap, dapui = require("dap"), require("dapui") -local group = vim.api.nvim_create_augroup("dapui_config", { clear = true }) - --- hide ~ in DAPUI -vim.api.nvim_create_autocmd("BufWinEnter", { - group = group, - pattern = "DAP*", - callback = function() - vim.wo.fillchars = "eob: " - end, -}) - -vim.api.nvim_create_autocmd("BufWinEnter", { - group = group, - pattern = "\\[dap\\-repl\\]", - callback = function() - vim.wo.fillchars = "eob: " - end, -}) - -dap.listeners.after.event_initialized["dapui_config"] = function() - dapui.open() -end -dap.listeners.before.event_terminated["dapui_config"] = function() - dapui.close() -end -dap.listeners.before.event_exited["dapui_config"] = function() - dapui.close() -end diff --git a/stow-legacy/nvim/.config/nvim/lua/user/nvim-tree.lua b/stow-legacy/nvim/.config/nvim/lua/user/nvim-tree.lua deleted file mode 100644 index c05f46a..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/nvim-tree.lua +++ /dev/null @@ -1,6 +0,0 @@ -local status_ok, nvim_tree = pcall(require, "nvim-tree") -if not status_ok then - return -end - -nvim_tree.setup {} diff --git a/stow-legacy/nvim/.config/nvim/lua/user/options.lua b/stow-legacy/nvim/.config/nvim/lua/user/options.lua deleted file mode 100644 index 78cacea..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/options.lua +++ /dev/null @@ -1,15 +0,0 @@ -local options = { - number = true, - cursorline = true, - ignorecase = true, - smartcase = true, - expandtab = true, - smarttab = true, - shiftwidth = 4, - tabstop = 4, -} - -for k, v in pairs(options) do - vim.opt[k] = v -end - diff --git a/stow-legacy/nvim/.config/nvim/lua/user/plugins.lua b/stow-legacy/nvim/.config/nvim/lua/user/plugins.lua deleted file mode 100644 index 70c789b..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/plugins.lua +++ /dev/null @@ -1,100 +0,0 @@ -local fn = vim.fn - --- Automatically install packer -local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim" -if fn.empty(fn.glob(install_path)) > 0 then - PACKER_BOOTSTRAP = fn.system({ - "git", - "clone", - "--depth", - "1", - "https://github.com/wbthomason/packer.nvim", - install_path, - }) - print("Installing packer close and reopen Neovim...") - vim.cmd([[packadd packer.nvim]]) -end - --- Autocommand that reloads neovim whenever you save the plugins.lua file -vim.cmd([[ - augroup packer_user_config - autocmd! - autocmd BufWritePost plugins.lua source | PackerSync - augroup end -]]) - --- Use a protected call so we don't error out on first use -local status_ok, packer = pcall(require, "packer") -if not status_ok then - return -end - --- Have packer use a popup window -packer.init({ - display = { - open_fn = function() - return require("packer.util").float({ border = "rounded" }) - end, - }, -}) - --- Install plugins here -return packer.startup(function(use) - use { "wbthomason/packer.nvim", commit = "6afb67460283f0e990d35d229fd38fdc04063e0a" } -- Have packer manage itself - use { "nvim-tree/nvim-tree.lua" } - use { "nvim-lua/plenary.nvim" } - use { "nvim-telescope/telescope.nvim" } - use { "nvim-tree/nvim-web-devicons" } - use { "nvim-lualine/lualine.nvim", commit = "a52f078026b27694d2290e34efa61a6e4a690621" } - use { "akinsho/bufferline.nvim", commit = "99f0932365b34e22549ff58e1bea388465d15e99" } - use { "moll/vim-bbye" } - use { "windwp/nvim-autopairs" } - use { "numToStr/Comment.nvim" } - use { "goolord/alpha-nvim", commit = "a35468cd72645dbd52c0624ceead5f301c566dff" } - use { - "folke/which-key.nvim", - config = function() - vim.o.timeout = true - vim.o.timeoutlen = 300 - end - } - use { "akinsho/toggleterm.nvim" } - - -- Colorschemes - use { "EdenEast/nightfox.nvim" } - use { "neanias/everforest-nvim" } - use { "catppuccin/nvim", as = "catppuccin" } - - -- cmp plugins - use { "hrsh7th/nvim-cmp" } -- The completion plugin - use { "hrsh7th/cmp-buffer" } -- buffer completions - use { "hrsh7th/cmp-path" } -- path completions - use { "saadparwaiz1/cmp_luasnip" } -- snippet completions - use { "hrsh7th/cmp-nvim-lsp" } - - -- snippets - use { "L3MON4D3/LuaSnip", commit = "e81cbe6004051c390721d8570a4a0541ceb0df10" } - use { "rafamadriz/friendly-snippets" } -- a bunch of snippets to use - - -- LSP - use { "neovim/nvim-lspconfig", commit = "b6091272422bb0fbd729f7f5d17a56d37499c54f" } -- enable LSP - use { "williamboman/mason.nvim" } - use { "williamboman/mason-lspconfig.nvim", commit = "e86a4c84ff35240639643ffed56ee1c4d55f538e" } - use { "jose-elias-alvarez/null-ls.nvim" } -- for formatters and linters - - -- Treesitter - use { "nvim-treesitter/nvim-treesitter", commit = "4fd6d9dc175f367cdcec87630d8a3950ba7daef4" } - - -- Git - use { "lewis6991/gitsigns.nvim" } - - -- Tools - use { "MunifTanjim/nui.nvim" } - use { "rcarriga/nvim-dap-ui", requires = { "mfussenegger/nvim-dap", "nvim-neotest/nvim-nio" } } - use { "wojciech-kulik/xcodebuild.nvim" } - - if PACKER_BOOTSTRAP then - require("packer").sync() - end -end) - diff --git a/stow-legacy/nvim/.config/nvim/lua/user/telescope.lua b/stow-legacy/nvim/.config/nvim/lua/user/telescope.lua deleted file mode 100644 index 48de140..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/telescope.lua +++ /dev/null @@ -1,26 +0,0 @@ -local status_ok, telescope = pcall(require, "telescope") -if not status_ok then - return -end - -local actions = require "telescope.actions" - -telescope.setup { - defaults = { - - prompt_prefix = " ", - selection_caret = " ", - path_display = { "smart" }, - file_ignore_patterns = { ".git/", "node_modules" }, - - mappings = { - i = { - [""] = actions.close, - [""] = actions.cycle_history_next, - [""] = actions.cycle_history_prev, - [""] = actions.move_selection_next, - [""] = actions.move_selection_previous, - }, - }, - }, -} diff --git a/stow-legacy/nvim/.config/nvim/lua/user/toggleterm.lua b/stow-legacy/nvim/.config/nvim/lua/user/toggleterm.lua deleted file mode 100644 index c76c640..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/toggleterm.lua +++ /dev/null @@ -1,39 +0,0 @@ -local status_ok, toggleterm = pcall(require, "toggleterm") -if not status_ok then - return -end - -toggleterm.setup({ - size = 20, - open_mapping = [[]], - hide_numbers = true, - shade_filetypes = {}, - shade_terminals = true, - shading_factor = 2, - start_in_insert = true, - insert_mappings = true, - persist_size = true, - direction = "float", - close_on_exit = true, - shell = vim.o.shell, - float_opts = { - border = "curved", - winblend = 0, - highlights = { - border = "Normal", - background = "Normal", - }, - }, -}) - -function _G.set_terminal_keymaps() - local opts = {noremap = true} - vim.api.nvim_buf_set_keymap(0, 't', '', [[]], opts) - vim.api.nvim_buf_set_keymap(0, 't', 'jk', [[]], opts) - vim.api.nvim_buf_set_keymap(0, 't', '', [[h]], opts) - vim.api.nvim_buf_set_keymap(0, 't', '', [[j]], opts) - vim.api.nvim_buf_set_keymap(0, 't', '', [[k]], opts) - vim.api.nvim_buf_set_keymap(0, 't', '', [[l]], opts) -end - -vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()') diff --git a/stow-legacy/nvim/.config/nvim/lua/user/treesitter.lua b/stow-legacy/nvim/.config/nvim/lua/user/treesitter.lua deleted file mode 100644 index 80e9eaf..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/treesitter.lua +++ /dev/null @@ -1,30 +0,0 @@ -local status_ok, treesitter = pcall(require, "nvim-treesitter") -if not status_ok then - return -end - -local status_ok, configs = pcall(require, "nvim-treesitter.configs") -if not status_ok then - return -end - -configs.setup { - ensure_installed = { "lua", "markdown", "markdown_inline", "bash", "python", "swift" }, -- put the language you want in this array - -- ensure_installed = "all", -- one of "all" or a list of languages - ignore_install = { "" }, -- List of parsers to ignore installing - sync_install = false, -- install languages synchronously (only applied to `ensure_installed`) - - highlight = { - enable = true, -- false will disable the whole extension - disable = { "css" }, -- list of language that will be disabled - }, - autopairs = { - enable = true, - }, - indent = { enable = true, disable = { "python", "css" } }, - - context_commentstring = { - enable = true, - enable_autocmd = false, - }, -} diff --git a/stow-legacy/nvim/.config/nvim/lua/user/which-key.lua b/stow-legacy/nvim/.config/nvim/lua/user/which-key.lua deleted file mode 100644 index f9948ad..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/which-key.lua +++ /dev/null @@ -1,6 +0,0 @@ -local status_ok, wk = pcall(require, "which-key") -if not status_ok then - return -end - -wk.setup() diff --git a/stow-legacy/nvim/.config/nvim/lua/user/xcodebuild.lua b/stow-legacy/nvim/.config/nvim/lua/user/xcodebuild.lua deleted file mode 100644 index 374266a..0000000 --- a/stow-legacy/nvim/.config/nvim/lua/user/xcodebuild.lua +++ /dev/null @@ -1,6 +0,0 @@ -local status_ok, xcodebuild = pcall(require, "xcodebuild") -if not status_ok then - return -end - -xcodebuild.setup() diff --git a/stow-legacy/vim/.vimrc b/stow-legacy/vim/.vimrc deleted file mode 100644 index aaa5fd2..0000000 --- a/stow-legacy/vim/.vimrc +++ /dev/null @@ -1,264 +0,0 @@ -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" => General -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" - -" Load plugins -call plug#begin() -Plug 'itchyny/lightline.vim' -Plug 'arcticicestudio/nord-vim' -Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' } -Plug 'preservim/nerdtree' -Plug 'davidhalter/jedi-vim' -Plug 'sheerun/vim-polyglot' -Plug 'jiangmiao/auto-pairs' -call plug#end() - -" Sets how many lines of history VIM has to remember -set history=500 - -" Enable filetype plugins -filetype plugin on -filetype indent on - -" Set to auto read when a file is changed from the outside -set autoread -au FocusGained,BufEnter * checktime - -" With a map leader it's possible to do extra key combinations -" like w saves the current file -let mapleader = "," - -" Fast saving -nmap w :w! - -" :W sudo saves the file -" (useful for handling the permission-denied error) -command! W execute 'w !sudo tee % > /dev/null' edit! - - -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" => VIM user interface -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" - -" Set 7 lines to the cursor - when moving vertically using j/k -set so=7 - -" Avoid garbled characters in Chinese language windows OS -let $LANG='en' -set langmenu=en -" source $VIMRUNTIME/delmenu.vim -" source $VIMRUNTIME/menu.vim - -" Turn on the Wild menu -set wildmenu - -" Ignore compiled files -set wildignore=*.o,*~,*.pyc -if has("win16") || has("win32") - set wildignore+=.git\*,.hg\*,.svn\* -else - set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*/.DS_Store -endif - -" Show line numbers -set number - -"Always show current position -set ruler - -" Highlight current line -set cursorline - -" Height of the command bar -set cmdheight=1 - -" A buffer becomes hidden when it is abandoned -set hid - -" Configure backspace so it acts as it should act -set backspace=eol,start,indent -set whichwrap+=<,>,h,l - -" Ignore case when searching -set ignorecase - -" When searching try to be smart about cases -set smartcase - -" Highlight search results -set hlsearch - -" Makes search act like search in modern browsers -set incsearch - -" Don't redraw while executing macros (good performance config) -set lazyredraw - -" For regular expressions turn magic on -set magic - -" Show matching brackets when text indicator is over them -set showmatch - -" Clear search -map :let @/='' " clear search - -" How many tenths of a second to blink when matching brackets -set mat=2 - -" No annoying sound on errors -set noerrorbells -" set novisualbell -set t_vb= -set tm=500 - -" Add a bit extra margin to the left -" set foldcolumn=1 - -" Hide modes -set noshowmode - -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" => Colors and Fonts -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" Enable syntax highlighting -syntax enable - -if (has("termguicolors")) - set termguicolors -endif - -" Colorscheme -colorscheme nord - -" Set theme for status line -let g:lightline = { - \ 'colorscheme': 'nord', - \ } - -set background=dark - -" Set utf8 as standard encoding and en_US as the standard language -set encoding=utf8 - -" Use Unix as the standard file type -set ffs=unix,dos,mac - - -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" => Files, backups and undo -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" Turn backup off, since most stuff is in SVN, git etc. anyway... -set nobackup -set nowb -set noswapfile - - -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" => Text, tab and indent related -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" Use spaces instead of tabs -set expandtab - -" Be smart when using tabs ;) -set smarttab - -" 1 tab == 4 spaces -set shiftwidth=4 -set tabstop=4 - -" Linebreak on 500 characters -set lbr -set tw=500 - -set ai "Auto indent -set si "Smart indent -set wrap "Wrap lines - - -"""""""""""""""""""""""""""""" -" => Visual mode related -"""""""""""""""""""""""""""""" -" Visual mode pressing * or # searches for the current selection -" Super useful! From an idea by Michael Naumann -vnoremap * :call VisualSelection('', '')/=@/ -vnoremap # :call VisualSelection('', '')?=@/ - -" Return to last edit position when opening files (You want this!) -au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif - - -"""""""""""""""""""""""""""""" -" => Status line -"""""""""""""""""""""""""""""" -" Always show the status line -set laststatus=2 - - -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" => Editing mappings -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" Remap VIM 0 to first non-blank character -map 0 ^ - -" Move a line of text using ALT+[jk] or Command+[jk] on mac -nmap mz:m+`z -nmap mz:m-2`z -vmap :m'>+`mzgv`yo`z -vmap :m'<-2`>my` - nmap - vmap - vmap -endif - -" Delete trailing white space on save, useful for some filetypes ;) -fun! CleanExtraSpaces() - let save_cursor = getpos(".") - let old_query = getreg('/') - silent! %s/\s\+$//e - call setpos('.', save_cursor) - call setreg('/', old_query) -endfun - -if has("autocmd") - autocmd BufWritePre *.txt,*.js,*.py,*.wiki,*.sh,*.coffee :call CleanExtraSpaces() -endif - - -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" => NERDTree -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -nnoremap :NERDTreeToggle - -autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif - - -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" => Helper functions -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" - -function! VisualSelection(direction, extra_filter) range - let l:saved_reg = @" - execute "normal! vgvy" - - let l:pattern = escape(@", "\\/.*'$^~[]") - let l:pattern = substitute(l:pattern, "\n$", "", "") - - if a:direction == 'gv' - call CmdLine("Ack '" . l:pattern . "' " ) - elseif a:direction == 'replace' - call CmdLine("%s" . '/'. l:pattern . '/') - endif - - let @/ = l:pattern - let @" = l:saved_reg -endfunction - -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" => Language support -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -let g:go_def_mode='gopls' -let g:go_info_mode='gopls' From 120c81b832ccf747f02afacf2a6a01b9a1bcf583 Mon Sep 17 00:00:00 2001 From: Doan Thieu Date: Fri, 15 May 2026 21:59:14 +0700 Subject: [PATCH 04/18] Add Fish shell config --- README.md | 3 +- private_dot_config/fish/config.fish | 9 ++ .../fish/functions/fish_prompt.fish | 90 +++++++++++++++++++ .../functions/fish_user_key_bindings.fish | 5 ++ .../fish/themes/Catppuccin Mocha.theme | 30 +++++++ 5 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 private_dot_config/fish/config.fish create mode 100644 private_dot_config/fish/functions/fish_prompt.fish create mode 100644 private_dot_config/fish/functions/fish_user_key_bindings.fish create mode 100644 private_dot_config/fish/themes/Catppuccin Mocha.theme diff --git a/README.md b/README.md index 4363097..9558910 100644 --- a/README.md +++ b/README.md @@ -32,4 +32,5 @@ identity in `~/.gitconfig.local`, for example: Generated and local-only files are intentionally not managed, including Neovim compiled packer output, `.DS_Store`, Kitty backups, and Karabiner automatic -backups. +backups. Fish universal variables are also local-only, so `fish_variables` is +not tracked. diff --git a/private_dot_config/fish/config.fish b/private_dot_config/fish/config.fish new file mode 100644 index 0000000..521003a --- /dev/null +++ b/private_dot_config/fish/config.fish @@ -0,0 +1,9 @@ +if status is-interactive + # Commands to run in interactive sessions can go here +end + +set -Ux EDITOR nvim +alias vi="nvim" +alias vim="nvim" +alias view="nvim -R" +alias vimdiff="nvim -d" diff --git a/private_dot_config/fish/functions/fish_prompt.fish b/private_dot_config/fish/functions/fish_prompt.fish new file mode 100644 index 0000000..8b1d19c --- /dev/null +++ b/private_dot_config/fish/functions/fish_prompt.fish @@ -0,0 +1,90 @@ +function fish_prompt + set -l __last_command_exit_status $status + + if not set -q -g __fish_arrow_functions_defined + set -g __fish_arrow_functions_defined + function _git_branch_name + set -l branch (git symbolic-ref --quiet HEAD 2>/dev/null) + if set -q branch[1] + echo (string replace -r '^refs/heads/' '' $branch) + else + echo (git rev-parse --short HEAD 2>/dev/null) + end + end + + function _is_git_dirty + not command git diff-index --cached --quiet HEAD -- &>/dev/null + or not command git diff --no-ext-diff --quiet --exit-code &>/dev/null + end + + function _is_git_repo + type -q git + or return 1 + git rev-parse --git-dir >/dev/null 2>&1 + end + + function _hg_branch_name + echo (hg branch 2>/dev/null) + end + + function _is_hg_dirty + set -l stat (hg status -mard 2>/dev/null) + test -n "$stat" + end + + function _is_hg_repo + fish_print_hg_root >/dev/null + end + + function _repo_branch_name + _$argv[1]_branch_name + end + + function _is_repo_dirty + _is_$argv[1]_dirty + end + + function _repo_type + if _is_hg_repo + echo hg + return 0 + else if _is_git_repo + echo git + return 0 + end + return 1 + end + end + + set -l cyan (set_color -o cyan) + set -l yellow (set_color -o yellow) + set -l red (set_color -o red) + set -l green (set_color -o green) + set -l blue (set_color -o blue) + set -l normal (set_color normal) + + set -l arrow_color "$green" + if test $__last_command_exit_status != 0 + set arrow_color "$red" + end + + set -l arrow "$arrow_color➜ " + if fish_is_root_user + set arrow "$arrow_color# " + end + + set -l cwd $cyan(basename (prompt_pwd)) + + set -l repo_info + if set -l repo_type (_repo_type) + set -l repo_branch $red(_repo_branch_name $repo_type) + set repo_info "$blue $repo_type:($repo_branch$blue)" + + if _is_repo_dirty $repo_type + set -l dirty "$yellow ✗" + set repo_info "$repo_info$dirty" + end + end + + echo -n -s $arrow ' '$cwd $repo_info $normal ' ' +end diff --git a/private_dot_config/fish/functions/fish_user_key_bindings.fish b/private_dot_config/fish/functions/fish_user_key_bindings.fish new file mode 100644 index 0000000..1c86996 --- /dev/null +++ b/private_dot_config/fish/functions/fish_user_key_bindings.fish @@ -0,0 +1,5 @@ +function fish_user_key_bindings + if type -q fzf + fzf --fish | source + end +end diff --git a/private_dot_config/fish/themes/Catppuccin Mocha.theme b/private_dot_config/fish/themes/Catppuccin Mocha.theme new file mode 100644 index 0000000..b1fe2b8 --- /dev/null +++ b/private_dot_config/fish/themes/Catppuccin Mocha.theme @@ -0,0 +1,30 @@ +# name: 'Catppuccin Mocha' +# url: 'https://github.com/catppuccin/fish' +# preferred_background: 1e1e2e + +fish_color_normal cdd6f4 +fish_color_command 89b4fa +fish_color_param f2cdcd +fish_color_keyword f38ba8 +fish_color_quote a6e3a1 +fish_color_redirection f5c2e7 +fish_color_end fab387 +fish_color_comment 7f849c +fish_color_error f38ba8 +fish_color_gray 6c7086 +fish_color_selection --background=313244 +fish_color_search_match --background=313244 +fish_color_option a6e3a1 +fish_color_operator f5c2e7 +fish_color_escape eba0ac +fish_color_autosuggestion 6c7086 +fish_color_cancel f38ba8 +fish_color_cwd f9e2af +fish_color_user 94e2d5 +fish_color_host 89b4fa +fish_color_host_remote a6e3a1 +fish_color_status f38ba8 +fish_pager_color_progress 6c7086 +fish_pager_color_prefix f5c2e7 +fish_pager_color_completion cdd6f4 +fish_pager_color_description 6c7086 From 262736272d5711987c8c06aebb4186daec58cd73 Mon Sep 17 00:00:00 2001 From: Thieurom Date: Sat, 16 May 2026 14:52:12 +0700 Subject: [PATCH 05/18] Migrate Neovim plugins to vim.pack --- .../nvim/lua/user/indentline.lua | 24 +-- .../nvim/lua/user/lsp/handlers.lua | 11 +- .../nvim/lua/user/lsp/null-ls.lua | 3 - private_dot_config/nvim/lua/user/plugins.lua | 145 +++++++----------- .../nvim/lua/user/treesitter.lua | 77 +++++++--- 5 files changed, 125 insertions(+), 135 deletions(-) diff --git a/private_dot_config/nvim/lua/user/indentline.lua b/private_dot_config/nvim/lua/user/indentline.lua index d953f5c..e607d1b 100644 --- a/private_dot_config/nvim/lua/user/indentline.lua +++ b/private_dot_config/nvim/lua/user/indentline.lua @@ -1,18 +1,18 @@ -local status_ok, indent_blankline = pcall(require, "indent_blankline") +local status_ok, ibl = pcall(require, "ibl") if not status_ok then return end -indent_blankline.setup { - char = "▏", - show_trailing_blankline_indent = false, - show_first_indent_level = false, - use_treesitter = true, - show_current_context = true, - buftype_exclude = { "terminal", "nofile" }, - filetype_exclude = { - "help", - "packer", - "NvimTree", +ibl.setup { + indent = { + char = "▏", + }, + exclude = { + buftypes = { "terminal", "nofile" }, + filetypes = { + "help", + "query", + "NvimTree", + }, }, } diff --git a/private_dot_config/nvim/lua/user/lsp/handlers.lua b/private_dot_config/nvim/lua/user/lsp/handlers.lua index e6f5fdb..15b3c05 100644 --- a/private_dot_config/nvim/lua/user/lsp/handlers.lua +++ b/private_dot_config/nvim/lua/user/lsp/handlers.lua @@ -42,13 +42,6 @@ M.setup = function() vim.diagnostic.config(config) - vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { - border = "rounded", - }) - - vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { - border = "rounded", - }) end local function lsp_keymaps(bufnr) @@ -56,7 +49,7 @@ local function lsp_keymaps(bufnr) local keymap = vim.api.nvim_buf_set_keymap keymap(bufnr, "n", "gD", "lua vim.lsp.buf.declaration()", opts) keymap(bufnr, "n", "gd", "lua vim.lsp.buf.definition()", opts) - keymap(bufnr, "n", "K", "lua vim.lsp.buf.hover()", opts) + keymap(bufnr, "n", "K", "lua vim.lsp.buf.hover({ border = 'rounded' })", opts) keymap(bufnr, "n", "gI", "lua vim.lsp.buf.implementation()", opts) keymap(bufnr, "n", "gr", "lua vim.lsp.buf.references()", opts) keymap(bufnr, "n", "gl", "lua vim.diagnostic.open_float()", opts) @@ -66,7 +59,7 @@ local function lsp_keymaps(bufnr) keymap(bufnr, "n", "lj", "lua vim.diagnostic.goto_next({buffer=0})", opts) keymap(bufnr, "n", "lk", "lua vim.diagnostic.goto_prev({buffer=0})", opts) keymap(bufnr, "n", "lr", "lua vim.lsp.buf.rename()", opts) - keymap(bufnr, "n", "ls", "lua vim.lsp.buf.signature_help()", opts) + keymap(bufnr, "n", "ls", "lua vim.lsp.buf.signature_help({ border = 'rounded' })", opts) keymap(bufnr, "n", "lq", "lua vim.diagnostic.setloclist()", opts) end diff --git a/private_dot_config/nvim/lua/user/lsp/null-ls.lua b/private_dot_config/nvim/lua/user/lsp/null-ls.lua index 960ebbb..a79a354 100644 --- a/private_dot_config/nvim/lua/user/lsp/null-ls.lua +++ b/private_dot_config/nvim/lua/user/lsp/null-ls.lua @@ -5,8 +5,6 @@ end -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting local formatting = null_ls.builtins.formatting --- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics -local diagnostics = null_ls.builtins.diagnostics -- https://github.com/prettier-solidity/prettier-plugin-solidity null_ls.setup { @@ -14,6 +12,5 @@ null_ls.setup { sources = { formatting.black.with { extra_args = { "--fast" } }, formatting.stylua, - diagnostics.flake8, }, } diff --git a/private_dot_config/nvim/lua/user/plugins.lua b/private_dot_config/nvim/lua/user/plugins.lua index 1d98408..29ebdc2 100644 --- a/private_dot_config/nvim/lua/user/plugins.lua +++ b/private_dot_config/nvim/lua/user/plugins.lua @@ -1,93 +1,62 @@ -local fn = vim.fn - --- Automatically install packer -local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim" -if fn.empty(fn.glob(install_path)) > 0 then - PACKER_BOOTSTRAP = fn.system({ - "git", - "clone", - "--depth", - "1", - "https://github.com/wbthomason/packer.nvim", - install_path, - }) - print("Installing packer close and reopen Neovim...") - vim.cmd([[packadd packer.nvim]]) -end - --- Autocommand that reloads neovim whenever you save the plugins.lua file -vim.cmd([[ - augroup packer_user_config - autocmd! - autocmd BufWritePost plugins.lua source | PackerSync - augroup end -]]) - --- Use a protected call so we don't error out on first use -local status_ok, packer = pcall(require, "packer") -if not status_ok then - return +local gh = function(repo) + return "https://github.com/" .. repo end --- Have packer use a popup window -packer.init({ - display = { - open_fn = function() - return require("packer.util").float({ border = "rounded" }) - end, - }, -}) - --- Install plugins here -return packer.startup(function(use) - use { "wbthomason/packer.nvim", commit = "6afb67460283f0e990d35d229fd38fdc04063e0a" } -- Have packer manage itself - use { "nvim-tree/nvim-tree.lua" } - use { "nvim-lua/plenary.nvim" } - use { "nvim-telescope/telescope.nvim" } - use { "nvim-tree/nvim-web-devicons" } - use { "nvim-lualine/lualine.nvim", commit = "a52f078026b27694d2290e34efa61a6e4a690621" } - use { "akinsho/bufferline.nvim" } - use { "moll/vim-bbye" } - use { "windwp/nvim-autopairs" } - use { "numToStr/Comment.nvim" } - use { - "folke/which-key.nvim", - config = function() - vim.o.timeout = true - vim.o.timeoutlen = 300 +vim.api.nvim_create_autocmd("PackChanged", { + callback = function(event) + local name = event.data.spec.name + local kind = event.data.kind + + if name == "nvim-treesitter" and (kind == "install" or kind == "update") then + vim.cmd.packadd("treesitter-parser-registry") + vim.cmd.packadd("nvim-treesitter") + if vim.fn.executable("tree-sitter") == 1 then + vim.cmd("TSUpdate") + end end - } - use { "akinsho/toggleterm.nvim" } - - -- Colorschemes - use { "EdenEast/nightfox.nvim" } - use { "neanias/everforest-nvim" } - use { "catppuccin/nvim", as = "catppuccin" } - - -- cmp plugins - use { "hrsh7th/nvim-cmp" } -- The completion plugin - use { "hrsh7th/cmp-buffer" } -- buffer completions - use { "hrsh7th/cmp-path" } -- path completions - use { "saadparwaiz1/cmp_luasnip" } -- snippet completions - use { "hrsh7th/cmp-nvim-lsp" } - - -- snippets - use { "L3MON4D3/LuaSnip", commit = "e81cbe6004051c390721d8570a4a0541ceb0df10" } - use { "rafamadriz/friendly-snippets" } -- a bunch of snippets to use - - -- LSP - use { "neovim/nvim-lspconfig", commit = "b6091272422bb0fbd729f7f5d17a56d37499c54f" } -- enable LSP - use { "williamboman/mason.nvim" } - use { "williamboman/mason-lspconfig.nvim", commit = "e86a4c84ff35240639643ffed56ee1c4d55f538e" } - use { "nvimtools/none-ls.nvim" } -- for formatters and linters - - -- Treesitter - use { "nvim-treesitter/nvim-treesitter", commit = "4fd6d9dc175f367cdcec87630d8a3950ba7daef4" } + end, +}) - -- Git - use { "lewis6991/gitsigns.nvim" } +vim.pack.add({ + { src = gh("nvim-tree/nvim-tree.lua") }, + { src = gh("nvim-lua/plenary.nvim") }, + { src = gh("nvim-telescope/telescope.nvim") }, + { src = gh("nvim-tree/nvim-web-devicons") }, + { src = gh("nvim-lualine/lualine.nvim"), version = "a52f078026b27694d2290e34efa61a6e4a690621" }, + { src = gh("akinsho/bufferline.nvim") }, + { src = gh("moll/vim-bbye") }, + { src = gh("windwp/nvim-autopairs") }, + { src = gh("numToStr/Comment.nvim") }, + { src = gh("folke/which-key.nvim") }, + { src = gh("akinsho/toggleterm.nvim") }, + { src = gh("lukas-reineke/indent-blankline.nvim") }, + + { src = gh("EdenEast/nightfox.nvim") }, + { src = gh("neanias/everforest-nvim") }, + { src = gh("catppuccin/nvim"), name = "catppuccin" }, + + { src = gh("hrsh7th/nvim-cmp") }, + { src = gh("hrsh7th/cmp-buffer") }, + { src = gh("hrsh7th/cmp-path") }, + { src = gh("saadparwaiz1/cmp_luasnip") }, + { src = gh("hrsh7th/cmp-nvim-lsp") }, + + { src = gh("L3MON4D3/LuaSnip"), version = "e81cbe6004051c390721d8570a4a0541ceb0df10" }, + { src = gh("rafamadriz/friendly-snippets") }, + + { src = gh("neovim/nvim-lspconfig"), version = "b6091272422bb0fbd729f7f5d17a56d37499c54f" }, + { src = gh("williamboman/mason.nvim") }, + { src = gh("williamboman/mason-lspconfig.nvim"), version = "e86a4c84ff35240639643ffed56ee1c4d55f538e" }, + { src = gh("nvimtools/none-ls.nvim") }, + + { src = gh("neovim-treesitter/treesitter-parser-registry") }, + { src = gh("neovim-treesitter/nvim-treesitter") }, + + { src = gh("lewis6991/gitsigns.nvim") }, +}, { + confirm = false, + load = true, +}) - if PACKER_BOOTSTRAP then - require("packer").sync() - end -end) +vim.o.timeout = true +vim.o.timeoutlen = 300 diff --git a/private_dot_config/nvim/lua/user/treesitter.lua b/private_dot_config/nvim/lua/user/treesitter.lua index acfbb76..28dc245 100644 --- a/private_dot_config/nvim/lua/user/treesitter.lua +++ b/private_dot_config/nvim/lua/user/treesitter.lua @@ -1,30 +1,61 @@ -local status_ok, treesitter = pcall(require, "nvim-treesitter") -if not status_ok then - return -end +local languages = { + "lua", + "javascript", + "typescript", + "tsx", + "html", + "html_tags", + "css", + "json", + "ecma", + "jsx", + "markdown", + "markdown_inline", + "bash", + "python", + "swift", + "dart", +} + +local highlight_filetypes = { + "lua", + "javascript", + "typescript", + "typescriptreact", + "html", + "json", + "markdown", + "sh", + "bash", + "python", + "swift", + "dart", +} + +local indent_filetypes = vim.tbl_filter(function(filetype) + return not vim.tbl_contains({ "python" }, filetype) +end, highlight_filetypes) -local status_ok, configs = pcall(require, "nvim-treesitter.configs") +local status_ok, treesitter = pcall(require, "nvim-treesitter") if not status_ok then return end -configs.setup { - ensure_installed = { "lua", "javascript", "typescript", "tsx", "html", "css", "json", "markdown", "markdown_inline", "bash", "python", "swift", "dart" }, -- put the language you want in this array - -- ensure_installed = "all", -- one of "all" or a list of languages - ignore_install = { "" }, -- List of parsers to ignore installing - sync_install = false, -- install languages synchronously (only applied to `ensure_installed`) +treesitter.setup() +if vim.fn.executable("tree-sitter") == 1 then + treesitter.install(languages) +end - highlight = { - enable = true, -- false will disable the whole extension - disable = { "css" }, -- list of language that will be disabled - }, - autopairs = { - enable = true, - }, - indent = { enable = true, disable = { "python", "css" } }, +vim.api.nvim_create_autocmd("FileType", { + pattern = highlight_filetypes, + callback = function() + pcall(vim.treesitter.start) + end, +}) - context_commentstring = { - enable = true, - enable_autocmd = false, - }, -} +vim.api.nvim_create_autocmd("FileType", { + pattern = indent_filetypes, + callback = function() + vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" + end, +}) From c49c3df0d266807a67ca501381b04ba7b538be02 Mon Sep 17 00:00:00 2001 From: Thieurom Date: Sat, 16 May 2026 15:08:48 +0700 Subject: [PATCH 06/18] Update Neovim plugin lockfile --- private_dot_config/nvim/lua/user/lsp/init.lua | 5 - .../nvim/lua/user/lsp/mason.lua | 20 +-- private_dot_config/nvim/lua/user/plugins.lua | 8 +- private_dot_config/nvim/nvim-pack-lock.json | 120 ++++++++++++++++++ 4 files changed, 135 insertions(+), 18 deletions(-) create mode 100644 private_dot_config/nvim/nvim-pack-lock.json diff --git a/private_dot_config/nvim/lua/user/lsp/init.lua b/private_dot_config/nvim/lua/user/lsp/init.lua index 6cb90c5..a059cd6 100644 --- a/private_dot_config/nvim/lua/user/lsp/init.lua +++ b/private_dot_config/nvim/lua/user/lsp/init.lua @@ -1,8 +1,3 @@ -local status_ok, _ = pcall(require, "lspconfig") -if not status_ok then - return -end - require "user.lsp.mason" require("user.lsp.handlers").setup() require("user.lsp.null-ls") diff --git a/private_dot_config/nvim/lua/user/lsp/mason.lua b/private_dot_config/nvim/lua/user/lsp/mason.lua index 858d087..e73a927 100644 --- a/private_dot_config/nvim/lua/user/lsp/mason.lua +++ b/private_dot_config/nvim/lua/user/lsp/mason.lua @@ -2,7 +2,13 @@ local servers = { "pyright", "sourcekit", "dartls", - "tsserver" + "ts_ls" +} + +local mason_servers = { + "pyright", + "dartls", + "ts_ls", } local settings = { @@ -20,15 +26,10 @@ local settings = { require("mason").setup(settings) require("mason-lspconfig").setup({ - -- ensure_installed = servers, - automatic_installation = true, + ensure_installed = mason_servers, + automatic_enable = false, }) -local lspconfig_status_ok, lspconfig = pcall(require, "lspconfig") -if not lspconfig_status_ok then - return -end - local opts = {} for _, server in pairs(servers) do @@ -44,5 +45,6 @@ for _, server in pairs(servers) do opts = vim.tbl_deep_extend("force", conf_opts, opts) end - lspconfig[server].setup(opts) + vim.lsp.config(server, opts) + vim.lsp.enable(server) end diff --git a/private_dot_config/nvim/lua/user/plugins.lua b/private_dot_config/nvim/lua/user/plugins.lua index 29ebdc2..f2786a1 100644 --- a/private_dot_config/nvim/lua/user/plugins.lua +++ b/private_dot_config/nvim/lua/user/plugins.lua @@ -22,7 +22,7 @@ vim.pack.add({ { src = gh("nvim-lua/plenary.nvim") }, { src = gh("nvim-telescope/telescope.nvim") }, { src = gh("nvim-tree/nvim-web-devicons") }, - { src = gh("nvim-lualine/lualine.nvim"), version = "a52f078026b27694d2290e34efa61a6e4a690621" }, + { src = gh("nvim-lualine/lualine.nvim") }, { src = gh("akinsho/bufferline.nvim") }, { src = gh("moll/vim-bbye") }, { src = gh("windwp/nvim-autopairs") }, @@ -41,12 +41,12 @@ vim.pack.add({ { src = gh("saadparwaiz1/cmp_luasnip") }, { src = gh("hrsh7th/cmp-nvim-lsp") }, - { src = gh("L3MON4D3/LuaSnip"), version = "e81cbe6004051c390721d8570a4a0541ceb0df10" }, + { src = gh("L3MON4D3/LuaSnip") }, { src = gh("rafamadriz/friendly-snippets") }, - { src = gh("neovim/nvim-lspconfig"), version = "b6091272422bb0fbd729f7f5d17a56d37499c54f" }, + { src = gh("neovim/nvim-lspconfig") }, { src = gh("williamboman/mason.nvim") }, - { src = gh("williamboman/mason-lspconfig.nvim"), version = "e86a4c84ff35240639643ffed56ee1c4d55f538e" }, + { src = gh("williamboman/mason-lspconfig.nvim") }, { src = gh("nvimtools/none-ls.nvim") }, { src = gh("neovim-treesitter/treesitter-parser-registry") }, diff --git a/private_dot_config/nvim/nvim-pack-lock.json b/private_dot_config/nvim/nvim-pack-lock.json new file mode 100644 index 0000000..867b77e --- /dev/null +++ b/private_dot_config/nvim/nvim-pack-lock.json @@ -0,0 +1,120 @@ +{ + "plugins": { + "Comment.nvim": { + "rev": "e30b7f2008e52442154b66f7c519bfd2f1e32acb", + "src": "https://github.com/numToStr/Comment.nvim" + }, + "LuaSnip": { + "rev": "a62e1083a3cfe8b6b206e7d3d33a51091df25357", + "src": "https://github.com/L3MON4D3/LuaSnip" + }, + "bufferline.nvim": { + "rev": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3", + "src": "https://github.com/akinsho/bufferline.nvim" + }, + "catppuccin": { + "rev": "426dbebe06b5c69fd846ceb17b42e12f890aedf1", + "src": "https://github.com/catppuccin/nvim" + }, + "cmp-buffer": { + "rev": "b74fab3656eea9de20a9b8116afa3cfc4ec09657", + "src": "https://github.com/hrsh7th/cmp-buffer" + }, + "cmp-nvim-lsp": { + "rev": "cbc7b02bb99fae35cb42f514762b89b5126651ef", + "src": "https://github.com/hrsh7th/cmp-nvim-lsp" + }, + "cmp-path": { + "rev": "c642487086dbd9a93160e1679a1327be111cbc25", + "src": "https://github.com/hrsh7th/cmp-path" + }, + "cmp_luasnip": { + "rev": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90", + "src": "https://github.com/saadparwaiz1/cmp_luasnip" + }, + "everforest-nvim": { + "rev": "d235ca0aa6a29546e661a020e2618612acbbffbe", + "src": "https://github.com/neanias/everforest-nvim" + }, + "friendly-snippets": { + "rev": "6cd7280adead7f586db6fccbd15d2cac7e2188b9", + "src": "https://github.com/rafamadriz/friendly-snippets" + }, + "gitsigns.nvim": { + "rev": "dd3f588bacbeb041be6facf1742e42097f62165d", + "src": "https://github.com/lewis6991/gitsigns.nvim" + }, + "indent-blankline.nvim": { + "rev": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03", + "src": "https://github.com/lukas-reineke/indent-blankline.nvim" + }, + "lualine.nvim": { + "rev": "131a558e13f9f28b15cd235557150ccb23f89286", + "src": "https://github.com/nvim-lualine/lualine.nvim" + }, + "mason-lspconfig.nvim": { + "rev": "7b01e2974a47d489bb92f47a41e4c0088ea8f86e", + "src": "https://github.com/williamboman/mason-lspconfig.nvim" + }, + "mason.nvim": { + "rev": "8e921c2b68571e978db5d4d3fef9c9a7f8755473", + "src": "https://github.com/williamboman/mason.nvim" + }, + "nightfox.nvim": { + "rev": "26b61b1f856ec37cae3cb64f5690adb955f246a1", + "src": "https://github.com/EdenEast/nightfox.nvim" + }, + "none-ls.nvim": { + "rev": "f9d557ac7cd28a3a993b5ea49716498bd540b01f", + "src": "https://github.com/nvimtools/none-ls.nvim" + }, + "nvim-autopairs": { + "rev": "7b9923abad60b903ece7c52940e1321d39eccc79", + "src": "https://github.com/windwp/nvim-autopairs" + }, + "nvim-cmp": { + "rev": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca", + "src": "https://github.com/hrsh7th/nvim-cmp" + }, + "nvim-lspconfig": { + "rev": "8f7e64066e2641d5e7d494962a9c7051e3d38dd5", + "src": "https://github.com/neovim/nvim-lspconfig" + }, + "nvim-tree.lua": { + "rev": "07f541fcaa4a5ae019598240362449ab7e9812b3", + "src": "https://github.com/nvim-tree/nvim-tree.lua" + }, + "nvim-treesitter": { + "rev": "df7489eeea351bece7fd0f9c825be5cb6a1438f0", + "src": "https://github.com/neovim-treesitter/nvim-treesitter" + }, + "nvim-web-devicons": { + "rev": "2795c26c916bb3c57dde308b82be51971fa92747", + "src": "https://github.com/nvim-tree/nvim-web-devicons" + }, + "plenary.nvim": { + "rev": "74b06c6c75e4eeb3108ec01852001636d85a932b", + "src": "https://github.com/nvim-lua/plenary.nvim" + }, + "telescope.nvim": { + "rev": "7d324792b7943e4aa16ad007212e6acc6f9fe335", + "src": "https://github.com/nvim-telescope/telescope.nvim" + }, + "toggleterm.nvim": { + "rev": "9a88eae817ef395952e08650b3283726786fb5fb", + "src": "https://github.com/akinsho/toggleterm.nvim" + }, + "treesitter-parser-registry": { + "rev": "6eb15358bb9fc88f0d3401d8538d56652e9bdf3c", + "src": "https://github.com/neovim-treesitter/treesitter-parser-registry" + }, + "vim-bbye": { + "rev": "25ef93ac5a87526111f43e5110675032dbcacf56", + "src": "https://github.com/moll/vim-bbye" + }, + "which-key.nvim": { + "rev": "3aab2147e74890957785941f0c1ad87d0a44c15a", + "src": "https://github.com/folke/which-key.nvim" + } + } +} From ec8aaba19555e6d5f1910cdea6196d84f400596e Mon Sep 17 00:00:00 2001 From: Thieurom Date: Sat, 16 May 2026 15:13:14 +0700 Subject: [PATCH 07/18] Remove Dart LSP from Mason installs --- private_dot_config/nvim/lua/user/lsp/mason.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/private_dot_config/nvim/lua/user/lsp/mason.lua b/private_dot_config/nvim/lua/user/lsp/mason.lua index e73a927..ed81a2f 100644 --- a/private_dot_config/nvim/lua/user/lsp/mason.lua +++ b/private_dot_config/nvim/lua/user/lsp/mason.lua @@ -7,7 +7,6 @@ local servers = { local mason_servers = { "pyright", - "dartls", "ts_ls", } From c50cef049567776333604e5923d9ddc52db0b668 Mon Sep 17 00:00:00 2001 From: Thieurom Date: Sat, 16 May 2026 15:25:41 +0700 Subject: [PATCH 08/18] Use mini icons for Neovim --- private_dot_config/nvim/init.lua | 1 + private_dot_config/nvim/lua/user/cmp.lua | 33 +++---------------- .../nvim/lua/user/mini-icons.lua | 7 ++++ private_dot_config/nvim/lua/user/plugins.lua | 2 +- private_dot_config/nvim/nvim-pack-lock.json | 8 ++--- 5 files changed, 17 insertions(+), 34 deletions(-) create mode 100644 private_dot_config/nvim/lua/user/mini-icons.lua diff --git a/private_dot_config/nvim/init.lua b/private_dot_config/nvim/init.lua index 0816cbd..5e1b8fa 100644 --- a/private_dot_config/nvim/init.lua +++ b/private_dot_config/nvim/init.lua @@ -1,6 +1,7 @@ require "user.options" require "user.keymaps" require "user.plugins" +require "user.mini-icons" require "user.nvim-tree" require "user.telescope" require "user.lualine" diff --git a/private_dot_config/nvim/lua/user/cmp.lua b/private_dot_config/nvim/lua/user/cmp.lua index 42477ce..decb55e 100644 --- a/private_dot_config/nvim/lua/user/cmp.lua +++ b/private_dot_config/nvim/lua/user/cmp.lua @@ -15,34 +15,6 @@ local check_backspace = function() return col == 0 or vim.fn.getline("."):sub(col, col):match "%s" end -local kind_icons = { - Text = "", - Method = "", - Function = "", - Constructor = "", - Field = "", - Variable = "", - Class = "", - Interface = "", - Module = "", - Property = "", - Unit = "", - Value = "", - Enum = "", - Keyword = "", - Snippet = "", - Color = "", - File = "", - Reference = "", - Folder = "", - EnumMember = "", - Constant = "", - Struct = "", - Event = "", - Operator = "", - TypeParameter = "", -} - cmp.setup { snippet = { expand = function(args) @@ -95,7 +67,10 @@ cmp.setup { formatting = { fields = { "kind", "abbr", "menu" }, format = function(entry, vim_item) - vim_item.kind = kind_icons[vim_item.kind] + if MiniIcons then + local icon = MiniIcons.get("lsp", vim_item.kind) + vim_item.kind = icon .. " " .. vim_item.kind + end vim_item.menu = ({ nvim_lsp = "", nvim_lua = "", diff --git a/private_dot_config/nvim/lua/user/mini-icons.lua b/private_dot_config/nvim/lua/user/mini-icons.lua new file mode 100644 index 0000000..11ec000 --- /dev/null +++ b/private_dot_config/nvim/lua/user/mini-icons.lua @@ -0,0 +1,7 @@ +local status_ok, mini_icons = pcall(require, "mini.icons") +if not status_ok then + return +end + +mini_icons.setup() +MiniIcons.mock_nvim_web_devicons() diff --git a/private_dot_config/nvim/lua/user/plugins.lua b/private_dot_config/nvim/lua/user/plugins.lua index f2786a1..000edb6 100644 --- a/private_dot_config/nvim/lua/user/plugins.lua +++ b/private_dot_config/nvim/lua/user/plugins.lua @@ -21,7 +21,7 @@ vim.pack.add({ { src = gh("nvim-tree/nvim-tree.lua") }, { src = gh("nvim-lua/plenary.nvim") }, { src = gh("nvim-telescope/telescope.nvim") }, - { src = gh("nvim-tree/nvim-web-devicons") }, + { src = gh("nvim-mini/mini.icons") }, { src = gh("nvim-lualine/lualine.nvim") }, { src = gh("akinsho/bufferline.nvim") }, { src = gh("moll/vim-bbye") }, diff --git a/private_dot_config/nvim/nvim-pack-lock.json b/private_dot_config/nvim/nvim-pack-lock.json index 867b77e..104c27b 100644 --- a/private_dot_config/nvim/nvim-pack-lock.json +++ b/private_dot_config/nvim/nvim-pack-lock.json @@ -60,6 +60,10 @@ "rev": "8e921c2b68571e978db5d4d3fef9c9a7f8755473", "src": "https://github.com/williamboman/mason.nvim" }, + "mini.icons": { + "rev": "9c7b1b90b15bdd69c52f6e31889dbc9987c30ec4", + "src": "https://github.com/nvim-mini/mini.icons" + }, "nightfox.nvim": { "rev": "26b61b1f856ec37cae3cb64f5690adb955f246a1", "src": "https://github.com/EdenEast/nightfox.nvim" @@ -88,10 +92,6 @@ "rev": "df7489eeea351bece7fd0f9c825be5cb6a1438f0", "src": "https://github.com/neovim-treesitter/nvim-treesitter" }, - "nvim-web-devicons": { - "rev": "2795c26c916bb3c57dde308b82be51971fa92747", - "src": "https://github.com/nvim-tree/nvim-web-devicons" - }, "plenary.nvim": { "rev": "74b06c6c75e4eeb3108ec01852001636d85a932b", "src": "https://github.com/nvim-lua/plenary.nvim" From 8cd8892e6a2ea81aae56b98a1ba2e733b2b0e4a7 Mon Sep 17 00:00:00 2001 From: Thieurom Date: Sun, 17 May 2026 08:10:45 +0700 Subject: [PATCH 09/18] Refine Neovim statusline and bufferline --- .../nvim/lua/user/bufferline.lua | 21 +++++++-- private_dot_config/nvim/lua/user/lualine.lua | 47 +++++++++++++------ 2 files changed, 51 insertions(+), 17 deletions(-) diff --git a/private_dot_config/nvim/lua/user/bufferline.lua b/private_dot_config/nvim/lua/user/bufferline.lua index 7cdb077..d6a5f2c 100644 --- a/private_dot_config/nvim/lua/user/bufferline.lua +++ b/private_dot_config/nvim/lua/user/bufferline.lua @@ -5,9 +5,24 @@ end bufferline.setup { options = { - close_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" - right_mouse_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" + close_command = "Bdelete! %d", + right_mouse_command = "Bdelete! %d", offsets = { { filetype = "NvimTree", text = "", padding = 1 } }, - separator_style = "thin", -- | "thick" | "thin" | { 'any', 'any' }, + separator_style = { " ", " " }, + buffer_close_icon = "x", + close_icon = "x", + show_buffer_close_icons = true, + show_close_icon = true, + indicator = { + style = "none", + }, + }, + highlights = { + fill = { bg = "#1e1e2e" }, + background = { bg = "#11111b" }, + buffer_selected = { bg = "#11111b", bold = true, italic = true }, + separator = { fg = "#1e1e2e", bg = "#1e1e2e" }, + separator_selected = { fg = "#1e1e2e", bg = "#1e1e2e" }, + separator_visible = { fg = "#1e1e2e", bg = "#1e1e2e" }, }, } diff --git a/private_dot_config/nvim/lua/user/lualine.lua b/private_dot_config/nvim/lua/user/lualine.lua index c57331b..cf1c938 100644 --- a/private_dot_config/nvim/lua/user/lualine.lua +++ b/private_dot_config/nvim/lua/user/lualine.lua @@ -9,22 +9,34 @@ end local branch = { "branch", - separator = { left = "", right = "" }, + cond = hide_in_width, } local diagnostics = { - "diagnostics", - sources = { "nvim_diagnostic" }, - sections = { "error", "warn" }, - symbols = { error = " ", warn = " " }, - colored = false, - always_visible = true, + function() + local counts = { + [vim.diagnostic.severity.ERROR] = 0, + [vim.diagnostic.severity.WARN] = 0, + } + + for _, diagnostic in ipairs(vim.diagnostic.get(0)) do + if counts[diagnostic.severity] ~= nil then + counts[diagnostic.severity] = counts[diagnostic.severity] + 1 + end + end + + return string.format( + "E:%d W:%d", + counts[vim.diagnostic.severity.ERROR], + counts[vim.diagnostic.severity.WARN] + ) + end, } local diff = { "diff", colored = false, - symbols = { added = " ", modified = " ", removed = " " }, -- changes diff symbols + symbols = { added = "+", modified = "~", removed = "-" }, cond = hide_in_width, } @@ -34,8 +46,11 @@ local filetype = { } local location = { - "location", - padding = { left = 0, right = 1 }, + function() + return string.format("%d:%d", vim.fn.line("."), vim.fn.col(".") - 1) + end, + color = { fg = "#89b4fa", bg = "#313244", gui = "bold" }, + padding = { left = 1, right = 1 }, } local spaces = function() @@ -47,8 +62,8 @@ lualine.setup { globalstatus = true, icons_enabled = true, theme = "auto", - component_separators = { left = "", right = "" }, - section_separators = { left = "", right = "" }, + component_separators = { left = " ", right = " " }, + section_separators = { left = "", right = "" }, disabled_filetypes = { "alpha", "dashboard" }, always_divide_middle = true, }, @@ -58,7 +73,11 @@ lualine.setup { lualine_c = { diagnostics }, lualine_x = { diff, spaces, "encoding", filetype }, lualine_y = { location }, - lualine_z = { "progress" }, + lualine_z = { + { + "progress", + color = { fg = "#11111b", bg = "#89b4fa", gui = "bold" }, + }, + }, }, } - From e929bf95f9d0e4b33f3c9112c87fd2e2a5125781 Mon Sep 17 00:00:00 2001 From: Thieurom Date: Sun, 17 May 2026 08:59:13 +0700 Subject: [PATCH 10/18] Add render-markdown.nvim --- private_dot_config/nvim/init.lua | 1 + private_dot_config/nvim/lua/user/plugins.lua | 1 + .../nvim/lua/user/render-markdown.lua | 13 +++++++++++++ private_dot_config/nvim/lua/user/treesitter.lua | 2 ++ private_dot_config/nvim/nvim-pack-lock.json | 4 ++++ 5 files changed, 21 insertions(+) create mode 100644 private_dot_config/nvim/lua/user/render-markdown.lua diff --git a/private_dot_config/nvim/init.lua b/private_dot_config/nvim/init.lua index 5e1b8fa..5b76432 100644 --- a/private_dot_config/nvim/init.lua +++ b/private_dot_config/nvim/init.lua @@ -8,6 +8,7 @@ require "user.lualine" require "user.bufferline" require "user.colorscheme" require "user.treesitter" +require "user.render-markdown" require "user.lsp" require "user.cmp" require "user.gitsigns" diff --git a/private_dot_config/nvim/lua/user/plugins.lua b/private_dot_config/nvim/lua/user/plugins.lua index 000edb6..52cc80a 100644 --- a/private_dot_config/nvim/lua/user/plugins.lua +++ b/private_dot_config/nvim/lua/user/plugins.lua @@ -30,6 +30,7 @@ vim.pack.add({ { src = gh("folke/which-key.nvim") }, { src = gh("akinsho/toggleterm.nvim") }, { src = gh("lukas-reineke/indent-blankline.nvim") }, + { src = gh("MeanderingProgrammer/render-markdown.nvim") }, { src = gh("EdenEast/nightfox.nvim") }, { src = gh("neanias/everforest-nvim") }, diff --git a/private_dot_config/nvim/lua/user/render-markdown.lua b/private_dot_config/nvim/lua/user/render-markdown.lua new file mode 100644 index 0000000..57a7be0 --- /dev/null +++ b/private_dot_config/nvim/lua/user/render-markdown.lua @@ -0,0 +1,13 @@ +local status_ok, render_markdown = pcall(require, "render-markdown") +if not status_ok then + return +end + +render_markdown.setup { + completions = { + lsp = { + enabled = true, + }, + }, + file_types = { "markdown" }, +} diff --git a/private_dot_config/nvim/lua/user/treesitter.lua b/private_dot_config/nvim/lua/user/treesitter.lua index 28dc245..91d69c1 100644 --- a/private_dot_config/nvim/lua/user/treesitter.lua +++ b/private_dot_config/nvim/lua/user/treesitter.lua @@ -11,6 +11,7 @@ local languages = { "jsx", "markdown", "markdown_inline", + "yaml", "bash", "python", "swift", @@ -25,6 +26,7 @@ local highlight_filetypes = { "html", "json", "markdown", + "yaml", "sh", "bash", "python", diff --git a/private_dot_config/nvim/nvim-pack-lock.json b/private_dot_config/nvim/nvim-pack-lock.json index 104c27b..cc615b1 100644 --- a/private_dot_config/nvim/nvim-pack-lock.json +++ b/private_dot_config/nvim/nvim-pack-lock.json @@ -96,6 +96,10 @@ "rev": "74b06c6c75e4eeb3108ec01852001636d85a932b", "src": "https://github.com/nvim-lua/plenary.nvim" }, + "render-markdown.nvim": { + "rev": "629eb9533ec989d9d5c6cab8f3ad5372422c24e0", + "src": "https://github.com/MeanderingProgrammer/render-markdown.nvim" + }, "telescope.nvim": { "rev": "7d324792b7943e4aa16ad007212e6acc6f9fe335", "src": "https://github.com/nvim-telescope/telescope.nvim" From e9a1d24ef4dc59e72a7fa7206328a1e6b6047ad9 Mon Sep 17 00:00:00 2001 From: Thieurom Date: Tue, 19 May 2026 14:47:17 +0700 Subject: [PATCH 11/18] Remove Markdown render plugin --- private_dot_config/nvim/init.lua | 1 - private_dot_config/nvim/lua/user/plugins.lua | 1 - .../nvim/lua/user/render-markdown.lua | 13 ------------- private_dot_config/nvim/nvim-pack-lock.json | 4 ---- 4 files changed, 19 deletions(-) delete mode 100644 private_dot_config/nvim/lua/user/render-markdown.lua diff --git a/private_dot_config/nvim/init.lua b/private_dot_config/nvim/init.lua index 5b76432..5e1b8fa 100644 --- a/private_dot_config/nvim/init.lua +++ b/private_dot_config/nvim/init.lua @@ -8,7 +8,6 @@ require "user.lualine" require "user.bufferline" require "user.colorscheme" require "user.treesitter" -require "user.render-markdown" require "user.lsp" require "user.cmp" require "user.gitsigns" diff --git a/private_dot_config/nvim/lua/user/plugins.lua b/private_dot_config/nvim/lua/user/plugins.lua index 52cc80a..000edb6 100644 --- a/private_dot_config/nvim/lua/user/plugins.lua +++ b/private_dot_config/nvim/lua/user/plugins.lua @@ -30,7 +30,6 @@ vim.pack.add({ { src = gh("folke/which-key.nvim") }, { src = gh("akinsho/toggleterm.nvim") }, { src = gh("lukas-reineke/indent-blankline.nvim") }, - { src = gh("MeanderingProgrammer/render-markdown.nvim") }, { src = gh("EdenEast/nightfox.nvim") }, { src = gh("neanias/everforest-nvim") }, diff --git a/private_dot_config/nvim/lua/user/render-markdown.lua b/private_dot_config/nvim/lua/user/render-markdown.lua deleted file mode 100644 index 57a7be0..0000000 --- a/private_dot_config/nvim/lua/user/render-markdown.lua +++ /dev/null @@ -1,13 +0,0 @@ -local status_ok, render_markdown = pcall(require, "render-markdown") -if not status_ok then - return -end - -render_markdown.setup { - completions = { - lsp = { - enabled = true, - }, - }, - file_types = { "markdown" }, -} diff --git a/private_dot_config/nvim/nvim-pack-lock.json b/private_dot_config/nvim/nvim-pack-lock.json index cc615b1..104c27b 100644 --- a/private_dot_config/nvim/nvim-pack-lock.json +++ b/private_dot_config/nvim/nvim-pack-lock.json @@ -96,10 +96,6 @@ "rev": "74b06c6c75e4eeb3108ec01852001636d85a932b", "src": "https://github.com/nvim-lua/plenary.nvim" }, - "render-markdown.nvim": { - "rev": "629eb9533ec989d9d5c6cab8f3ad5372422c24e0", - "src": "https://github.com/MeanderingProgrammer/render-markdown.nvim" - }, "telescope.nvim": { "rev": "7d324792b7943e4aa16ad007212e6acc6f9fe335", "src": "https://github.com/nvim-telescope/telescope.nvim" From ae93c7bee58703b928d45b6189fe13d5b51b0627 Mon Sep 17 00:00:00 2001 From: Thieurom Date: Sat, 23 May 2026 09:07:39 +0700 Subject: [PATCH 12/18] Update kitty tab and zoom shortcuts --- private_dot_config/kitty/kitty.conf | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/private_dot_config/kitty/kitty.conf b/private_dot_config/kitty/kitty.conf index 0aae22b..54e3ff2 100644 --- a/private_dot_config/kitty/kitty.conf +++ b/private_dot_config/kitty/kitty.conf @@ -14,13 +14,25 @@ enabled_layouts * window_border_width 1.0 window_padding_width 4 inactive_text_alpha 0.4 +tab_bar_min_tabs 1 tab_bar_style fade +tab_title_template "{'[' if layout_name == 'stack' else ''}{index}{']' if layout_name == 'stack' else ''} - {tab.active_wd.rsplit('/', 1)[-1] or '/'}" macos_option_as_alt yes +map cmd+1 goto_tab 1 +map cmd+2 goto_tab 2 +map cmd+3 goto_tab 3 +map cmd+4 goto_tab 4 +map cmd+5 goto_tab 5 +map cmd+6 goto_tab 6 +map cmd+7 goto_tab 7 +map cmd+8 goto_tab 8 +map cmd+9 goto_tab 9 + map ctrl+shift+enter launch --cwd=current map kitty_mod+x toggle_layout stack -map ctrl+shift+n resize_window narrower +map ctrl+shift+o toggle_layout stack map ctrl+shift+w resize_window wider map ctrl+shift+t resize_window taller map ctrl+shift+s resize_window shorter 3 From 0af922e38f50d2f1de9f6b2e1b39e5a4be9273a9 Mon Sep 17 00:00:00 2001 From: Thieurom Date: Sat, 23 May 2026 15:00:50 +0700 Subject: [PATCH 13/18] Add Karabiner hyper window shortcuts --- .../executable_window-layout | 100 ++++++++ .../private_karabiner/private_karabiner.json | 215 +++++++++++++++--- 2 files changed, 281 insertions(+), 34 deletions(-) create mode 100644 private_dot_config/private_karabiner/executable_window-layout diff --git a/private_dot_config/private_karabiner/executable_window-layout b/private_dot_config/private_karabiner/executable_window-layout new file mode 100644 index 0000000..6669fdc --- /dev/null +++ b/private_dot_config/private_karabiner/executable_window-layout @@ -0,0 +1,100 @@ +#!/bin/zsh +set -euo pipefail + +mode="${1:-}" + +osascript -l JavaScript - "$mode" <<'JXA' +ObjC.import('AppKit') + +function run(argv) { +const mode = argv[0] +const se = Application('System Events') + +function frontProcess() { + return se.applicationProcesses.whose({ frontmost: true })[0] +} + +function activeWindow(process) { + const windows = process.windows() + if (windows.length === 0) { + throw new Error(`No windows for ${process.name()}`) + } + return windows[0] +} + +function frameForWindow(win) { + const pos = win.position() + const size = win.size() + return { + x: pos[0], + y: pos[1], + w: size[0], + h: size[1], + cx: pos[0] + size[0] / 2, + cy: pos[1] + size[1] / 2, + } +} + +function screenForWindow(winFrame) { + const screens = $.NSScreen.screens + const count = screens.count + let chosen = screens.objectAtIndex(0) + + for (let i = 0; i < count; i++) { + const screen = screens.objectAtIndex(i) + const full = screen.frame + const visible = screen.visibleFrame + const top = full.size.height - visible.origin.y - visible.size.height + const left = visible.origin.x + const right = left + visible.size.width + const bottom = top + visible.size.height + + if (winFrame.cx >= left && winFrame.cx <= right && winFrame.cy >= top && winFrame.cy <= bottom) { + chosen = screen + break + } + } + + const full = chosen.frame + const visible = chosen.visibleFrame + return { + x: visible.origin.x, + y: full.size.height - visible.origin.y - visible.size.height, + w: visible.size.width, + h: visible.size.height, + } +} + +function targetFrame(screen, mode) { + const halfW = Math.floor(screen.w / 2) + const halfH = Math.floor(screen.h / 2) + + switch (mode) { + case 'top-left': + return { x: screen.x, y: screen.y, w: halfW, h: halfH } + case 'bottom-left': + return { x: screen.x, y: screen.y + halfH, w: halfW, h: screen.h - halfH } + case 'top-right': + return { x: screen.x + halfW, y: screen.y, w: screen.w - halfW, h: halfH } + case 'bottom-right': + return { x: screen.x + halfW, y: screen.y + halfH, w: screen.w - halfW, h: screen.h - halfH } + case 'left-half': + return { x: screen.x, y: screen.y, w: halfW, h: screen.h } + case 'right-half': + return { x: screen.x + halfW, y: screen.y, w: screen.w - halfW, h: screen.h } + case 'max': + return screen + default: + throw new Error(`Unknown window layout mode: ${mode}`) + } +} + +const process = frontProcess() +const win = activeWindow(process) +const screen = screenForWindow(frameForWindow(win)) +const frame = targetFrame(screen, mode) + +win.position = [frame.x, frame.y] +win.size = [frame.w, frame.h] +} +JXA diff --git a/private_dot_config/private_karabiner/private_karabiner.json b/private_dot_config/private_karabiner/private_karabiner.json index 4b5955e..b734763 100644 --- a/private_dot_config/private_karabiner/private_karabiner.json +++ b/private_dot_config/private_karabiner/private_karabiner.json @@ -1961,12 +1961,12 @@ "complex_modifications": { "rules": [ { - "description": "Apps navigation", - "enabled": false, + "description": "Window management", + "enabled": true, "manipulators": [ { "from": { - "key_code": "caps_lock", + "key_code": "right_shift", "modifiers": { "optional": ["any"] } }, "to": [ @@ -1985,7 +1985,7 @@ } } ], - "to_if_alone": [{ "key_code": "escape" }], + "to_if_alone": [{ "key_code": "right_shift" }], "type": "basic" }, { @@ -1996,95 +1996,242 @@ "value": 1 } ], - "from": { "key_code": "spacebar" }, - "to": [ + "from": { + "key_code": "a", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b company.thebrowser.Browser" }], + "type": "basic" + }, + { + "conditions": [ { - "set_variable": { - "name": "app_launcher", - "value": 1 - } + "name": "hyper_mode", + "type": "variable_if", + "value": 1 } ], - "to_after_key_up": [ + "from": { + "key_code": "n", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b net.kovidgoyal.kitty" }], + "type": "basic" + }, + { + "conditions": [ { - "set_variable": { - "name": "app_launcher", - "value": 0 - } + "name": "hyper_mode", + "type": "variable_if", + "value": 1 + } + ], + "from": { + "key_code": "x", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b com.apple.dt.Xcode" }], + "type": "basic" + }, + { + "conditions": [ + { + "name": "hyper_mode", + "type": "variable_if", + "value": 1 + } + ], + "from": { + "key_code": "e", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b com.apple.finder" }], + "type": "basic" + }, + { + "conditions": [ + { + "name": "hyper_mode", + "type": "variable_if", + "value": 1 + } + ], + "from": { + "key_code": "b", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b com.apple.Preview" }], + "type": "basic" + }, + { + "conditions": [ + { + "name": "hyper_mode", + "type": "variable_if", + "value": 1 + } + ], + "from": { + "key_code": "r", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b com.1password.1password" }], + "type": "basic" + }, + { + "conditions": [ + { + "name": "hyper_mode", + "type": "variable_if", + "value": 1 + } + ], + "from": { + "key_code": "semicolon", + "modifiers": { + "mandatory": ["left_shift"], + "optional": ["any"] + } + }, + "to": [{ "shell_command": "open -b md.obsidian" }], + "type": "basic" + }, + { + "conditions": [ + { + "name": "hyper_mode", + "type": "variable_if", + "value": 1 + } + ], + "from": { + "key_code": "m", + "modifiers": { "optional": ["any"] } + }, + "to": [{ "shell_command": "$HOME/.config/karabiner/window-layout top-left" }], + "type": "basic" + }, + { + "conditions": [ + { + "name": "hyper_mode", + "type": "variable_if", + "value": 1 } ], + "from": { + "key_code": "y", + "modifiers": { "optional": ["any"] } + }, + "to": [{ "shell_command": "$HOME/.config/karabiner/window-layout bottom-left" }], "type": "basic" }, { "conditions": [ { - "name": "app_launcher", + "name": "hyper_mode", "type": "variable_if", "value": 1 } ], - "from": { "key_code": "a" }, - "to": [{ "shell_command": "open -a 'Arc'" }], + "from": { + "key_code": "n", + "modifiers": { "optional": ["any"] } + }, + "to": [{ "shell_command": "$HOME/.config/karabiner/window-layout top-right" }], "type": "basic" }, { "conditions": [ { - "name": "app_launcher", + "name": "hyper_mode", "type": "variable_if", "value": 1 } ], - "from": { "key_code": "t" }, - "to": [{ "shell_command": "open -a 'Kitty'" }], + "from": { + "key_code": "u", + "modifiers": { "optional": ["any"] } + }, + "to": [{ "shell_command": "$HOME/.config/karabiner/window-layout bottom-right" }], "type": "basic" }, { "conditions": [ { - "name": "app_launcher", + "name": "hyper_mode", "type": "variable_if", "value": 1 } ], - "from": { "key_code": "x" }, - "to": [{ "shell_command": "open -a 'Xcode'" }], + "from": { + "key_code": "open_bracket", + "modifiers": { "optional": ["any"] } + }, + "to": [{ "shell_command": "$HOME/.config/karabiner/window-layout left-half" }], "type": "basic" }, { "conditions": [ { - "name": "app_launcher", + "name": "hyper_mode", "type": "variable_if", "value": 1 } ], - "from": { "key_code": "f" }, - "to": [{ "shell_command": "open -a 'Finder'" }], + "from": { + "key_code": "close_bracket", + "modifiers": { "optional": ["any"] } + }, + "to": [{ "shell_command": "$HOME/.config/karabiner/window-layout right-half" }], "type": "basic" }, { "conditions": [ { - "name": "app_launcher", + "name": "hyper_mode", "type": "variable_if", "value": 1 } ], - "from": { "key_code": "v" }, - "to": [{ "shell_command": "open -a 'Preview'" }], + "from": { + "key_code": "h", + "modifiers": { "optional": ["any"] } + }, + "to": [{ "shell_command": "$HOME/.config/karabiner/window-layout max" }], "type": "basic" }, { "conditions": [ { - "name": "app_launcher", + "name": "hyper_mode", "type": "variable_if", "value": 1 } ], - "from": { "key_code": "p" }, - "to": [{ "shell_command": "open -a '1Password'" }], + "from": { + "key_code": "e", + "modifiers": { "optional": ["any"] } + }, + "to": [{ "shell_command": "$HOME/.config/karabiner/window-layout max" }], "type": "basic" } ] @@ -4029,4 +4176,4 @@ "virtual_hid_keyboard": { "keyboard_type_v2": "ansi" } } ] -} \ No newline at end of file +} From 763ab8945ccb1446edc53fb85f911c2212f002f7 Mon Sep 17 00:00:00 2001 From: Thieurom Date: Mon, 25 May 2026 20:35:29 +0700 Subject: [PATCH 14/18] Replace nvim-tree with neo-tree --- private_dot_config/nvim/init.lua | 2 +- .../nvim/lua/user/autocommands.lua | 4 --- .../nvim/lua/user/bufferline.lua | 1 - .../nvim/lua/user/indentline.lua | 1 - private_dot_config/nvim/lua/user/keymaps.lua | 5 ++- private_dot_config/nvim/lua/user/neo-tree.lua | 36 +++++++++++++++++++ .../nvim/lua/user/nvim-tree.lua | 10 ------ private_dot_config/nvim/lua/user/plugins.lua | 4 ++- private_dot_config/nvim/nvim-pack-lock.json | 17 ++++++--- 9 files changed, 55 insertions(+), 25 deletions(-) create mode 100644 private_dot_config/nvim/lua/user/neo-tree.lua delete mode 100644 private_dot_config/nvim/lua/user/nvim-tree.lua diff --git a/private_dot_config/nvim/init.lua b/private_dot_config/nvim/init.lua index 5e1b8fa..8ebcfee 100644 --- a/private_dot_config/nvim/init.lua +++ b/private_dot_config/nvim/init.lua @@ -2,7 +2,7 @@ require "user.options" require "user.keymaps" require "user.plugins" require "user.mini-icons" -require "user.nvim-tree" +require "user.neo-tree" require "user.telescope" require "user.lualine" require "user.bufferline" diff --git a/private_dot_config/nvim/lua/user/autocommands.lua b/private_dot_config/nvim/lua/user/autocommands.lua index 54a8431..8d0e68a 100644 --- a/private_dot_config/nvim/lua/user/autocommands.lua +++ b/private_dot_config/nvim/lua/user/autocommands.lua @@ -23,7 +23,3 @@ vim.api.nvim_create_autocmd({ "FileType" }, { vim.opt_local.tabstop = 2 end, }) - - --- Automatically close tab/vim when nvim-tree is the last window in the tab -vim.cmd "autocmd BufEnter * ++nested if winnr('$') == 1 && bufname() == 'NvimTree_' . tabpagenr() | quit | endif" diff --git a/private_dot_config/nvim/lua/user/bufferline.lua b/private_dot_config/nvim/lua/user/bufferline.lua index d6a5f2c..f708f9c 100644 --- a/private_dot_config/nvim/lua/user/bufferline.lua +++ b/private_dot_config/nvim/lua/user/bufferline.lua @@ -7,7 +7,6 @@ bufferline.setup { options = { close_command = "Bdelete! %d", right_mouse_command = "Bdelete! %d", - offsets = { { filetype = "NvimTree", text = "", padding = 1 } }, separator_style = { " ", " " }, buffer_close_icon = "x", close_icon = "x", diff --git a/private_dot_config/nvim/lua/user/indentline.lua b/private_dot_config/nvim/lua/user/indentline.lua index e607d1b..ec15b9d 100644 --- a/private_dot_config/nvim/lua/user/indentline.lua +++ b/private_dot_config/nvim/lua/user/indentline.lua @@ -12,7 +12,6 @@ ibl.setup { filetypes = { "help", "query", - "NvimTree", }, }, } diff --git a/private_dot_config/nvim/lua/user/keymaps.lua b/private_dot_config/nvim/lua/user/keymaps.lua index 3cd9a5a..b4798f8 100644 --- a/private_dot_config/nvim/lua/user/keymaps.lua +++ b/private_dot_config/nvim/lua/user/keymaps.lua @@ -38,9 +38,8 @@ keymap("v", "p", '"_dP', opts) -- Plugins -- --- NvimTree -keymap("n", "e", ":NvimTreeToggle", opts) -keymap("n", "j", ":NvimTreeFindFile", opts) +-- Neo-tree +keymap("n", "e", ":Neotree filesystem reveal float", opts) -- Telescope keymap("n", "ff", ":Telescope find_files", opts) diff --git a/private_dot_config/nvim/lua/user/neo-tree.lua b/private_dot_config/nvim/lua/user/neo-tree.lua new file mode 100644 index 0000000..4d3a20d --- /dev/null +++ b/private_dot_config/nvim/lua/user/neo-tree.lua @@ -0,0 +1,36 @@ +local status_ok, neo_tree = pcall(require, "neo-tree") +if not status_ok then + return +end + +neo_tree.setup { + close_if_last_window = true, + popup_border_style = "rounded", + enable_git_status = true, + enable_diagnostics = true, + filesystem = { + follow_current_file = { + enabled = true, + leave_dirs_open = true, + }, + filtered_items = { + visible = true, + hide_dotfiles = false, + hide_gitignored = false, + }, + window = { + mappings = { + [""] = "none", + ["h"] = "close_node", + ["l"] = "open", + }, + }, + }, + window = { + position = "float", + width = 50, + mappings = { + ["q"] = "close_window", + }, + }, +} diff --git a/private_dot_config/nvim/lua/user/nvim-tree.lua b/private_dot_config/nvim/lua/user/nvim-tree.lua deleted file mode 100644 index d5cff7b..0000000 --- a/private_dot_config/nvim/lua/user/nvim-tree.lua +++ /dev/null @@ -1,10 +0,0 @@ --- disable netrw at the very start of your init.lua (strongly advised) -vim.g.loaded_netrw = 1 -vim.g.loaded_netrwPlugin = 1 - -local status_ok, nvim_tree = pcall(require, "nvim-tree") -if not status_ok then - return -end - -nvim_tree.setup {} diff --git a/private_dot_config/nvim/lua/user/plugins.lua b/private_dot_config/nvim/lua/user/plugins.lua index 000edb6..29d059e 100644 --- a/private_dot_config/nvim/lua/user/plugins.lua +++ b/private_dot_config/nvim/lua/user/plugins.lua @@ -18,9 +18,11 @@ vim.api.nvim_create_autocmd("PackChanged", { }) vim.pack.add({ - { src = gh("nvim-tree/nvim-tree.lua") }, { src = gh("nvim-lua/plenary.nvim") }, { src = gh("nvim-telescope/telescope.nvim") }, + { src = gh("MunifTanjim/nui.nvim") }, + { src = gh("nvim-tree/nvim-web-devicons") }, + { src = gh("nvim-neo-tree/neo-tree.nvim"), version = "v3.x" }, { src = gh("nvim-mini/mini.icons") }, { src = gh("nvim-lualine/lualine.nvim") }, { src = gh("akinsho/bufferline.nvim") }, diff --git a/private_dot_config/nvim/nvim-pack-lock.json b/private_dot_config/nvim/nvim-pack-lock.json index 104c27b..b0da008 100644 --- a/private_dot_config/nvim/nvim-pack-lock.json +++ b/private_dot_config/nvim/nvim-pack-lock.json @@ -64,6 +64,11 @@ "rev": "9c7b1b90b15bdd69c52f6e31889dbc9987c30ec4", "src": "https://github.com/nvim-mini/mini.icons" }, + "neo-tree.nvim": { + "rev": "ebd66767191714e008ce73b769518a763ff31bdc", + "src": "https://github.com/nvim-neo-tree/neo-tree.nvim", + "version": "'v3.x'" + }, "nightfox.nvim": { "rev": "26b61b1f856ec37cae3cb64f5690adb955f246a1", "src": "https://github.com/EdenEast/nightfox.nvim" @@ -72,6 +77,10 @@ "rev": "f9d557ac7cd28a3a993b5ea49716498bd540b01f", "src": "https://github.com/nvimtools/none-ls.nvim" }, + "nui.nvim": { + "rev": "de740991c12411b663994b2860f1a4fd0937c130", + "src": "https://github.com/MunifTanjim/nui.nvim" + }, "nvim-autopairs": { "rev": "7b9923abad60b903ece7c52940e1321d39eccc79", "src": "https://github.com/windwp/nvim-autopairs" @@ -84,14 +93,14 @@ "rev": "8f7e64066e2641d5e7d494962a9c7051e3d38dd5", "src": "https://github.com/neovim/nvim-lspconfig" }, - "nvim-tree.lua": { - "rev": "07f541fcaa4a5ae019598240362449ab7e9812b3", - "src": "https://github.com/nvim-tree/nvim-tree.lua" - }, "nvim-treesitter": { "rev": "df7489eeea351bece7fd0f9c825be5cb6a1438f0", "src": "https://github.com/neovim-treesitter/nvim-treesitter" }, + "nvim-web-devicons": { + "rev": "0d7d35fa946837b8738b17c18d1faa1ac351e7f9", + "src": "https://github.com/nvim-tree/nvim-web-devicons" + }, "plenary.nvim": { "rev": "74b06c6c75e4eeb3108ec01852001636d85a932b", "src": "https://github.com/nvim-lua/plenary.nvim" From df0e6c7c23974ebb95239a1fc24bed653059a095 Mon Sep 17 00:00:00 2001 From: Thieurom Date: Mon, 25 May 2026 21:23:07 +0700 Subject: [PATCH 15/18] Configure Neovim formatting with Ruff --- private_dot_config/nvim/lua/user/keymaps.lua | 5 ++- .../nvim/lua/user/lsp/format.lua | 31 ++++++++++++++ .../nvim/lua/user/lsp/mason.lua | 11 +++++ .../nvim/lua/user/lsp/null-ls.lua | 41 ++++++++++++++++++- private_dot_config/nvim/lua/user/plugins.lua | 1 + private_dot_config/nvim/nvim-pack-lock.json | 4 ++ 6 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 private_dot_config/nvim/lua/user/lsp/format.lua diff --git a/private_dot_config/nvim/lua/user/keymaps.lua b/private_dot_config/nvim/lua/user/keymaps.lua index b4798f8..934187f 100644 --- a/private_dot_config/nvim/lua/user/keymaps.lua +++ b/private_dot_config/nvim/lua/user/keymaps.lua @@ -36,6 +36,9 @@ keymap("n", "", "Bdelete!", opts) -- Better paste keymap("v", "p", '"_dP', opts) +-- Reindent whole file +keymap("n", "=", "mzgg=G`z", opts) + -- Plugins -- -- Neo-tree @@ -51,4 +54,4 @@ keymap("n", "/", "lua require('Comment.api').toggle.linewise.curren keymap("x", "/", "lua require('Comment.api').toggle.linewise(vim.fn.visualmode())", opts) -- Lsp -keymap("n", "lf", "lua vim.lsp.buf.format{ async = true }", opts) +keymap("n", "lf", "lua require('user.lsp.format').format()", opts) diff --git a/private_dot_config/nvim/lua/user/lsp/format.lua b/private_dot_config/nvim/lua/user/lsp/format.lua new file mode 100644 index 0000000..39ba77f --- /dev/null +++ b/private_dot_config/nvim/lua/user/lsp/format.lua @@ -0,0 +1,31 @@ +local M = {} + +local function supports_format(client) + return client:supports_method("textDocument/formatting") +end + +function M.format() + local bufnr = vim.api.nvim_get_current_buf() + local clients = vim.lsp.get_clients({ bufnr = bufnr }) + local has_null_ls = false + + for _, client in ipairs(clients) do + if client.name == "null-ls" and supports_format(client) then + has_null_ls = true + break + end + end + + vim.lsp.buf.format({ + bufnr = bufnr, + async = false, + filter = function(client) + if has_null_ls then + return client.name == "null-ls" + end + return supports_format(client) + end, + }) +end + +return M diff --git a/private_dot_config/nvim/lua/user/lsp/mason.lua b/private_dot_config/nvim/lua/user/lsp/mason.lua index ed81a2f..228558f 100644 --- a/private_dot_config/nvim/lua/user/lsp/mason.lua +++ b/private_dot_config/nvim/lua/user/lsp/mason.lua @@ -10,6 +10,12 @@ local mason_servers = { "ts_ls", } +local mason_tools = { + "prettier", + "ruff", + "stylua", +} + local settings = { ui = { border = "none", @@ -28,6 +34,11 @@ require("mason-lspconfig").setup({ ensure_installed = mason_servers, automatic_enable = false, }) +require("mason-tool-installer").setup({ + ensure_installed = mason_tools, + auto_update = false, + run_on_start = true, +}) local opts = {} diff --git a/private_dot_config/nvim/lua/user/lsp/null-ls.lua b/private_dot_config/nvim/lua/user/lsp/null-ls.lua index a79a354..66a3977 100644 --- a/private_dot_config/nvim/lua/user/lsp/null-ls.lua +++ b/private_dot_config/nvim/lua/user/lsp/null-ls.lua @@ -5,12 +5,49 @@ end -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting local formatting = null_ls.builtins.formatting +local helpers = require("null-ls.helpers") +local methods = require("null-ls.methods") + +local ruff_fix_imports = helpers.make_builtin({ + name = "ruff_fix_imports", + meta = { + url = "https://docs.astral.sh/ruff/", + description = "Sort Python imports with Ruff.", + }, + method = methods.internal.FORMATTING, + filetypes = { "python" }, + generator_opts = { + command = "ruff", + args = { "check", "--fix", "--select", "I", "$FILENAME" }, + to_temp_file = true, + check_exit_code = { 0, 1 }, + ignore_stderr = true, + }, + factory = helpers.formatter_factory, +}) + +local ruff_format = helpers.make_builtin({ + name = "ruff_format", + meta = { + url = "https://docs.astral.sh/ruff/formatter/", + description = "Format Python with Ruff.", + }, + method = methods.internal.FORMATTING, + filetypes = { "python" }, + generator_opts = { + command = "ruff", + args = { "format", "--stdin-filename", "$FILENAME", "-" }, + to_stdin = true, + }, + factory = helpers.formatter_factory, +}) --- https://github.com/prettier-solidity/prettier-plugin-solidity null_ls.setup { debug = false, sources = { - formatting.black.with { extra_args = { "--fast" } }, + ruff_fix_imports, + ruff_format, + formatting.prettier, formatting.stylua, }, } diff --git a/private_dot_config/nvim/lua/user/plugins.lua b/private_dot_config/nvim/lua/user/plugins.lua index 29d059e..6fbc649 100644 --- a/private_dot_config/nvim/lua/user/plugins.lua +++ b/private_dot_config/nvim/lua/user/plugins.lua @@ -49,6 +49,7 @@ vim.pack.add({ { src = gh("neovim/nvim-lspconfig") }, { src = gh("williamboman/mason.nvim") }, { src = gh("williamboman/mason-lspconfig.nvim") }, + { src = gh("WhoIsSethDaniel/mason-tool-installer.nvim") }, { src = gh("nvimtools/none-ls.nvim") }, { src = gh("neovim-treesitter/treesitter-parser-registry") }, diff --git a/private_dot_config/nvim/nvim-pack-lock.json b/private_dot_config/nvim/nvim-pack-lock.json index b0da008..890ea3a 100644 --- a/private_dot_config/nvim/nvim-pack-lock.json +++ b/private_dot_config/nvim/nvim-pack-lock.json @@ -56,6 +56,10 @@ "rev": "7b01e2974a47d489bb92f47a41e4c0088ea8f86e", "src": "https://github.com/williamboman/mason-lspconfig.nvim" }, + "mason-tool-installer.nvim": { + "rev": "443f1ef8b5e6bf47045cb2217b6f748a223cf7dc", + "src": "https://github.com/WhoIsSethDaniel/mason-tool-installer.nvim" + }, "mason.nvim": { "rev": "8e921c2b68571e978db5d4d3fef9c9a7f8755473", "src": "https://github.com/williamboman/mason.nvim" From 9545baebf9d1d0db1b1dd39e71ee3a3e9162abbb Mon Sep 17 00:00:00 2001 From: Thieurom Date: Tue, 26 May 2026 20:59:08 +0700 Subject: [PATCH 16/18] Fix fish CLI tool paths --- private_dot_config/fish/config.fish | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/private_dot_config/fish/config.fish b/private_dot_config/fish/config.fish index 521003a..ef49655 100644 --- a/private_dot_config/fish/config.fish +++ b/private_dot_config/fish/config.fish @@ -1,8 +1,31 @@ +if test -x /opt/homebrew/bin/brew + eval (/opt/homebrew/bin/brew shellenv) +end + +if test -x /opt/homebrew/bin/mise + /opt/homebrew/bin/mise activate fish | source +end + +for dir in \ + $HOME/.asdf/shims \ + $HOME/go/bin \ + $HOME/.bin \ + $HOME/.local/share/mise/shims \ + $HOME/.local/bin + if test -d $dir + if set -l index (contains -i -- $dir $PATH) + set -e PATH[$index] + end + set -gx PATH $dir $PATH + end +end + +set -gx EDITOR nvim + if status is-interactive # Commands to run in interactive sessions can go here end -set -Ux EDITOR nvim alias vi="nvim" alias vim="nvim" alias view="nvim -R" From ad4e4708e46a5c4991488522c0f859f8669db0b8 Mon Sep 17 00:00:00 2001 From: Thieurom Date: Wed, 27 May 2026 14:03:32 +0700 Subject: [PATCH 17/18] Show Neo-tree on the left --- private_dot_config/nvim/lua/user/keymaps.lua | 2 +- private_dot_config/nvim/lua/user/neo-tree.lua | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/private_dot_config/nvim/lua/user/keymaps.lua b/private_dot_config/nvim/lua/user/keymaps.lua index 934187f..9ff753c 100644 --- a/private_dot_config/nvim/lua/user/keymaps.lua +++ b/private_dot_config/nvim/lua/user/keymaps.lua @@ -42,7 +42,7 @@ keymap("n", "=", "mzgg=G`z", opts) -- Plugins -- -- Neo-tree -keymap("n", "e", ":Neotree filesystem reveal float", opts) +keymap("n", "e", ":Neotree filesystem reveal left toggle", opts) -- Telescope keymap("n", "ff", ":Telescope find_files", opts) diff --git a/private_dot_config/nvim/lua/user/neo-tree.lua b/private_dot_config/nvim/lua/user/neo-tree.lua index 4d3a20d..8400440 100644 --- a/private_dot_config/nvim/lua/user/neo-tree.lua +++ b/private_dot_config/nvim/lua/user/neo-tree.lua @@ -27,8 +27,8 @@ neo_tree.setup { }, }, window = { - position = "float", - width = 50, + position = "left", + width = 35, mappings = { ["q"] = "close_window", }, From d0e2a4f9a6814fe729dfd2d7a943e146789421ff Mon Sep 17 00:00:00 2001 From: Thieurom Date: Wed, 27 May 2026 14:03:43 +0700 Subject: [PATCH 18/18] Adjust Kitty font settings --- private_dot_config/kitty/kitty.conf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/private_dot_config/kitty/kitty.conf b/private_dot_config/kitty/kitty.conf index 54e3ff2..51a06d9 100644 --- a/private_dot_config/kitty/kitty.conf +++ b/private_dot_config/kitty/kitty.conf @@ -1,11 +1,11 @@ # vim:fileencoding=utf-8:ft=conf -font_family SourceCodePro-Medium +font_family Fira Code bold_font auto italic_font auto bold_italic_font auto -font_size 20.0 -adjust_line_height 110% +font_size 19.0 +adjust_line_height 125% shell_integration no-cursor cursor_shape block