]> git.gir.st - VimFx.git/blob - documentation/options.md
Improve Hints mode in various ways
[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 marker<strong>s</strong> in the case where several links go to
238 the same place and have gotten the same hint) with the best hint are highlighted
239 with a diagonal white stripe. You may at any time press `<enter>` to activate
240 those markers.
241
242 One workflow is to type non-hint characters until the hint marker of the element
243 you want to activate gets highlighted, and then hit `<enter>`. To make this more
244 obvious, the entire element text is selected, too. However, if _all_ hint
245 markers end up highlighted (because the text you’ve typed uniquely identifies a
246 single link) the highlighted markers will be activated _automatically._
247
248 If you dislike that, disable this option. Then, you either have to press
249 `<enter>` or a hint character to activate hint markers.
250
251 ### Auto-activation timeout
252
253 `hints.timeout`
254
255 If you type quickly, you might find that you will keep typing even after a hint
256 marker has been automatically activated (see [Hint auto-activation]). You might
257 simply not react that quickly. This might cause you to accidentally trigger
258 VimFx commands. Therefore, VimFx ignores all your keypresses for a certain
259 number of milliseconds when having automatically activated a hint marker after
260 filtering by element text. This option controls exactly how many milliseconds
261 that is.
262
263 If you can’t find a timeout that works for you, you might want to disable [Hint
264 auto-activation] instead.
265
266 [Hint auto-activation]: #hint-auto-activation
267
268 ### Timeout
269
270 `timeout`
271
272 The maximum amount of time (in milliseconds) that may pass between two
273 keypresses of a shortcut.
274
275 It’s easy to press, say, `a` by mistake while browsing. Without a timeout, you
276 might be surprised that all search results are highlighted when you a bit later
277 try to search using the `/` command. (That’s what `a/` does.) _With_ a timeout,
278 the `a` would be cancelled when the timeout has passed.
279
280 ### “Previous”/“Next” link patterns
281
282 `prev_patterns`/`next_patterns`
283
284 Space separated lists of patterns that match links to the previous/next page.
285 Used by the `[` and `]` commands.
286
287 There is a standardized way for websites to tell browsers the URLs to the
288 previous and next page. VimFx looks for that information in the first place.
289 Unfortunately, many websites don’t provide this information. Then VimFx falls
290 back on looking for links on the page that seem to go to the previous/next page
291 using patterns.
292
293 The patterns are matched at the beginning and end of link text (and the
294 attributes defined by the advanced option [`pattern_attrs`]). The patterns do
295 not match in the middle of words, so “previous” does not match “previously”.
296 The matching is case <strong>in</strong>sensitive.
297
298 Actually, the patterns are regular expressions. If you do not know what a
299 regular expression is, that’s fine. You can type simple patterns like the
300 default ones without problems. If you do know what it is, though, you have the
301 possibility to create more advanced patterns if needed.
302
303 Some of the default patterns are English words. You might want to add
304 alternatives in your own language.
305
306 Note: If you need to include a space in your pattern, use `\s`. For example:
307 `next\spage`.
308
309 [`pattern_attrs`]: #pattern_attrs
310
311
312 ## Advanced options
313
314 These options are _not_ available in VimFx’s options page in the Add-ons
315 Manager. They can only be changed in [about:config] or using a [config file].
316 They all start with `extensions.VimFx.`.
317
318 (There are actually a few more advanced options than those listed here. You can
319 see them all in [defaults.coffee].)
320
321 [about:config]: http://kb.mozillazine.org/About:config
322 [config file]: config-file.md
323 [defaults.coffee]: ../extension/lib/defaults.coffee
324
325 ### `notifications_enabled`
326
327 Controls whether [notifications] should be shown or not.
328
329 You can also choose to show notifications any way you want by listening for the
330 [the `notification` and `hideNotification` events][notification-events].
331
332 [notifications]: notifications.md
333 [notification-events]: api.md#the-notification-and-hidenotification-events
334
335 ### `notify_entered_keys`
336
337 If enabled, a [notification] is shown with the keys you have entered so far of
338 a command. This is only noticeable if you type a multi-key shortcut or use a
339 count, or if you filter hint markers by element text (then, the text you’ve
340 typed will be shown).
341
342 [notification]: notifications.md
343
344 ### `prevent_target_blank`
345
346 You might have noticed that some links open in new tabs when you click them.
347 That is not the case if you “click” them using VimFx’s `f` command, though. If
348 you dislike that, disable this option.
349
350 ### `counts_enabled`
351
352 Controls whether [counts] are enabled or not.
353
354 [counts]: commands.md#counts
355
356 ### `find_from_top_of_viewport`
357
358 Toggles whether the various find commands are Vim-style or Firefox
359 default-style.
360
361 Disable this option if you want `/` to work more like `<c-f>` and `n`/`N` to
362 work more like `<f3>`/`<s-f3>`.
363
364 If there is selected text on the page, Firefox starts searching after that.
365 VimFx does so too, but only if the selection is currently _visible_ (inside the
366 current viewport).
367
368 If there _isn’t_ selected text on the page, Firefox starts searching from the
369 top of the page. VimFx instead starts searching from the top of the current
370 viewport.
371
372 The VimFx behavior is designed to be less disorienting. It is also similar to
373 how searching in Vim works. Again, you can return to the Firefox default
374 behavior (if you prefer that) by disabling this option.
375
376 One of the main benefits of the VimFx behavior is that you can scroll past a
377 block of the text with lots of search matches and then continue going through
378 matches with `n` after that block, without having to spam `n` lots and lots of
379 times.
380
381 ### `ignore_ctrl_alt`
382
383 This option is enabled by default on Windows, and disabled otherwise.
384
385 If enabled, ignores ctrl+alt for printable keys. `<a-c-$>` becomes `$` and
386 `<a-c-A>` becomes `A`, while `<a-c-enter>` stays the same.
387
388 This option is suitable on Windows, which treats [AltGr as
389 ctrl+alt][wikipedia-altgr]. For example, if a user of the sv-SE layout on
390 Windows holds AltGr and presses the key labeled `4`, in order to produce a `$`,
391 the result would be `<a-c-$>` without this option, making it impossible to
392 trigger a keyboard shortcut containing `$`. _With_ this option the result is
393 `$`, as expected (and as on GNU/Linux). On the other hand it won’t be possible
394 to trigger keyboard shortcuts such as `<a-c-a>`, but ctrl+alt keyboard shortcuts
395 are [discouraged on Windows][wikipedia-altgr] anyway because of this reason.
396
397 [wikipedia-altgr]: https://en.wikipedia.org/wiki/AltGr_key#Control_.2B_Alt_as_a_substitute
398
399 ### `prevent_autofocus_modes`
400
401 Space separated list of modes where `prevent_autofocus` should be used.
402
403 ### `config_file_directory`
404
405 VimFx can optionally be customized using a [config file]. If you want to that,
406 you need to tell VimFx where that file is. That’s what this option is for.
407
408 By default this option is blank (the empty string), which means that no config
409 file should be loaded.
410
411 If non-blank, it should be the path to the directory where the config file
412 exists. See the [config file] documentation for more information.
413
414 [config file]: config-file.md
415
416 ### `blur_timeout`
417
418 The number of milliseconds VimFx should wait after an element has been blurred
419 before checking if you’re inside a text input or not.
420
421 Some sites with fancy text inputs (such as twitter) blur the text input for a
422 split second and then re-focus it again while typing (for some reason). If you
423 happen to press a key during that split second, that key might trigger a VimFx
424 shortcut instead of typing into the text input, which can be quite annoying. To
425 avoid the problem, VimFx waits a bit before checking if you have left the text
426 input.
427
428 ### Scrolling options
429
430 Apart from its own options, VimFx also respects a few built-in Firefox options.
431
432 #### Smooth scrolling
433
434 If you want to customize Firefox’s smooth scrolling, adjusting
435 `general.smoothScroll.{lines,pages,other}.duration{Min,Max}MS` is the way to
436 go. VimFx has similar options for the scrolling commands, but they work like
437 `layout.css.scroll-behavior.spring-constant`.
438
439 Basically, the higher the value, the faster the scrolling.
440
441 These are VimFx’s variants, and the commands they affect:
442
443 - `smoothScroll.lines.spring-constant`: `h`, `l`, `j`, `k`
444 - `smoothScroll.pages.spring-constant`: `d`, `u`, `<space>`, `<s-space>`
445 - `smoothScroll.other.spring-constant`: `gg`, `G`, `0`, `^`, `$`, `'`
446
447 Note that the value of these options are _strings,_ not numbers!
448
449 Unfortunately, Firefox provides no way for code to tell which “spring constant”
450 it wants when scrolling smoothly. All VimFx can do is to temporarily set
451 Firefox’s `layout.css.scroll-behavior.spring-constant` option. It is reset again
452 after one second (by default). If that doesn’t work out for you, you can
453 customize that timeout using the `scroll.reset_timeout` option.
454
455 The Firefox option `general.smoothScroll` lets you turn off smooth scrolling
456 entirely, including all of VimFx’s scrolling commands.
457
458 `general.smoothScroll.lines`, `general.smoothScroll.pages`, and
459 `general.smoothScroll.other` lets you selectively disable smooth scrolling.
460 VimFx’s scrolling commands follow the same “lines,” “pages” and “other”
461 categorization as in the above list.
462
463 #### Scroll step
464
465 By default you can scroll using the arrow keys in Firefox. You can control how
466 much they scroll by adjusting the following options:
467
468 - `toolkit.scrollbox.horizontalScrollDistance`: `<left>`, `<right>`, `h`, `l`
469 - `toolkit.scrollbox.verticalScrollDistance`: `<down>`, `<up>`, `j`, `k`
470
471 (VimFx used to have a `scroll_step` option, but is has been replaced by the
472 above.)
473
474 #### `scroll.full_page_adjustment` and `scroll.half_page_adjustment`
475
476 An important use case for scrolling a full page down is to read an entire page
477 (a window-full) of text, press `<space>` and then continue reading the next
478 page. However, if you can only see, say, _half_ of the height the last line,
479 pressing `<space>` would give you the other half, but reading only the top or
480 bottom parts of letters is difficult. Even if the lines happen to line up with
481 the window edge to not be sliced horizontally, it might feel disorienting
482 pressing `<space>`.
483
484 For this reason, both VimFx and Firefox by default scroll _about a line less
485 than a whole page_ when pressing `<space>`. This solves the sliced-last-line
486 problem, and provides some context on where you are in the text you’re reading.
487
488 These two options control how many pixels “about a line” actually means for the
489 different page scrolling commands.
490
491 - `scroll.full_page_adjustment`: `<space>, `<s-space>`
492 - `scroll.half_page_adjustment`: `d`, `u`
493
494 #### `scroll.last_position_mark`
495
496 The special mark for the [`'`][scroll-to-mark] command that takes you to the
497 last position.
498
499 [scroll-to-mark]: commands.md#marks-m-and-
500
501 ### `pattern_selector`
502
503 A CSS selector that targets candidates for a previous/next page link.
504
505 ### `pattern_attrs`
506
507 A space-separated list of attributes that the [“Previous”/“Next” link patterns]
508 should be matched against.
509
510 [“Previous”/“Next” link patterns]: #previousnext-link-patterns
511
512 ### `hints.matched_timeout`
513
514 The number of milliseconds a matched hint marker should stay on screen before
515 disappearing (or resetting).
516
517 ### `hints.sleep`
518
519 In Hints mode, VimFx continually checks if the element for a hint marker has
520 moved. If so, the marker is moved as well. This option controls how many
521 milliseconds VimFx should “sleep” between each check. The shorter, the more CPU
522 usage, the longer, the more stuttery marker movement.
523
524 The default value should work fine, but if you have a low-performing computer
525 and you notice bothering CPU usage during Hints mode you might want to raise the
526 sleep time.
527
528 Set it to -1 to disable the marker movement feature entirely.
529
530 ### `hints.match_text`
531
532 If you strongly dislike that typing non-[Hint characters] filters hint markers
533 by element text, disable this option. (That’ll make things work like it did in
534 VimFx 0.18.x and older.)
535
536 [Hint characters]: #hint-characters
537
538 ### `hints.peek_through`
539
540 This option doesn’t do much. If you’ve used custom [styling] to change which
541 modifier lets you peek through markers in [Hints mode], you might want to change
542 this option as well. Otherwise VimFx’s Keyboard Shortcuts dialog will still tell
543 you to press shift for this task.
544
545 [styling]: styling.md
546 [Hints mode]: commands.md#the-hint-commands--hints-mode
547
548 ### `hints.toggle_in_tab`
549
550 If the keypress that matched a hint starts with this string, toggle whether to
551 open the matched link in the current tab or a new tab. See the [hint commands]
552 for more information.
553
554 ### `hints.toggle_in_background`
555
556 If the keypress that matched a hint starts with this string, open the matched
557 link in a new tab and toggle whether to open that tab in the background or
558 foreground. See the [hint commands] for more information.
559
560 ### `activatable_element_keys`
561
562 Keys that should not trigger VimFx commands but be sent through to the page if
563 an “activatable” element (link or button) is focused.
564
565 ### `adjustable_element_keys`
566
567 Keys that should not trigger VimFx commands but be sent through to the page if
568 an “adjustable” element (form control or video player) is focused.
569
570 ### `focus_previous_key` and `focus_next_key`
571
572 The default values are `<s-tab` and `<tab>`, respectively. Those keys are
573 specially handled after focusing a text input using [`gi`]. To disable this
574 special handling, set the options to the empty string.
575
576 [`gi`]: commands.md#gi-1
577
578
579 ## Special options
580
581 These options are available in neither VimFx’s options page in the Add-ons
582 Manager nor in [about:config]. The only way to change them is by using the
583 a [config file].
584
585 ### `translations`
586
587 This option is only useful if you use the [Ignore keyboard layout] option. As
588 mentioned in the documentation for that option, `translations` exist to let you:
589
590 - Teach VimFx about layout customizations you’ve made, that otherwise get
591 ignored.
592 - Make VimFx pretend that some other keyboard layout than the standard en-US
593 QWERTY is always used.
594
595 Here’s some example usage:
596
597 ```js
598 vimfx.set('translations', {
599 // Swapped <capslock> and <escape>.
600 'CapsLock': 'Escape',
601 'Escape': 'CapsLock',
602
603 // AZERTY mappings.
604 'KeyQ': ['a', 'A'],
605 'KeyA': ['q', 'Q'],
606 // etc.
607
608 // Bonus: Distinguish between regular numbers and numpad numbers by
609 // translating the numpad numbers into made-up names (regardless of numlock
610 // state). Then, you can use `<k0>` to `<k9>` in shortcuts.
611 'Numpad0': 'K0',
612 'Numpad1': 'K1',
613 'Numpad2': 'K2',
614 'Numpad3': 'K3',
615 'Numpad4': 'K4',
616 'Numpad5': 'K5',
617 'Numpad6': 'K6',
618 'Numpad7': 'K7',
619 'Numpad8': 'K8',
620 'Numpad9': 'K9',
621 })
622 ```
623
624 More formally, `translations` is an object where:
625
626 - The object keys are [`event.code`] strings that should be translated.
627
628 - The object values are either strings or arrays of two strings.
629
630 If an array is provided, the first value of it is used when shift is _not_
631 held, and the other value when shift _is_ held.
632
633 If only one string is provided, that value is always used (regardless of the
634 shift state).
635
636 The strings are what you want VimFx to treat the pressed key as. For example,
637 providing `Escape` will cause the translated key to match VimFx shortcuts
638 containing `<Escape>` (or `<escape>`—the case doesn’t matter).
639
640 At this point, you might be wondering why these options to ignore your keyboard
641 layout and translate keys have to exist. It’s all about the data that is
642 available in Firefox (basically [`event.key`] and [`event.code`]). There is a
643 longer technical explanation in [vim-like-key-notation], the library VimFx uses
644 for dealing with keyboard stuff.
645
646 [Ignore keyboard layout]: #ignore-keyboard-layout
647 [`event.code`]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code
648 [`event.key`]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key
649 [vim-like-key-notation]: https://github.com/lydell/vim-like-key-notation#technical-notes
650
651 ### `categories`
652
653 See the documentation for [`vimfx.get('categories')`][categories].
654
655 [categories]: api.md#vimfxgetcategories
Imprint / Impressum