-
Notifications
You must be signed in to change notification settings - Fork 0
/
kanata.tmLanguage.json
196 lines (196 loc) · 9.83 KB
/
kanata.tmLanguage.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "kanata",
"scopeName": "source.kanata",
"foldingStartMarker": "\\(",
"foldingStopMarker": "\\)",
"patterns": [
{
"match": "(;;).*$\\n?",
"name": "comment.line.semicolon.kanata",
"captures": {
"1": {
"name": "punctuation.definition.comment.kanata"
}
}
},
{
"begin": "#\\|",
"end": "\\|#",
"name": "comment.block.kanata"
},
{
"_description": "top-level blocks",
"match": "(?:\\(\\s*)(defcfg|defsrc|defalias|deflayer|defvar|defvirtualkeys|defseq|defchords|defaliasenvcond|defoverrides|deflocalkeys-linux|deflocalkeys-win|deflocalkeys-wintercept|deflocalkeys-macos|deflocalkeys-winiov2|include|deftemplate|template-expand|deflayermap|platform)(?=\\s|[()])",
"captures": {
"1": {
"name": "keyword.control.kanata"
}
}
},
{
"_description": "defcfg options",
"match": "(?:^|\\s|[()])(sequence-timeout|sequence-input-mode|linux-dev|linux-dev-names-include|linux-dev-names-exclude|linux-unicode-u-code|linux-unicode-termination|linux-x11-repeat-delay-rate|windows-altgr|windows-interception-mouse-hwid|macos-dev-names-include|process-unmapped-keys|block-unmapped-keys|danger-enable-cmd|sequence-backtrack-modcancel|log-layer-changes|delegate-to-first-layer|linux-continue-if-no-devs-found|movemouse-inherit-accel-state|movemouse-smooth-diagonals|dynamic-macro-max-presses|concurrent-tap-hold|windows-interception-keyboard-hwids|rapid-event-delay|dynamic-macro-replay-delay-behaviour|transparent-key-resolution)(?=\\s|[()])",
"captures": {
"1": {
"name": "constant.language.kanata"
}
}
},
{
"_description": "defcfg constants",
"match": "(?:^|\\s|[()])(true|yes|false|no)(?=\\s|[()])",
"captures": {
"1": {
"name": "constant.other.boolean.kanata"
}
}
},
{
"_description": "atom actions",
"match": "(?:^|\\s|[()])(XX|lrld|lrld-next|lrnx|lrld-prev|lrld-num|lrld-file|lrpv|sldr|mlft|mouseleft|mrgt|mouseright|mmid|mousemid|mfwd|mouseforward|mbck|mousebackward|mltp|mousetapleft|mrtp|mousetapright|mmtp|mousetapmid|mftp|mousetapforward|mbtp|mousetapbackward|rpt|rpt-key|rpt-any|repeat|dynamic-macro-record-stop|mwu|mwd|mwl|mwr|mousewheelup|mousewheeldown|mousewheelleft|mousewheelright)(?=\\s|[()])",
"captures": {
"1": {
"name": "constant.language.kanata"
}
}
},
{
"_description": "list actions",
"match": "(?:^|\\s|[()])(layer-switch|layer-toggle|layer-while-held|tap-hold|tap-hold-press|tap-hold-release|tap-hold-press-timeout|tap-hold-release-timeout|tap-hold-release-keys|tap-hold-except-keys|multi|macro|macro-repeat|macro-release-cancel|macro-repeat-release-cancel|unicode|one-shot|one-shot-press|one-shot-release|one-shot-press-pcancel|one-shot-release-pcancel|tap-dance|tap-dance-eager|chord|release-key|release-layer|on-press|on-release|on-idle|mwheel-up|mwheel-down|mwheel-left|mwheel-right|movemouse-up|movemouse-down|movemouse-left|movemouse-right|movemouse-accel-up|movemouse-accel-down|movemouse-accel-left|movemouse-accel-right|movemouse-speed|setmouse|dynamic-macro-record|dynamic-macro-play|arbitrary-code|cmd|cmd-output-keys|fork|caps-word|caps-word-custom|dynamic-macro-record-stop-truncate|switch|sequence|unmod|unshift|lrld-num)(?=\\s|[()])",
"captures": {
"1": {
"name": "entity.name.function.kanata"
}
}
},
{
"_description": "virtual (a.k.a 'fake') key actions",
"match": "(?:^|\\s|[()])(tap-virtualkey|tap-vkey|press-virtualkey|press-vkey|release-virtualkey|release-vkey|toggle-virtualkey|toggle-vkey)(?=\\s|[()])",
"captures": {
"1": {
"name": "constant.language.kanata"
}
}
},
{
"_description": "special atom actions/keywords within switch",
"_note": "also there should be a 'break' keyword, but it's also a key",
"match": "(?:^|\\s|[()])(fallthrough)(?=\\s|[()])",
"captures": {
"1": {
"name": "constant.language.kanata"
}
}
},
{
"_description": "special functions within switch",
"match": "(?:^|\\s|[()])(not|or|and|key-history|key-timing|input)(?=\\s|[()])",
"captures": {
"1": {
"name": "entity.name.function.kanata"
}
}
},
{
"_description": "special functions within defvar",
"match": "(?:^|\\s|[()])(concat)(?=\\s|[()])",
"captures": {
"1": {
"name": "entity.name.function.kanata"
}
}
},
{
"_description": "special functions within deftemplate",
"match": "(?:^|\\s|[()])(concat)(?=\\s|[()])",
"captures": {
"1": {
"name": "entity.name.function.kanata"
}
}
},
{
"_description": "special statements within deftemplate",
"match": "(?:^|\\s|[()])(if-equal|if-not-equal|if-in-list|if-not-in-list)(?=\\s|[()])",
"captures": {
"1": {
"name": "keyword.control.kanata"
}
}
},
{
"_description": "keys",
"match": "(?:^|\\s|[()])(\\\\|\\{|\\}|'|\\/|\\.|,|-|=|\\[|\\]|;|grv|grave|1|2|3|4|5|6|7|8|9|0|min|eql|bspc|bks|tab|q|w|e|r|t|y|u|i|o|p|lbrc|rbrc|bksl|yen|¥|caps|a|s|d|f|g|h|j|k|l|scln|apo|apos|ret|return|ent|enter|lshift|lshft|lsft|shft|sft|z|x|c|v|b|n|m|comm|kp=|clr|kp0|kp1|kp2|kp3|kp4|kp5|kp6|kp7|kp8|kp9|kprt|kp\\/|kp\\+|kp\\*|kp-|kp\\.|ssrq|sys|102d|lsgt|nubs|nonusbslash|scrlck|slck|pause|break|brk|wkup|esc|rshift|rshft|rsft|lctrl|lctl|ctl|lalt|alt|spc|ralt|comp|cmps|cmp|menu|apps|lmeta|lmet|met|rmeta|rmet|rctrl|rctl|del|ins|bck|fwd|pgup|pgdn|up|down|lft|left|rght|right|home|end|nlck|nlk|mute|volu|voldwn|vold|brup|bru|brdown|brdwn|brdn|blup|bldn|next|pp|prev|f1|f2|f3|f4|f5|f6|f7|f8|f9|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f20|f21|f22|f23|f24|kana|katakana|katakanahiragana|hiragana|cnv|conv|henk|hnk|henkan|ncnv|mhnk|muhenkan|ro|prtsc|prnt|mlft|mouseleft|mrgt|mouseright|mmid|mousemid|mfwd|mouseforward|mbck|mousebackward|hmpg|homepage|mdia|media|mail|email|calc|plyr|player|powr|power|zzz|sleep|Backquote|Digit1|Digit2|Digit3|Digit4|Digit5|Digit6|Digit7|Digit8|Digit9|Digit0|Minus|Equal|Backspace|Tab|KeyQ|KeyW|KeyE|KeyR|KeyT|KeyY|KeyU|KeyI|KeyO|KeyP|BracketLeft|BracketRight|CapsLock|KeyA|KeyS|KeyD|KeyF|KeyG|KeyH|KeyJ|KeyK|KeyL|Semicolon|Quote|Enter|ShiftLeft|KeyZ|KeyX|KeyC|KeyV|KeyB|KeyN|KeyM|Comma|Period|Slash|Backslash|Numpad0|Numpad1|Numpad2|Numpad3|Numpad4|Numpad5|Numpad6|Numpad7|Numpad8|Numpad9|NumpadEnter|NumpadDivide|NumpadAdd|NumpadMultiply|NumpadEqual|NumpadSubtract|NumpadDecimal|NumpadComma|IntlBackslash|ScrollLock|Pause|WakeUp|Escape|RightShift|ControlLeft|AltLeft|Space|AltRight|ContextMenu|MetaLeft|MetaRight|ControlRight|Delete|Insert|BrowserBack|BrowserForward|PageUp|PageDown|ArrowUp|ArrowDown|ArrowLeft|ArrowRight|Home|End|NumLock|VolumeMute|VolumeUp|VolumeDown|MediaTrackNext|MediaPlayPause|MediaTrackPrevious|F1|F2|F3|F4|F5|F6|F7|F8|F9|F10|F11|F12|F13|F14|F15|F16|F17|F18|F19|F20|F21|F22|F23|F24|IntlRo|PrintScreen|PrintScreen|LaunchMail)(?=\\s|[()])",
"captures": {
"1": {
"name": "string.kanata"
}
}
},
{
"_description": "aliases starting with @, and variables starting with $",
"match": "(?:^|\\s|[#()\\]\\[{}-])((?:@|\\$).+?)(?=\\s|[()])",
"captures": {
"1": {
"name": "variable.parameter.kanata"
}
}
},
{
"_description": "output chords",
"match": "((?:(?:C|A|S|M|RA|AG)-)+[\\S()]+)",
"captures": {
"1": {
"name": "constant.other.output-chord.kanata"
}
}
},
{
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end"
}
},
"name": "string.quoted.double",
"patterns": [
{
"match": "(\\[abtnre0\"|\\\\])",
"name": "constant.character.escape.kanata"
},
{
"match": "(\\[^abtnre0\"|\\\\])",
"name": "invalid.illegal.escape.kanata"
}
]
}
],
"repository": {
"keywords": {
"patterns": [
{
"name": "keyword.control.kanata",
"match": "\\b(-{3,})\\b"
}
]
},
"strings": {
"name": "string.quoted.double.kanata",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.kanata",
"match": "\\\\."
}
]
}
}
}