qmk.lua (17633B)
1 if pcall(require, 'qmk') then 2 local group = vim.api.nvim_create_augroup('tms-qmk', {}) 3 4 vim.api.nvim_create_autocmd('BufEnter', { 5 desc = 'Planck', 6 group = group, 7 pattern = '*/ergodox_ez/glow/*', 8 callback = function() 9 require('qmk').setup({ 10 name = 'LAYOUT_ergodox_pretty', 11 auto_format_pattern = '*/ergodox_ez/glow/*', 12 layout = { 13 'x x x x x x x _ _ x x x x x x x', 14 'x x x x x x x _ _ x x x x x x x', 15 'x x x x x x _ _ _ _ x x x x x x', 16 'x x x x x x x _ _ x x x x x x x', 17 'x x x x x _ _ _ _ _ _ x x x x x', 18 '_ _ _ _ _ x x _ _ x x _ _ _ _ _', 19 '_ _ _ _ _ _ x _ _ x _ _ _ _ _ _', 20 '_ _ _ _ x x x _ _ x x x _ _ _ _', 21 }, 22 comment_preview = { keymap_overrides = { XXXXXXX = 'XX', KC_NO = 'XX' } }, 23 }) 24 end, 25 }) 26 27 vim.api.nvim_create_autocmd('BufEnter', { 28 desc = 'Planck', 29 group = group, 30 pattern = '*/planck/ez/glow/*keymap.c', 31 callback = function() 32 require('qmk').setup({ 33 name = 'LAYOUT_planck_grid', 34 auto_format_pattern = '*/planck/ez/glow/*keymap.c', 35 layout = { 36 'x x x x x x x x x x x x', 37 'x x x x x x x x x x x x', 38 'x x x x x x x x x x x x', 39 'x x x x x x x x x x x x', 40 }, 41 comment_preview = { keymap_overrides = { XXXXXXX = 'XX', KC_NO = 'XX' } }, 42 }) 43 end, 44 }) 45 46 vim.api.nvim_create_autocmd('BufEnter', { 47 desc = 'Planck', 48 group = group, 49 pattern = '*/framework/ansi/*keymap.c', 50 callback = function() 51 require('qmk').setup({ 52 name = 'LAYOUT', 53 auto_format_pattern = '*/framework/ansi/*keymap.c', 54 layout = { 55 'x x x x x x x x x x x x x x', 56 'x x x x x x x x x x x x x x', 57 'x x x x x x x x x x x x x x', 58 'x x x x x x x x x x x x xx^', 59 '^xx x x x x x x x x x x xx^', 60 'x x x x xxx^xxx x x x x x x', 61 }, 62 comment_preview = { keymap_overrides = { XXXXXXX = 'XX', KC_NO = 'XX' } }, 63 }) 64 end, 65 }) 66 end 67 68 if pcall(require, 'cmp') then 69 local source = {} 70 function source:complete(_, callback) 71 callback({ 72 { label = 'KC_NO', detail = [[Ignore this key (NOOP)]] }, 73 { label = 'KC_TRNS', detail = [[Use the next lowest non-transparent key ]] }, 74 { label = 'KC_A', detail = [[`a` and `A` ]] }, 75 { label = 'KC_B', detail = [[`b` and `B` ]] }, 76 { label = 'KC_C', detail = [[`c` and `C` ]] }, 77 { label = 'KC_D', detail = [[`d` and `D` ]] }, 78 { label = 'KC_E', detail = [[`e` and `E` ]] }, 79 { label = 'KC_F', detail = [[`f` and `F` ]] }, 80 { label = 'KC_G', detail = [[`g` and `G` ]] }, 81 { label = 'KC_H', detail = [[`h` and `H` ]] }, 82 { label = 'KC_I', detail = [[`i` and `I` ]] }, 83 { label = 'KC_J', detail = [[`j` and `J` ]] }, 84 { label = 'KC_K', detail = [[`k` and `K` ]] }, 85 { label = 'KC_L', detail = [[`l` and `L` ]] }, 86 { label = 'KC_M', detail = [[`m` and `M` ]] }, 87 { label = 'KC_N', detail = [[`n` and `N` ]] }, 88 { label = 'KC_O', detail = [[`o` and `O` ]] }, 89 { label = 'KC_P', detail = [[`p` and `P` ]] }, 90 { label = 'KC_Q', detail = [[`q` and `Q` ]] }, 91 { label = 'KC_R', detail = [[`r` and `R` ]] }, 92 { label = 'KC_S', detail = [[`s` and `S` ]] }, 93 { label = 'KC_T', detail = [[`t` and `T` ]] }, 94 { label = 'KC_U', detail = [[`u` and `U` ]] }, 95 { label = 'KC_V', detail = [[`v` and `V` ]] }, 96 { label = 'KC_W', detail = [[`w` and `W` ]] }, 97 { label = 'KC_X', detail = [[`x` and `X` ]] }, 98 { label = 'KC_Y', detail = [[`y` and `Y` ]] }, 99 { label = 'KC_Z', detail = [[`z` and `Z` ]] }, 100 { label = 'KC_1', detail = [[`1` and `!` ]] }, 101 { label = 'KC_2', detail = [[`2` and `@` ]] }, 102 { label = 'KC_3', detail = [[`3` and `#` ]] }, 103 { label = 'KC_4', detail = [[`4` and `$` ]] }, 104 { label = 'KC_5', detail = [[`5` and `%` ]] }, 105 { label = 'KC_6', detail = [[`6` and `^` ]] }, 106 { label = 'KC_7', detail = [[`7` and `&` ]] }, 107 { label = 'KC_8', detail = [[`8` and `*` ]] }, 108 { label = 'KC_9', detail = [[`9` and `(` ]] }, 109 { label = 'KC_0', detail = [[`0` and `)` ]] }, 110 { label = 'KC_ENT', detail = [[Return (Enter)]] }, 111 { label = 'KC_ESC', detail = [[Escape]] }, 112 { label = 'KC_BSPC', detail = [[Delete (Backspace)]] }, 113 { label = 'KC_TAB', detail = [[Tab ]] }, 114 { label = 'KC_SPC', detail = [[Spacebar]] }, 115 { label = 'KC_MINS', detail = [[`-` and `_` ]] }, 116 { label = 'KC_EQL', detail = [[`=` and `+` ]] }, 117 { label = 'KC_LBRC', detail = [[`[` and `{` ]] }, 118 { label = 'KC_RBRC', detail = [[`]` and `}` ]] }, 119 { label = 'KC_BSLS', detail = [[`\` and `\]] }, 120 { label = 'KC_NUHS', detail = [[Non-US `#` and `~`]] }, 121 { label = 'KC_SCLN', detail = [[`;` and `:` ]] }, 122 { label = 'KC_QUOT', detail = [[`'` and `"` ]] }, 123 { label = 'KC_GRV', detail = [[<code>`</code> and `~`]] }, 124 { label = 'KC_COMM', detail = [[`,` and `<` ]] }, 125 { label = 'KC_DOT', detail = [[`.` and `>` ]] }, 126 { label = 'KC_SLSH', detail = [[`/` and `?` ]] }, 127 { label = 'KC_CAPS', detail = [[Caps Lock ]] }, 128 { label = 'KC_F1', detail = [[F1]] }, 129 { label = 'KC_F2', detail = [[F2]] }, 130 { label = 'KC_F3', detail = [[F3]] }, 131 { label = 'KC_F4', detail = [[F4]] }, 132 { label = 'KC_F5', detail = [[F5]] }, 133 { label = 'KC_F6', detail = [[F6]] }, 134 { label = 'KC_F7', detail = [[F7]] }, 135 { label = 'KC_F8', detail = [[F8]] }, 136 { label = 'KC_F9', detail = [[F9]] }, 137 { label = 'KC_F10', detail = [[F10 ]] }, 138 { label = 'KC_F11', detail = [[F11 ]] }, 139 { label = 'KC_F12', detail = [[F12 ]] }, 140 { label = 'KC_PSCR', detail = [[Print Screen]] }, 141 { label = 'KC_SCRL', detail = [[Scroll Lock, Brightness Down (macOS)]] }, 142 { label = 'KC_PAUS', detail = [[Pause, Brightness Up (macOS)]] }, 143 { label = 'KC_INS', detail = [[Insert]] }, 144 { label = 'KC_HOME', detail = [[Home]] }, 145 { label = 'KC_PGUP', detail = [[Page Up ]] }, 146 { label = 'KC_DEL', detail = [[Forward Delete]] }, 147 { label = 'KC_END', detail = [[End ]] }, 148 { label = 'KC_PGDN', detail = [[Page Down ]] }, 149 { label = 'KC_RGHT', detail = [[Right Arrow ]] }, 150 { label = 'KC_LEFT', detail = [[Left Arrow]] }, 151 { label = 'KC_DOWN', detail = [[Down Arrow]] }, 152 { label = 'KC_UP', detail = [[Up Arrow]] }, 153 { label = 'KC_NUM', detail = [[Keypad Num Lock and Clear ]] }, 154 { label = 'KC_PSLS', detail = [[Keypad `/`]] }, 155 { label = 'KC_PAST', detail = [[Keypad `*`]] }, 156 { label = 'KC_PMNS', detail = [[Keypad `-`]] }, 157 { label = 'KC_PPLS', detail = [[Keypad `+`]] }, 158 { label = 'KC_PENT', detail = [[Keypad Enter]] }, 159 { label = 'KC_P1', detail = [[Keypad `1` and End]] }, 160 { label = 'KC_P2', detail = [[Keypad `2` and Down Arrow ]] }, 161 { label = 'KC_P3', detail = [[Keypad `3` and Page Down]] }, 162 { label = 'KC_P4', detail = [[Keypad `4` and Left Arrow ]] }, 163 { label = 'KC_P5', detail = [[Keypad `5`]] }, 164 { label = 'KC_P6', detail = [[Keypad `6` and Right Arrow]] }, 165 { label = 'KC_P7', detail = [[Keypad `7` and Home ]] }, 166 { label = 'KC_P8', detail = [[Keypad `8` and Up Arrow ]] }, 167 { label = 'KC_P9', detail = [[Keypad `9` and Page Up]] }, 168 { label = 'KC_P0', detail = [[Keypad `0` and Insert ]] }, 169 { label = 'KC_PDOT', detail = [[Keypad `.` and Delete ]] }, 170 { label = 'KC_NUBS', detail = [[Non-US `\` and `\ ]] }, 171 { label = 'KC_APP', detail = [[Application (Windows Context Menu Key)]] }, 172 { label = 'KC_KB_POWER', detail = [[System Power]] }, 173 { label = 'KC_PEQL', detail = [[Keypad `=`]] }, 174 { label = 'KC_F13', detail = [[F13 ]] }, 175 { label = 'KC_F14', detail = [[F14 ]] }, 176 { label = 'KC_F15', detail = [[F15 ]] }, 177 { label = 'KC_F16', detail = [[F16 ]] }, 178 { label = 'KC_F17', detail = [[F17 ]] }, 179 { label = 'KC_F18', detail = [[F18 ]] }, 180 { label = 'KC_F19', detail = [[F19 ]] }, 181 { label = 'KC_F20', detail = [[F20 ]] }, 182 { label = 'KC_F21', detail = [[F21 ]] }, 183 { label = 'KC_F22', detail = [[F22 ]] }, 184 { label = 'KC_F23', detail = [[F23 ]] }, 185 { label = 'KC_F24', detail = [[F24 ]] }, 186 { label = 'KC_EXEC', detail = [[Execute ]] }, 187 { label = 'KC_HELP', detail = [[Help]] }, 188 { label = 'KC_MENU', detail = [[Menu]] }, 189 { label = 'KC_SLCT', detail = [[Select]] }, 190 { label = 'KC_STOP', detail = [[Stop]] }, 191 { label = 'KC_AGIN', detail = [[Again ]] }, 192 { label = 'KC_UNDO', detail = [[Undo]] }, 193 { label = 'KC_CUT', detail = [[Cut ]] }, 194 { label = 'KC_COPY', detail = [[Copy]] }, 195 { label = 'KC_PSTE', detail = [[Paste ]] }, 196 { label = 'KC_FIND', detail = [[Find]] }, 197 { label = 'KC_KB_MUTE', detail = [[Mute]] }, 198 { label = 'KC_KB_VOLUME_UP', detail = [[Volume Up ]] }, 199 { label = 'KC_KB_VOLUME_DOWN', detail = [[Volume Down ]] }, 200 { label = 'KC_LCAP', detail = [[Locking Caps Lock ]] }, 201 { label = 'KC_LNUM', detail = [[Locking Num Lock]] }, 202 { label = 'KC_LSCR', detail = [[Locking Scroll Lock ]] }, 203 { label = 'KC_PCMM', detail = [[Keypad `,`]] }, 204 { label = 'KC_KP_EQUAL_AS400', detail = [[Keypad `=` on AS/400 keyboards]] }, 205 { label = 'KC_INT1', detail = [[International 1 ]] }, 206 { label = 'KC_INT2', detail = [[International 2 ]] }, 207 { label = 'KC_INT3', detail = [[International 3 ]] }, 208 { label = 'KC_INT4', detail = [[International 4 ]] }, 209 { label = 'KC_INT5', detail = [[International 5 ]] }, 210 { label = 'KC_INT6', detail = [[International 6 ]] }, 211 { label = 'KC_INT7', detail = [[International 7 ]] }, 212 { label = 'KC_INT8', detail = [[International 8 ]] }, 213 { label = 'KC_INT9', detail = [[International 9 ]] }, 214 { label = 'KC_LNG1', detail = [[Language 1]] }, 215 { label = 'KC_LNG2', detail = [[Language 2]] }, 216 { label = 'KC_LNG3', detail = [[Language 3]] }, 217 { label = 'KC_LNG4', detail = [[Language 4]] }, 218 { label = 'KC_LNG5', detail = [[Language 5]] }, 219 { label = 'KC_LNG6', detail = [[Language 6]] }, 220 { label = 'KC_LNG7', detail = [[Language 7]] }, 221 { label = 'KC_LNG8', detail = [[Language 8]] }, 222 { label = 'KC_LNG9', detail = [[Language 9]] }, 223 { label = 'KC_ERAS', detail = [[Alternate Erase ]] }, 224 { label = 'KC_SYRQ', detail = [[SysReq/Attention]] }, 225 { label = 'KC_CNCL', detail = [[Cancel]] }, 226 { label = 'KC_CLR', detail = [[Clear ]] }, 227 { label = 'KC_PRIR', detail = [[Prior ]] }, 228 { label = 'KC_RETN', detail = [[Return]] }, 229 { label = 'KC_SEPR', detail = [[Separator ]] }, 230 { label = 'KC_OUT', detail = [[Out ]] }, 231 { label = 'KC_OPER', detail = [[Oper]] }, 232 { label = 'KC_CLAG', detail = [[Clear/Again ]] }, 233 { label = 'KC_CRSL', detail = [[CrSel/Props ]] }, 234 { label = 'KC_EXSL', detail = [[ExSel ]] }, 235 { label = 'KC_LCTL', detail = [[Left Control]] }, 236 { label = 'KC_LSFT', detail = [[Left Shift]] }, 237 { label = 'KC_LALT', detail = [[Left Alt (Option) ]] }, 238 { label = 'KC_LGUI', detail = [[Left GUI (Windows/Command/Meta key) ]] }, 239 { label = 'KC_RCTL', detail = [[Right Control ]] }, 240 { label = 'KC_RSFT', detail = [[Right Shift ]] }, 241 { label = 'KC_RALT', detail = [[Right Alt (Option/AltGr)]] }, 242 { label = 'KC_RGUI', detail = [[Right GUI (Windows/Command/Meta key)]] }, 243 { label = 'KC_PWR', detail = [[System Power Down ]] }, 244 { label = 'KC_SLEP', detail = [[System Sleep]] }, 245 { label = 'KC_WAKE', detail = [[System Wake ]] }, 246 { label = 'KC_MUTE', detail = [[Mute]] }, 247 { label = 'KC_VOLU', detail = [[Volume Up ]] }, 248 { label = 'KC_VOLD', detail = [[Volume Down ]] }, 249 { label = 'KC_MNXT', detail = [[Next Track]] }, 250 { label = 'KC_MPRV', detail = [[Previous Track]] }, 251 { label = 'KC_MSTP', detail = [[Stop Track]] }, 252 { label = 'KC_MPLY', detail = [[Play/Pause Track]] }, 253 { label = 'KC_MSEL', detail = [[Launch Media Player ]] }, 254 { label = 'KC_EJCT', detail = [[Eject ]] }, 255 { label = 'KC_MAIL', detail = [[Launch Mail ]] }, 256 { label = 'KC_CALC', detail = [[Launch Calculator ]] }, 257 { label = 'KC_MYCM', detail = [[Launch My Computer]] }, 258 { label = 'KC_WSCH', detail = [[Browser Search]] }, 259 { label = 'KC_WHOM', detail = [[Browser Home]] }, 260 { label = 'KC_WBAK', detail = [[Browser Back]] }, 261 { label = 'KC_WFWD', detail = [[Browser Forward ]] }, 262 { label = 'KC_WSTP', detail = [[Browser Stop]] }, 263 { label = 'KC_WREF', detail = [[Browser Refresh ]] }, 264 { label = 'KC_WFAV', detail = [[Browser Favorites ]] }, 265 { label = 'KC_MFFD', detail = [[Next Track]] }, 266 { label = 'KC_MRWD', detail = [[Previous Track]] }, 267 { label = 'KC_BRIU', detail = [[Brightness Up ]] }, 268 { label = 'KC_BRID', detail = [[Brightness Down ]] }, 269 { label = 'KC_CPNL', detail = [[Open Control Panel]] }, 270 { label = 'KC_ASST', detail = [[Launch Context-Aware Assistant]] }, 271 { label = 'MOD_LCTL', detail = 'Left Control' }, 272 { label = 'MOD_LSFT', detail = 'Left Shift' }, 273 { label = 'MOD_LALT', detail = 'Left Alt' }, 274 { label = 'MOD_LGUI', detail = 'Left GUI (Windows/Command/Meta key)' }, 275 { label = 'MOD_RCTL', detail = 'Right Control' }, 276 { label = 'MOD_RSFT', detail = 'Right Shift' }, 277 { label = 'MOD_RALT', detail = 'Right Alt (AltGr)' }, 278 { label = 'MOD_RGUI', detail = 'Right GUI (Windows/Command/Meta key)' }, 279 { label = 'MOD_HYPR', detail = 'Hyper (Left Control, Shift, Alt and GUI)' }, 280 { label = 'MOD_MEH', detail = 'Meh (Left Control, Shift, and Alt)' }, 281 { label = 'KC_TILD', detail = '~' }, 282 { label = 'KC_EXLM', detail = '!' }, 283 { label = 'KC_AT', detail = '@' }, 284 { label = 'KC_HASH', detail = '#' }, 285 { label = 'KC_DLR', detail = '$' }, 286 { label = 'KC_PERC', detail = '%' }, 287 { label = 'KC_CIRC', detail = '^' }, 288 { label = 'KC_AMPR', detail = '&' }, 289 { label = 'KC_ASTR', detail = '*' }, 290 { label = 'KC_LPRN', detail = '(' }, 291 { label = 'KC_RPRN', detail = ')' }, 292 { label = 'KC_UNDS', detail = '_' }, 293 { label = 'KC_PLUS', detail = '+' }, 294 { label = 'KC_LCBR', detail = '{' }, 295 { label = 'KC_RCBR', detail = '}' }, 296 { label = 'KC_PIPE', detail = [[\|]] }, 297 { label = 'KC_COLN', detail = ':' }, 298 { label = 'KC_DQT', detail = '"' }, 299 { label = 'KC_LT', detail = '<' }, 300 { label = 'KC_GT', detail = '>' }, 301 { label = 'KC_QUES', detail = '?' }, 302 }) 303 end 304 305 require('cmp').register_source('qmk_keys', source) 306 307 vim.api.nvim_create_autocmd({ 'BufRead', 'BufNewFile' }, { 308 pattern = '*/qmk_firmware/**', 309 callback = function() 310 require('cmp').setup.buffer { 311 sources = { 312 { name = 'qmk_keys' }, 313 { name = 'nvim_lsp' }, 314 { name = 'snippets' }, 315 { name = 'buffer', keyword_length = 5 }, 316 }, 317 } 318 end, 319 }) 320 end