]> git.gir.st - VimFx.git/blob - documentation/options.md
Improve `translations` documentation
[VimFx.git] / documentation / options.md
1 <!--
2 This is part of the VimFx documentation.
3 Copyright Simon Lydell 2015, 2016.
4 See the file README.md for copying conditions.
5 -->
6
7 # Options
8
9 VimFx has many options that can be configured, but they all have nice defaults
10 so you shouldn’t need to.
11
12 Advanced users might also be interested in [styling] VimFx and writing a [config
13 file].
14
15 [styling]: styling.md
16 [config file]: config-file.md
17
18
19 ## Regular options
20
21 These options are available in VimFx’s options page in the Add-ons Manager
22 (where you can also customize [keyboard shortcuts]).
23
24 [keyboard shortcuts]: shortcuts.md
25
26 ### Prevent autofocus
27
28 `prevent_autofocus`
29
30 Many sites autofocus their search box, for example. This might be annoying when
31 browsing using the keyboard, as you do with VimFx, because it often feels like
32 VimFx isn’t responding, until you realize that you are typing in a text box—not
33 running VimFx commands!
34
35 For this reason VimFx can prevent autofocus. It’s not enabled by default,
36 though, since one of VimFx’s key features is to be nice to your browser and your
37 habits.
38
39 If enabled, all focusing that occurs on page load, or after you’ve just switched
40 back to a tab from another, until you interact with the page is prevented.
41
42 #### Technical notes and trivia
43
44 Autofocus on page load and when coming back to a tab are the two most common
45 cases. Some sites, though, automatically focus a text input in other cases as
46 well. Trying to catch those cases as well, VimFx used to prevent all focusing
47 that didn’t occur within a fixed number of milliseconds after your last
48 interaction (click or keypress). However, this proved to be too aggressive,
49 preventing too much focusing. In other words, the time-based check was not
50 sufficient to distinguish between intended focusing and automatic unwanted
51 focusing. It made things worse more than it helped. Since these cases are so
52 difficult (if not impossible) to detect, it is better to leave them. Thankfully
53 they are not very common.
54
55 On page load or when coming back to a tab, before you have interacted with the
56 page in any way, we can be _sure_ that any focusing is automatic (not caused by
57 you), which makes it safe to prevent all focusing in those time spans.
58
59 ### Ignore keyboard layout
60
61 `ignore_keyboard_layout`
62
63 If you use more than one keyboard layout, you probably want to enable this
64 option.
65
66 People who use a keyboard layout _without_ the letters A–Z usually also use the
67 standard en-US QWERTY layout as well.
68
69 This option makes VimFx ignore your current layout and pretend that the standard
70 en-US QWERTY layout is _always_ used. This way the default shortcuts work even
71 if your layout doesn’t contain the letters A–Z and all shortcuts can be typed by
72 the same physical keys on your keyboard regardless of your current keyboard
73 layout.
74
75 Note that when filtering hints markers by element text (but not when typing hint
76 characters) in [Hints mode], your current layout _is_ used, even if you’ve
77 enabled ignoring of it. That’s because otherwise you wouldn’t be able to filter
78 by element text in any other language than English.
79
80 If you have modified your keyboard layout slightly using software, such as
81 having swapped `<capslock>` and `<escape>`, this option will cause VimFx to
82 ignore that as well. If that’s unwanted, you need to tell VimFx about your
83 layout customizations by using the special option [`translations`].
84
85 If you’d like VimFx to pretend that some other keyboard layout than the standard
86 en-US QWERTY is always used, that’s also a job for the special option
87 [`translations`].
88
89 [Hints mode]: commands.md#the-hint-commands--hints-mode
90 [`translations`]: #translations
91
92 ### Blacklist
93
94 `blacklist`
95
96 Space separated list of URL patterns where VimFx should automatically enter
97 Ignore mode. Example:
98
99 *example.com* http://example.org/editor/*
100
101 The fastest way to blacklist the page you’re currently on, is to use the `gB`
102 command. It opens a modal with a text input filled in with the blacklist, and
103 with `*currentdomain.com*` added at the start for you! Edit it if needed, or
104 just press `<enter>` straight away to save. Ignore mode is then automatically
105 entered (if the URL patterns apply).
106
107 Note that the URLs in the list must match the current URL _entirely_ for it to
108 apply. Therefore it is easiest to always use the `*` wildcard (which matches
109 zero or more characters).
110
111 Set the option to `*` to make VimFx start out in Ignore mode _everywhere._
112
113 When you’re done editing the blacklist, go to one of the pages you intend to
114 match. If you already have a tab open for that page, reload it. Then look at
115 VimFx’s [button] to see if your edits work out.
116
117 Note that when Ignore mode is automatically entered because of the blacklist, it
118 is also automatically exited (returning to Normal mode) if you go to a
119 non-blacklisted page in the same tab. On the other hand, if you entered Ignore
120 mode by pressing `i`, you’ll stay in Ignore mode in that tab until you exit it,
121 even if you navigate to another page.
122
123 You might also want to read about the [Ignore mode `<s-f1>` command][s-f1].
124
125 [button]: button.md
126 [s-f1]: commands.md#ignore-mode-s-f1
127
128 #### Blacklisting specific elements
129
130 VimFx automatically enters Ignore mode while Vim-style editors are focused, such
131 as the [wasavi] extension and [CodeMirror editors in Vim mode][codemirror-vim].
132
133 By default, VimFx lets you press `<escape>` to blur text inputs. Also by
134 default, Vim-style editors use `<escape>` to exit from their Insert mode to
135 their Normal mode. In other words, there is a keyboard shortcut conflict here.
136
137 It makes the most sense to let the Vim-style editor “win.” That’s why VimFx
138 (temporarily) enters Ignore mode when focusing such an editor. In Ignore mode,
139 there is no `<escape>` shortcut (by default), and thus no conflict. Instead,
140 there’s `<s-escape>` to blur the current element and exit Ignore mode.
141 `<s-escape>` was chosen because it is very unlikely to cause conflicts. If it
142 ever does, there’s the [`<s-f1>`] command to the rescue.
143
144 There is currently no way of specifying your own elements to be blacklisted, but
145 such a feature could be added if there’s demand for it.
146
147 [wasavi]: http://appsweets.net/wasavi/
148 [codemirror-vim]: https://codemirror.net/demo/vim.html
149 [`<s-f1>`]: commands.md#ignore-mode-s-f1
150
151 ### Hint characters
152
153 `hints.chars`
154
155 The characters used for the hints in Hints mode, which can be entered using one
156 of the many [hint commands].
157
158 Tip: Prefer filtering hints by element text? Use only uppercase hint characters,
159 or only numbers.
160
161 #### Easy-to-type and performant hints
162
163 Quick suggestion: Put more easily reachable keys longer to the left. Put two
164 pretty good (but not the best) keys at the end, after the space.
165
166 Some hint characters are easier to type than others. Many people think that the
167 ones on the home row are the best. VimFx favors keys to the left. That’s why you
168 should put better keys longer to the left.
169
170 The hint characters always contain a single space. This splits them into two
171 groups: _primary_ hint characters (before the space), and _secondary_ hint
172 characters (after the space). Read on to find out why.
173
174 Some markable elements are quicker to find than others. Therefore, VimFx looks
175 for markable elements in two passes for some commands, such as the `f` command.
176 (This is why all hints don’t always appear on screen at the same time). If two
177 passes are used, hints from the _first_ pass can only begin with _primary_ hint
178 characters. In all other cases hints may start with _any_ hint character.
179
180 When choosing how many secondary hint characters you want (there are two by
181 default), think about this: Usually most markable elements are found in the
182 first pass, while fewer are found in the second pass. So it makes sense to have
183 more primary hint characters than secondary. It’s a tradeoff. If you think the
184 hints from the first pass are too long, you probably need more primary hint
185 characters. On the other hand, if you think the hints from the _second_ pass are
186 too long, you might need a few extra secondary hint characters, but remember
187 that it might be at the expense of longer hints in the first pass.
188
189 All of this also help you understand why hints may be slow on some pages:
190
191 - One reason could be that most hints come from a second pass, which are slower
192 to compute (and are worse than first pass hints).
193
194 If a site gets an unusual amount of second pass hints, it might be because the
195 site is badly coded accessibility-wise. If so, consider contacting the site
196 and telling them so, which improves their accessibility for everyone!
197
198 - Another reason could be that a page has a _huge_ amount of links. If that
199 bothers you regularly, feel free to send a pull request with faster code!
200
201 #### Filtering hints by element text
202
203 All characters other than the hint characters are used to filter hint markers by
204 element text.
205
206 The filtering works like in Firefox’s location bar. In short, that means:
207
208 - It is case insensitive.
209 - Your typed characters are split on spaces. Each part must be present in the
210 element text (in any order, and they may overlap).
211
212 By default, “f” is a hint character. If you type an “f”, that character is used
213 to match the hints on screen. If you type an “F” (uppercase), though, which is
214 _not_ a hint character by default, you will filter the hints based on element
215 text, causing some hints markers to disappear, and the rest to be replaced. Only
216 the markable elements with text containing an “f” or “F” will now get a hint
217 marker. All the “f”s and “F”s are highlighted on the page, to help you keep
218 track of what’s going on. Keep typing other non-hint characters to further
219 reduce the number of hint markers, and make the hints shorter all the time.
220
221 Hint markers are usually displayed in uppercase, because it looks nicer.
222 However, if you mix both lowercase and uppercase hint characters, they will be
223 displayed as-is, so you can tell them apart. It is recommended to either use
224 _only_ lowercase or _only_ uppercase characters, though.
225
226 Some people prefer to filter hint markers by element text in the first hand,
227 rather than typing hint characters. If so, it is a good idea to choose all
228 uppercase hint characters, or only numbers. This way, you can press `f` and then
229 simply begin typing the text of the link you wish to follow.
230
231 [hint commands]: commands.md#the-hint-commands--hints-mode
232
233 ### Hint auto-activation
234
235 `hints.auto_activate`
236
237 The marker (or markers in the case where several links go to the same place and
238 have gotten the same hint) with the best hint are highlighted in a different
239 color. You may at any time press `<enter>` to activate those markers.
240
241 One workflow is to type non-hint characters until the hint marker of the element
242 you want to activate gets highlighted, and then hit `<enter>`. However, if _all_
243 hint markers end up highlighted (because the text you’ve typed uniquely
244 identifies a single link) the highlighted markers will be activated
245 _automatically._
246
247 If you dislike that, disable this option. Then, you either have to press
248 `<enter>` or a hint character to activate hint markers.
249
250 ### Auto-activation timeout
251
252 `hints.timeout`
253
254 If you type quickly, you might find that you will keep typing even after a hint
255 marker has been automatically activated (see [Hint auto-activation]). You might
256 simply not react that quickly. This might cause you to accidentally trigger
257 VimFx commands. Therefore, VimFx ignores all your keypresses for a certain
258 number of milliseconds when having automatically activated a hint marker after
259 filtering by element text. This option controls exactly how many milliseconds
260 that is.
261
262 If you can’t find a timeout that works for you, you might want to disable [Hint
263 auto-activation] instead.
264
265 [Hint auto-activation]: #hint-auto-activation
266
267 ### Timeout
268
269 `timeout`
270
271 The maximum amount of time (in milliseconds) that may pass between two
272 keypresses of a shortcut.
273
274 It’s easy to press, say, `a` by mistake while browsing. Without a timeout, you
275 might be surprised that all search results are highlighted when you a bit later
276 try to search using the `/` command. (That’s what `a/` does.) _With_ a timeout,
277 the `a` would be cancelled when the timeout has passed.
278
279 ### “Previous”/“Next” link patterns
280
281 `prev_patterns`/`next_patterns`
282
283 Space separated lists of patterns that match links to the previous/next page.
284 Used by the `[` and `]` commands.
285
286 There is a standardized way for websites to tell browsers the URLs to the
287 previous and next page. VimFx looks for that information in the first place.
288 Unfortunately, many websites don’t provide this information. Then VimFx falls
289 back on looking for links on the page that seem to go to the previous/next page
290 using patterns.
291
292 The patterns are matched at the beginning and end of link text (and the
293 attributes defined by the advanced option [`pattern_attrs`]). The patterns do
294 not match in the middle of words, so “previous” does not match “previously”.
295 The matching is case <strong>in</strong>sensitive.
296
297 Actually, the patterns are regular expressions. If you do not know what a
298 regular expression is, that’s fine. You can type simple patterns like the
299 default ones without problems. If you do know what it is, though, you have the
300 possibility to create more advanced patterns if needed.
301
302 Some of the default patterns are English words. You might want to add
303 alternatives in your own language.
304
305 Note: If you need to include a space in your pattern, use `\s`. For example:
306 `next\spage`.
307
308 [`pattern_attrs`]: #pattern_attrs
309
310
311 ## Advanced options
312
313 These options are _not_ available in VimFx’s options page in the Add-ons
314 Manager. They can only be changed in [about:config] or using a [config file].
315 They all start with `extensions.VimFx.`.
316
317 (There are actually a few more advanced options than those listed here. You can
318 see them all in [defaults.coffee].)
319
320 [about:config]: http://kb.mozillazine.org/About:config
321 [config file]: config-file.md
322 [defaults.coffee]: ../extension/lib/defaults.coffee
323
324 ### `notifications_enabled`
325
326 Controls whether [notifications] should be shown or not.
327
328 You can also choose to show notifications any way you want by listening for the
329 [the `notification` and `hideNotification` events][notification-events].
330
331 [notifications]: notifications.md
332 [notification-events]: api.md#the-notification-and-hidenotification-events
333
334 ### `notify_entered_keys`
335
336 If enabled, a [notification] is shown with the keys you have entered so far of
337 a command. This is only noticeable if you type a multi-key shortcut or use a
338 count, or if you filter hint markers by element text (then, the text you’ve
339 typed will be shown).
340
341 [notification]: notifications.md
342
343 ### `prevent_target_blank`
344
345 You might have noticed that some links open in new tabs when you click them.
346 That is not the case if you “click” them using VimFx’s `f` command, though. If
347 you dislike that, disable this option.
348
349 ### `counts_enabled`
350
351 Controls whether [counts] are enabled or not.
352
353 [counts]: commands.md#counts
354
355 ### `find_from_top_of_viewport`
356
357 Toggles whether the various find commands are Vim-style or Firefox
358 default-style.
359
360 Disable this option if you want `/` to work more like `<c-f>` and `n`/`N` to
361 work more like `<f3>`/`<s-f3>`.
362
363 If there is selected text on the page, Firefox starts searching after that.
364 VimFx does so too, but only if the selection is currently _visible_ (inside the
365 current viewport).
366
367 If there _isn’t_ selected text on the page, Firefox starts searching from the
368 top of the page. VimFx instead starts searching from the top of the current
369 viewport.
370
371 The VimFx behavior is designed to be less disorienting. It is also similar to
372 how searching in Vim works. Again, you can return to the Firefox default
373 behavior (if you prefer that) by disabling this option.
374
375 One of the main benefits of the VimFx behavior is that you can scroll past a
376 block of the text with lots of search matches and then continue going through
377 matches with `n` after that block, without having to spam `n` lots and lots of
378 times.
379
380 ### `ignore_ctrl_alt`
381
382 This option is enabled by default on Windows, and disabled otherwise.
383
384 If enabled, ignores ctrl+alt for printable keys. `<a-c-$>` becomes `$` and
385 `<a-c-A>` becomes `A`, while `<a-c-enter>` stays the same.
386
387 This option is suitable on Windows, which treats [AltGr as
388 ctrl+alt][wikipedia-altgr]. For example, if a user of the sv-SE layout on
389 Windows holds AltGr and presses the key labeled `4`, in order to produce a `$`,
390 the result would be `<a-c-$>` without this option, making it impossible to
391 trigger a keyboard shortcut containing `$`. _With_ this option the result is
392 `$`, as expected (and as on GNU/Linux). On the other hand it won’t be possible
393 to trigger keyboard shortcuts such as `<a-c-a>`, but ctrl+alt keyboard shortcuts
394 are [discouraged on Windows][wikipedia-altgr] anyway because of this reason.
395
396 [wikipedia-altgr]: https://en.wikipedia.org/wiki/AltGr_key#Control_.2B_Alt_as_a_substitute
397
398 ### `prevent_autofocus_modes`
399
400 Space separated list of modes where `prevent_autofocus` should be used.
401
402 ### `config_file_directory`
403
404 VimFx can optionally be customized using a [config file]. If you want to that,
405 you need to tell VimFx where that file is. That’s what this option is for.
406
407 By default this option is blank (the empty string), which means that no config
408 file should be loaded.
409
410 If non-blank, it should be the path to the directory where the config file
411 exists. See the [config file] documentation for more information.
412
413 [config file]: config-file.md
414
415 ### `blur_timeout`
416
417 The number of milliseconds VimFx should wait after an element has been blurred
418 before checking if you’re inside a text input or not.
419
420 Some sites with fancy text inputs (such as twitter) blur the text input for a
421 split second and then re-focus it again while typing (for some reason). If you
422 happen to press a key during that split second, that key might trigger a VimFx
423 shortcut instead of typing into the text input, which can be quite annoying. To
424 avoid the problem, VimFx waits a bit before checking if you have left the text
425 input.
426
427 ### Scrolling options
428
429 Apart from its own options, VimFx also respects a few built-in Firefox options.
430
431 #### Smooth scrolling
432
433 If you want to customize Firefox’s smooth scrolling, adjusting
434 `general.smoothScroll.{lines,pages,other}.duration{Min,Max}MS` is the way to
435 go. VimFx has similar options for the scrolling commands, but they work like
436 `layout.css.scroll-behavior.spring-constant`.
437
438 Basically, the higher the value, the faster the scrolling.
439
440 These are VimFx’s variants, and the commands they affect:
441
442 - `smoothScroll.lines.spring-constant`: `h`, `l`, `j`, `k`
443 - `smoothScroll.pages.spring-constant`: `d`, `u`, `<space>`, `<s-space>`
444 - `smoothScroll.other.spring-constant`: `gg`, `G`, `0`, `^`, `$`, `'`
445
446 Note that the value of these options are _strings,_ not numbers!
447
448 Unfortunately, Firefox provides no way for code to tell which “spring constant”
449 it wants when scrolling smoothly. All VimFx can do is to temporarily set
450 Firefox’s `layout.css.scroll-behavior.spring-constant` option. It is reset again
451 after one second (by default). If that doesn’t work out for you, you can
452 customize that timeout using the `scroll.reset_timeout` option.
453
454 The Firefox option `general.smoothScroll` lets you turn off smooth scrolling
455 entirely, including all of VimFx’s scrolling commands.
456
457 `general.smoothScroll.lines`, `general.smoothScroll.pages`, and
458 `general.smoothScroll.other` lets you selectively disable smooth scrolling.
459 VimFx’s scrolling commands follow the same “lines,” “pages” and “other”
460 categorization as in the above list.
461
462 #### Scroll step
463
464 By default you can scroll using the arrow keys in Firefox. You can control how
465 much they scroll by adjusting the following options:
466
467 - `toolkit.scrollbox.horizontalScrollDistance`: `<left>`, `<right>`, `h`, `l`
468 - `toolkit.scrollbox.verticalScrollDistance`: `<down>`, `<up>`, `j`, `k`
469
470 (VimFx used to have a `scroll_step` option, but is has been replaced by the
471 above.)
472
473 #### `scroll.full_page_adjustment` and `scroll.half_page_adjustment`
474
475 An important use case for scrolling a full page down is to read an entire page
476 (a window-full) of text, press `<space>` and then continue reading the next
477 page. However, if you can only see, say, _half_ of the height the last line,
478 pressing `<space>` would give you the other half, but reading only the top or
479 bottom parts of letters is difficult. Even if the lines happen to line up with
480 the window edge to not be sliced horizontally, it might feel disorienting
481 pressing `<space>`.
482
483 For this reason, both VimFx and Firefox by default scroll _about a line less
484 than a whole page_ when pressing `<space>`. This solves the sliced-last-line
485 problem, and provides some context on where you are in the text you’re reading.
486
487 These two options control how many pixels “about a line” actually means for the
488 different page scrolling commands.
489
490 - `scroll.full_page_adjustment`: `<space>, `<s-space>`
491 - `scroll.half_page_adjustment`: `d`, `u`
492
493 #### `scroll.last_position_mark`
494
495 The special mark for the [`'`][scroll-to-mark] command that takes you to the
496 last position.
497
498 [scroll-to-mark]: commands.md#marks-m-and-
499
500 ### `pattern_selector`
501
502 A CSS selector that targets candidates for a previous/next page link.
503
504 ### `pattern_attrs`
505
506 A space-separated list of attributes that the [“Previous”/“Next” link patterns]
507 should be matched against.
508
509 [“Previous”/“Next” link patterns]: #previousnext-link-patterns
510
511 ### `hints.matched_timeout`
512
513 The number of milliseconds a matched hint marker should stay on screen before
514 disappearing (or resetting).
515
516 ### `hints.sleep`
517
518 In Hints mode, VimFx continually checks if the element for a hint marker has
519 moved. If so, the marker is moved as well. This option controls how many
520 milliseconds VimFx should “sleep” between each check. The shorter, the more CPU
521 usage, the longer, the more stuttery marker movement.
522
523 The default value should work fine, but if you have a low-performing computer
524 and you notice bothering CPU usage during Hints mode you might want to raise the
525 sleep time.
526
527 Set it to -1 to disable the marker movement feature entirely.
528
529 ### `hints.match_text`
530
531 If you strongly dislike that typing non-[Hint characters] filters hint markers
532 by element text, disable this option. (That’ll make things work like it did in
533 VimFx 0.18.x and older.)
534
535 [Hint characters]: #hint-characters
536
537 ### `hints.peek_through`
538
539 This option doesn’t do much. If you’ve used custom [styling] to change which
540 modifier lets you peek through markers in [Hints mode], you might want to change
541 this option as well. Otherwise VimFx’s Keyboard Shortcuts dialog will still tell
542 you to press shift for this task.
543
544 [styling]: styling.md
545 [Hints mode]: commands.md#the-hint-commands--hints-mode
546
547 ### `hints.toggle_in_tab`
548
549 If the keypress that matched a hint starts with this string, toggle whether to
550 open the matched link in the current tab or a new tab. See the [hint commands]
551 for more information.
552
553 ### `hints.toggle_in_background`
554
555 If the keypress that matched a hint starts with this string, open the matched
556 link in a new tab and toggle whether to open that tab in the background or
557 foreground. See the [hint commands] for more information.
558
559 ### `activatable_element_keys`
560
561 Keys that should not trigger VimFx commands but be sent through to the page if
562 an “activatable” element (link or button) is focused.
563
564 ### `adjustable_element_keys`
565
566 Keys that should not trigger VimFx commands but be sent through to the page if
567 an “adjustable” element (form control or video player) is focused.
568
569 ### `focus_previous_key` and `focus_next_key`
570
571 The default values are `<s-tab` and `<tab>`, respectively. Those keys are
572 specially handled after focusing a text input using [`gi`]. To disable this
573 special handling, set the options to the empty string.
574
575 [`gi`]: commands.md#gi-1
576
577
578 ## Special options
579
580 These options are available in neither VimFx’s options page in the Add-ons
581 Manager nor in [about:config]. The only way to change them is by using the
582 a [config file].
583
584 ### `translations`
585
586 This option is only useful if you use the [Ignore keyboard layout] option. As
587 mentioned in the documentation for that option, `translations` exist to let you:
588
589 - Teach VimFx about layout customizations you’ve made, that otherwise get
590 ignored.
591 - Make VimFx pretend that some other keyboard layout than the standard en-US
592 QWERTY is always used.
593
594 Here’s some example usage:
595
596 ```js
597 vimfx.set('translations', {
598 // Swapped <capslock> and <escape>.
599 'CapsLock': 'Escape',
600 'Escape': 'CapsLock',
601
602 // AZERTY mappings.
603 'KeyQ': ['a', 'A'],
604 'KeyA': ['q', 'Q'],
605 // etc.
606
607 // Bonus: Distinguish between regular numbers and numpad numbers by
608 // translating the numpad numbers into made-up names (regardless of numlock
609 // state). Then, you can use `<k0>` to `<k9>` in shortcuts.
610 'Numpad0': 'K0',
611 'Numpad1': 'K1',
612 'Numpad2': 'K2',
613 'Numpad3': 'K3',
614 'Numpad4': 'K4',
615 'Numpad5': 'K5',
616 'Numpad6': 'K6',
617 'Numpad7': 'K7',
618 'Numpad8': 'K8',
619 'Numpad9': 'K9',
620 })
621 ```
622
623 More formally, `translations` is an object where:
624
625 - The object keys are [`event.code`] strings that should be translated.
626
627 - The object values are either strings or arrays of two strings.
628
629 If an array is provided, the first value of it is used when shift is _not_
630 held, and the other value when shift _is_ held.
631
632 If only one string is provided, that value is always used (regardless of the
633 shift state).
634
635 The strings are what you want VimFx to treat the pressed key as. For example,
636 providing `Escape` will cause the translated key to match VimFx shortcuts
637 containing `<Escape>` (or `<escape>`—the case doesn’t matter).
638
639 At this point, you might be wondering why these options to ignore your keyboard
640 layout and translate keys have to exist. It’s all about the data that is
641 available in Firefox (basically [`event.key`] and [`event.code`]). There is a
642 longer technical explanation in [vim-like-key-notation], the library VimFx uses
643 for dealing with keyboard stuff.
644
645 [Ignore keyboard layout]: #ignore-keyboard-layout
646 [`event.code`]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code
647 [`event.key`]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key
648 [vim-like-key-notation]: https://github.com/lydell/vim-like-key-notation#technical-notes
649
650 ### `categories`
651
652 See the documentation for [`vimfx.get('categories')`][categories].
653
654 [categories]: api.md#vimfxgetcategories
Imprint / Impressum