aboutsummaryrefslogtreecommitdiff
path: root/ext/data/schemas/options-schema.json
blob: d15b533b8a1cea2e83335bfe513977c39787917f (plain)
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
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "required": [
        "version",
        "profiles",
        "profileCurrent",
        "global"
    ],
    "properties": {
        "version": {
            "type": "integer",
            "minimum": 0,
            "default": 0
        },
        "profiles": {
            "type": "array",
            "minItems": 1,
            "items": {
                "type": "object",
                "required": [
                    "name",
                    "conditionGroups",
                    "options"
                ],
                "properties": {
                    "name": {
                        "type": "string",
                        "default": "Default"
                    },
                    "conditionGroups": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "required": [
                                "conditions"
                            ],
                            "properties": {
                                "conditions": {
                                    "type": "array",
                                    "items": {
                                        "type": "object",
                                        "required": [
                                            "type",
                                            "operator",
                                            "value"
                                        ],
                                        "properties": {
                                            "type": {
                                                "type": "string"
                                            },
                                            "operator": {
                                                "type": "string"
                                            },
                                            "value": {}
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "options": {
                        "type": "object",
                        "required": [
                            "general",
                            "popupWindow",
                            "audio",
                            "scanning",
                            "translation",
                            "dictionaries",
                            "parsing",
                            "anki",
                            "sentenceParsing",
                            "inputs",
                            "clipboard",
                            "accessibility"
                        ],
                        "properties": {
                            "general": {
                                "type": "object",
                                "required": [
                                    "enable",
                                    "resultOutputMode",
                                    "debugInfo",
                                    "maxResults",
                                    "showAdvanced",
                                    "popupDisplayMode",
                                    "popupWidth",
                                    "popupHeight",
                                    "popupHorizontalOffset",
                                    "popupVerticalOffset",
                                    "popupHorizontalOffset2",
                                    "popupVerticalOffset2",
                                    "popupHorizontalTextPosition",
                                    "popupVerticalTextPosition",
                                    "popupScalingFactor",
                                    "popupScaleRelativeToPageZoom",
                                    "popupScaleRelativeToVisualViewport",
                                    "showGuide",
                                    "compactTags",
                                    "glossaryLayoutMode",
                                    "mainDictionary",
                                    "popupTheme",
                                    "popupOuterTheme",
                                    "customPopupCss",
                                    "customPopupOuterCss",
                                    "enableWanakana",
                                    "showPitchAccentDownstepNotation",
                                    "showPitchAccentPositionNotation",
                                    "showPitchAccentGraph",
                                    "showIframePopupsInRootFrame",
                                    "useSecurePopupFrameUrl",
                                    "usePopupShadowDom",
                                    "usePopupWindow",
                                    "popupCurrentIndicatorMode",
                                    "popupActionBarVisibility",
                                    "popupActionBarLocation",
                                    "frequencyDisplayMode",
                                    "termDisplayMode",
                                    "sortFrequencyDictionary",
                                    "sortFrequencyDictionaryOrder"
                                ],
                                "properties": {
                                    "enable": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "resultOutputMode": {
                                        "type": "string",
                                        "enum": ["group", "merge", "split"],
                                        "default": "group"
                                    },
                                    "debugInfo": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "maxResults": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "default": 32
                                    },
                                    "showAdvanced": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "popupDisplayMode": {
                                        "type": "string",
                                        "enum": ["default", "full-width"],
                                        "default": "default"
                                    },
                                    "popupWidth": {
                                        "type": "number",
                                        "minimum": 0,
                                        "default": 400
                                    },
                                    "popupHeight": {
                                        "type": "number",
                                        "minimum": 0,
                                        "default": 250
                                    },
                                    "popupHorizontalOffset": {
                                        "type": "number",
                                        "default": 0
                                    },
                                    "popupVerticalOffset": {
                                        "type": "number",
                                        "default": 10
                                    },
                                    "popupHorizontalOffset2": {
                                        "type": "number",
                                        "default": 10
                                    },
                                    "popupVerticalOffset2": {
                                        "type": "number",
                                        "default": 0
                                    },
                                    "popupHorizontalTextPosition": {
                                        "type": "string",
                                        "enum": ["below", "above"],
                                        "default": "below"
                                    },
                                    "popupVerticalTextPosition": {
                                        "type": "string",
                                        "enum": ["default", "before", "after", "left", "right"],
                                        "default": "before"
                                    },
                                    "popupScalingFactor": {
                                        "type": "number",
                                        "default": 1
                                    },
                                    "popupScaleRelativeToPageZoom": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "popupScaleRelativeToVisualViewport": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "showGuide": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "compactTags": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "glossaryLayoutMode": {
                                        "type": "string",
                                        "enum": ["default", "compact"],
                                        "default": "default"
                                    },
                                    "mainDictionary": {
                                        "type": "string"
                                    },
                                    "popupTheme": {
                                        "type": "string",
                                        "enum": ["default", "dark"],
                                        "default": "default"
                                    },
                                    "popupOuterTheme": {
                                        "type": "string",
                                        "enum": ["default", "dark", "auto"],
                                        "default": "default"
                                    },
                                    "customPopupCss": {
                                        "type": "string",
                                        "default": ""
                                    },
                                    "customPopupOuterCss": {
                                        "type": "string",
                                        "default": ""
                                    },
                                    "enableWanakana": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "showPitchAccentDownstepNotation": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "showPitchAccentPositionNotation": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "showPitchAccentGraph": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "showIframePopupsInRootFrame": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "useSecurePopupFrameUrl": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "usePopupShadowDom": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "usePopupWindow": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "popupCurrentIndicatorMode": {
                                        "type": "string",
                                        "enum": ["none", "asterisk", "triangle", "bar-left", "bar-right", "dot-left", "dot-right"],
                                        "default": "triangle"
                                    },
                                    "popupActionBarVisibility": {
                                        "type": "string",
                                        "enum": ["auto", "always"],
                                        "default": "auto"
                                    },
                                    "popupActionBarLocation": {
                                        "type": "string",
                                        "enum": ["left", "right", "top", "bottom"],
                                        "default": "top"
                                    },
                                    "frequencyDisplayMode": {
                                        "type": "string",
                                        "enum": ["tags", "tags-grouped", "split-tags", "split-tags-grouped", "inline-list", "list"],
                                        "default": "split-tags-grouped"
                                    },
                                    "termDisplayMode": {
                                        "type": "string",
                                        "enum": ["ruby", "ruby-and-reading", "term-and-reading"],
                                        "default": "ruby"
                                    },
                                    "sortFrequencyDictionary": {
                                        "type": ["string", "null"],
                                        "default": null
                                    },
                                    "sortFrequencyDictionaryOrder": {
                                        "type": "string",
                                        "enum": ["ascending", "descending"],
                                        "default": "descending"
                                    }
                                }
                            },
                            "popupWindow": {
                                "type": "object",
                                "required": [
                                    "width",
                                    "height",
                                    "left",
                                    "top",
                                    "useLeft",
                                    "useTop",
                                    "windowType",
                                    "windowState"
                                ],
                                "properties": {
                                    "width": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "default": 400
                                    },
                                    "height": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "default": 250
                                    },
                                    "left": {
                                        "type": "integer",
                                        "default": 0
                                    },
                                    "top": {
                                        "type": "integer",
                                        "default": 0
                                    },
                                    "useLeft": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "useTop": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "windowType": {
                                        "type": "string",
                                        "enum": ["normal", "popup"],
                                        "default": "popup"
                                    },
                                    "windowState": {
                                        "type": "string",
                                        "enum": ["normal", "maximized", "fullscreen"],
                                        "default": "normal"
                                    }
                                }
                            },
                            "audio": {
                                "type": "object",
                                "required": [
                                    "enabled",
                                    "volume",
                                    "autoPlay",
                                    "sources"
                                ],
                                "properties": {
                                    "enabled": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "volume": {
                                        "type": "number",
                                        "minimum": 0,
                                        "maximum": 100,
                                        "default": 100
                                    },
                                    "autoPlay": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "sources": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "additionalProperties": false,
                                            "required": [
                                                "type",
                                                "url",
                                                "voice"
                                            ],
                                            "properties": {
                                                "type": {
                                                    "type": "string",
                                                    "enum": [
                                                        "jpod101",
                                                        "jpod101-alternate",
                                                        "jisho",
                                                        "text-to-speech",
                                                        "text-to-speech-reading",
                                                        "custom",
                                                        "custom-json"
                                                    ],
                                                    "default": "jpod101"
                                                },
                                                "url": {
                                                    "type": "string",
                                                    "default": ""
                                                },
                                                "voice": {
                                                    "type": "string",
                                                    "default": ""
                                                }
                                            }
                                        },
                                        "default": [
                                            {
                                                "type": "jpod101",
                                                "url": "",
                                                "voice": ""
                                            }
                                        ]
                                    }
                                }
                            },
                            "scanning": {
                                "type": "object",
                                "required": [
                                    "inputs",
                                    "preventMiddleMouse",
                                    "touchInputEnabled",
                                    "pointerEventsEnabled",
                                    "selectText",
                                    "alphanumeric",
                                    "autoHideResults",
                                    "delay",
                                    "hideDelay",
                                    "length",
                                    "deepDomScan",
                                    "popupNestingMaxDepth",
                                    "enablePopupSearch",
                                    "enableOnPopupExpressions",
                                    "enableOnSearchPage",
                                    "enableSearchTags",
                                    "layoutAwareScan",
                                    "matchTypePrefix"
                                ],
                                "properties": {
                                    "inputs": {
                                        "type": "array",
                                        "default": [
                                            {
                                                "include": "shift",
                                                "exclude": "mouse0",
                                                "types": {
                                                    "mouse": true,
                                                    "touch": false,
                                                    "pen": false
                                                },
                                                "options": {
                                                    "showAdvanced": false,
                                                    "searchTerms": true,
                                                    "searchKanji": true,
                                                    "scanOnTouchMove": true,
                                                    "scanOnPenHover": true,
                                                    "scanOnPenPress": true,
                                                    "scanOnPenRelease": false,
                                                    "preventTouchScrolling": false
                                                }
                                            },
                                            {
                                                "include": "",
                                                "exclude": "",
                                                "types": {
                                                    "mouse": false,
                                                    "touch": true,
                                                    "pen": true
                                                },
                                                "options": {
                                                    "showAdvanced": false,
                                                    "searchTerms": true,
                                                    "searchKanji": true,
                                                    "scanOnTouchMove": true,
                                                    "scanOnPenHover": true,
                                                    "scanOnPenPress": true,
                                                    "scanOnPenRelease": false,
                                                    "preventTouchScrolling": true
                                                }
                                            }
                                        ],
                                        "items": {
                                            "required": [
                                                "include",
                                                "exclude",
                                                "types",
                                                "options"
                                            ],
                                            "properties": {
                                                "include": {
                                                    "type": "string",
                                                    "default": "shift"
                                                },
                                                "exclude": {
                                                    "type": "string",
                                                    "default": ""
                                                },
                                                "types": {
                                                    "type": "object",
                                                    "required": [
                                                        "mouse",
                                                        "touch",
                                                        "pen"
                                                    ],
                                                    "properties": {
                                                        "mouse": {
                                                            "type": "boolean",
                                                            "default": true
                                                        },
                                                        "touch": {
                                                            "type": "boolean",
                                                            "default": true
                                                        },
                                                        "pen": {
                                                            "type": "boolean",
                                                            "default": true
                                                        }
                                                    }
                                                },
                                                "options": {
                                                    "type": "object",
                                                    "required": [
                                                        "showAdvanced",
                                                        "searchTerms",
                                                        "searchKanji",
                                                        "scanOnTouchMove",
                                                        "scanOnPenHover",
                                                        "scanOnPenPress",
                                                        "scanOnPenRelease",
                                                        "preventTouchScrolling"
                                                    ],
                                                    "properties": {
                                                        "showAdvanced": {
                                                            "type": "boolean",
                                                            "default": false
                                                        },
                                                        "searchTerms": {
                                                            "type": "boolean",
                                                            "default": true
                                                        },
                                                        "searchKanji": {
                                                            "type": "boolean",
                                                            "default": true
                                                        },
                                                        "scanOnTouchMove": {
                                                            "type": "boolean",
                                                            "default": true
                                                        },
                                                        "scanOnPenHover": {
                                                            "type": "boolean",
                                                            "default": true
                                                        },
                                                        "scanOnPenPress": {
                                                            "type": "boolean",
                                                            "default": true
                                                        },
                                                        "scanOnPenRelease": {
                                                            "type": "boolean",
                                                            "default": false
                                                        },
                                                        "preventTouchScrolling": {
                                                            "type": "boolean",
                                                            "default": true
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    },
                                    "preventMiddleMouse": {
                                        "type": "object",
                                        "required": [
                                            "onWebPages",
                                            "onPopupPages",
                                            "onSearchPages",
                                            "onSearchQuery"
                                        ],
                                        "properties": {
                                            "onWebPages": {
                                                "type": "boolean",
                                                "default": false
                                            },
                                            "onPopupPages": {
                                                "type": "boolean",
                                                "default": false
                                            },
                                            "onSearchPages": {
                                                "type": "boolean",
                                                "default": false
                                            },
                                            "onSearchQuery": {
                                                "type": "boolean",
                                                "default": false
                                            }
                                        }
                                    },
                                    "touchInputEnabled": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "pointerEventsEnabled": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "selectText": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "alphanumeric": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "autoHideResults": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "delay": {
                                        "type": "number",
                                        "minimum": 0,
                                        "default": 20
                                    },
                                    "hideDelay": {
                                        "type": "number",
                                        "minimum": 0,
                                        "default": 0
                                    },
                                    "length": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "default": 16
                                    },
                                    "deepDomScan": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "popupNestingMaxDepth": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "default": 0
                                    },
                                    "enablePopupSearch": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "enableOnPopupExpressions": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "enableOnSearchPage": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "enableSearchTags": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "layoutAwareScan": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "matchTypePrefix": {
                                        "type": "boolean",
                                        "default": false
                                    }
                                }
                            },
                            "translation": {
                                "type": "object",
                                "required": [
                                    "convertHalfWidthCharacters",
                                    "convertNumericCharacters",
                                    "convertAlphabeticCharacters",
                                    "convertHiraganaToKatakana",
                                    "convertKatakanaToHiragana",
                                    "collapseEmphaticSequences",
                                    "textReplacements"
                                ],
                                "properties": {
                                    "convertHalfWidthCharacters": {
                                        "type": "string",
                                        "enum": ["false", "true", "variant"],
                                        "default": "false"
                                    },
                                    "convertNumericCharacters": {
                                        "type": "string",
                                        "enum": ["false", "true", "variant"],
                                        "default": "false"
                                    },
                                    "convertAlphabeticCharacters": {
                                        "type": "string",
                                        "enum": ["false", "true", "variant"],
                                        "default": "false"
                                    },
                                    "convertHiraganaToKatakana": {
                                        "type": "string",
                                        "enum": ["false", "true", "variant"],
                                        "default": "false"
                                    },
                                    "convertKatakanaToHiragana": {
                                        "type": "string",
                                        "enum": ["false", "true", "variant"],
                                        "default": "variant"
                                    },
                                    "collapseEmphaticSequences": {
                                        "type": "string",
                                        "enum": ["false", "true", "full"],
                                        "default": "false"
                                    },
                                    "textReplacements": {
                                        "type": "object",
                                        "required": [
                                            "searchOriginal",
                                            "groups"
                                        ],
                                        "properties": {
                                            "searchOriginal": {
                                                "type": "boolean",
                                                "default": true
                                            },
                                            "groups": {
                                                "type": "array",
                                                "items": {
                                                    "type": "array",
                                                    "items": {
                                                        "required": [
                                                            "pattern",
                                                            "ignoreCase",
                                                            "replacement"
                                                        ],
                                                        "properties": {
                                                            "pattern": {
                                                                "type": "string",
                                                                "default": ""
                                                            },
                                                            "ignoreCase": {
                                                                "type": "boolean",
                                                                "default": false
                                                            },
                                                            "replacement": {
                                                                "type": "string",
                                                                "default": ""
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "dictionaries": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "required": [
                                        "name",
                                        "priority",
                                        "enabled",
                                        "allowSecondarySearches",
                                        "definitionsCollapsible"
                                    ],
                                    "properties": {
                                        "name": {
                                            "type": "string",
                                            "default": ""
                                        },
                                        "priority": {
                                            "type": "number",
                                            "default": 0
                                        },
                                        "enabled": {
                                            "type": "boolean",
                                            "default": true
                                        },
                                        "allowSecondarySearches": {
                                            "type": "boolean",
                                            "default": false
                                        },
                                        "definitionsCollapsible": {
                                            "type": "string",
                                            "enum": ["not-collapsible", "expanded", "collapsed"],
                                            "default": "not-collapsible"
                                        }
                                    }
                                }
                            },
                            "parsing": {
                                "type": "object",
                                "required": [
                                    "enableScanningParser",
                                    "enableMecabParser",
                                    "selectedParser",
                                    "termSpacing",
                                    "readingMode"
                                ],
                                "properties": {
                                    "enableScanningParser": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "enableMecabParser": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "selectedParser": {
                                        "type": ["string", "null"],
                                        "default": null
                                    },
                                    "termSpacing": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "readingMode": {
                                        "type": "string",
                                        "enum": ["hiragana", "katakana", "romaji", "dictionary-reading", "none"],
                                        "default": "hiragana"
                                    }
                                }
                            },
                            "anki": {
                                "type": "object",
                                "required": [
                                    "enable",
                                    "server",
                                    "tags",
                                    "screenshot",
                                    "terms",
                                    "kanji",
                                    "duplicateScope",
                                    "duplicateScopeCheckAllModels",
                                    "checkForDuplicates",
                                    "fieldTemplates",
                                    "suspendNewCards",
                                    "displayTags"
                                ],
                                "properties": {
                                    "enable": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "server": {
                                        "type": "string",
                                        "default": "http://127.0.0.1:8765"
                                    },
                                    "tags": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "default": [
                                            "yomichan"
                                        ]
                                    },
                                    "screenshot": {
                                        "type": "object",
                                        "required": [
                                            "format",
                                            "quality"
                                        ],
                                        "properties": {
                                            "format": {
                                                "type": "string",
                                                "enum": ["png", "jpeg"],
                                                "default": "png"
                                            },
                                            "quality": {
                                                "type": "integer",
                                                "minimum": 0,
                                                "maximum": 100,
                                                "default": 92
                                            }
                                        }
                                    },
                                    "terms": {
                                        "type": "object",
                                        "required": [
                                            "deck",
                                            "model",
                                            "fields"
                                        ],
                                        "properties": {
                                            "deck": {
                                                "type": "string",
                                                "default": ""
                                            },
                                            "model": {
                                                "type": "string",
                                                "default": ""
                                            },
                                            "fields": {
                                                "type": "object",
                                                "additionalProperties": {
                                                    "type": "string",
                                                    "default": ""
                                                }
                                            }
                                        }
                                    },
                                    "kanji": {
                                        "type": "object",
                                        "required": [
                                            "deck",
                                            "model",
                                            "fields"
                                        ],
                                        "properties": {
                                            "deck": {
                                                "type": "string",
                                                "default": ""
                                            },
                                            "model": {
                                                "type": "string",
                                                "default": ""
                                            },
                                            "fields": {
                                                "type": "object",
                                                "additionalProperties": {
                                                    "type": "string",
                                                    "default": ""
                                                }
                                            }
                                        }
                                    },
                                    "duplicateScope": {
                                        "type": "string",
                                        "default": "collection",
                                        "enum": ["collection", "deck", "deck-root"]
                                    },
                                    "duplicateScopeCheckAllModels": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "checkForDuplicates": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "fieldTemplates": {
                                        "type": ["string", "null"],
                                        "default": null
                                    },
                                    "suspendNewCards": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "displayTags": {
                                        "type": "string",
                                        "enum": ["never", "always", "non-standard"],
                                        "default": "never"
                                    }
                                }
                            },
                            "sentenceParsing": {
                                "type": "object",
                                "required": [
                                    "scanExtent",
                                    "terminationCharacterMode",
                                    "terminationCharacters"
                                ],
                                "properties": {
                                    "scanExtent": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "default": 200
                                    },
                                    "terminationCharacterMode": {
                                        "type": "string",
                                        "enum": ["custom", "custom-no-newlines", "newlines", "none"],
                                        "default": "custom"
                                    },
                                    "terminationCharacters": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "required": [
                                                "enabled",
                                                "character1",
                                                "character2",
                                                "includeCharacterAtStart",
                                                "includeCharacterAtEnd"
                                            ],
                                            "properties": {
                                                "enabled": {
                                                    "type": "boolean",
                                                    "default": true
                                                },
                                                "character1": {
                                                    "type": "string",
                                                    "default": "\"",
                                                    "minLength": 1,
                                                    "maxLength": 1
                                                },
                                                "character2": {
                                                    "type": ["string", "null"],
                                                    "default": "\"",
                                                    "minLength": 1,
                                                    "maxLength": 1
                                                },
                                                "includeCharacterAtStart": {
                                                    "type": "boolean",
                                                    "default": false
                                                },
                                                "includeCharacterAtEnd": {
                                                    "type": "boolean",
                                                    "default": false
                                                }
                                            }
                                        },
                                        "default": [
                                            {"enabled": true, "character1": "「", "character2": "」", "includeCharacterAtStart": false, "includeCharacterAtEnd": false},
                                            {"enabled": true, "character1": "『", "character2": "』", "includeCharacterAtStart": false, "includeCharacterAtEnd": false},
                                            {"enabled": true, "character1": "\"", "character2": "\"", "includeCharacterAtStart": false, "includeCharacterAtEnd": false},
                                            {"enabled": true, "character1": "'", "character2": "'", "includeCharacterAtStart": false, "includeCharacterAtEnd": false},
                                            {"enabled": true, "character1": ".", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
                                            {"enabled": true, "character1": "!", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
                                            {"enabled": true, "character1": "?", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
                                            {"enabled": true, "character1": ".", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
                                            {"enabled": true, "character1": "。", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
                                            {"enabled": true, "character1": "!", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
                                            {"enabled": true, "character1": "?", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
                                            {"enabled": true, "character1": "…", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}
                                        ]
                                    }
                                }
                            },
                            "inputs": {
                                "type": "object",
                                "required": [
                                    "hotkeys"
                                ],
                                "properties": {
                                    "hotkeys": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "required": [
                                                "action",
                                                "argument",
                                                "key",
                                                "modifiers",
                                                "scopes",
                                                "enabled"
                                            ],
                                            "properties": {
                                                "action": {
                                                    "type": "string",
                                                    "default": ""
                                                },
                                                "argument": {
                                                    "type": "string",
                                                    "default": ""
                                                },
                                                "key": {
                                                    "type": ["string", "null"],
                                                    "default": null
                                                },
                                                "modifiers": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string",
                                                        "enum": ["alt", "ctrl", "shift", "meta"],
                                                        "default": "alt"
                                                    }
                                                },
                                                "scopes": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string",
                                                        "enum": ["popup", "search", "web"],
                                                        "default": "popup"
                                                    },
                                                    "default": ["popup", "search"]
                                                },
                                                "enabled": {
                                                    "type": "boolean",
                                                    "default": true
                                                }
                                            }
                                        },
                                        "default": [
                                            {"action": "close",             "argument": "",  "key": "Escape",    "modifiers": [],       "scopes": ["popup"], "enabled": true},
                                            {"action": "focusSearchBox",    "argument": "",  "key": "Escape",    "modifiers": [],       "scopes": ["search"], "enabled": true},
                                            {"action": "previousEntry",     "argument": "3", "key": "PageUp",    "modifiers": ["alt"],  "scopes": ["popup", "search"], "enabled": true},
                                            {"action": "nextEntry",         "argument": "3", "key": "PageDown",  "modifiers": ["alt"],  "scopes": ["popup", "search"], "enabled": true},
                                            {"action": "lastEntry",         "argument": "",  "key": "End",       "modifiers": ["alt"],  "scopes": ["popup", "search"], "enabled": true},
                                            {"action": "firstEntry",        "argument": "",  "key": "Home",      "modifiers": ["alt"],  "scopes": ["popup", "search"], "enabled": true},
                                            {"action": "previousEntry",     "argument": "1", "key": "ArrowUp",   "modifiers": ["alt"],  "scopes": ["popup", "search"], "enabled": true},
                                            {"action": "nextEntry",         "argument": "1", "key": "ArrowDown", "modifiers": ["alt"],  "scopes": ["popup", "search"], "enabled": true},
                                            {"action": "historyBackward",   "argument": "",  "key": "KeyB",      "modifiers": ["alt"],  "scopes": ["popup", "search"], "enabled": true},
                                            {"action": "historyForward",    "argument": "",  "key": "KeyF",      "modifiers": ["alt"],  "scopes": ["popup", "search"], "enabled": true},
                                            {"action": "addNoteKanji",      "argument": "",  "key": "KeyK",      "modifiers": ["alt"],  "scopes": ["popup", "search"], "enabled": true},
                                            {"action": "addNoteTermKanji",  "argument": "",  "key": "KeyE",      "modifiers": ["alt"],  "scopes": ["popup", "search"], "enabled": true},
                                            {"action": "addNoteTermKana",   "argument": "",  "key": "KeyR",      "modifiers": ["alt"],  "scopes": ["popup", "search"], "enabled": true},
                                            {"action": "playAudio",         "argument": "",  "key": "KeyP",      "modifiers": ["alt"],  "scopes": ["popup", "search"], "enabled": true},
                                            {"action": "viewNote",          "argument": "",  "key": "KeyV",      "modifiers": ["alt"],  "scopes": ["popup", "search"], "enabled": true},
                                            {"action": "copyHostSelection", "argument": "",  "key": "KeyC",      "modifiers": ["ctrl"], "scopes": ["popup"], "enabled": true}
                                        ]
                                    }
                                }
                            },
                            "clipboard": {
                                "type": "object",
                                "required": [
                                    "enableBackgroundMonitor",
                                    "enableSearchPageMonitor",
                                    "autoSearchContent",
                                    "maximumSearchLength"
                                ],
                                "properties": {
                                    "enableBackgroundMonitor": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "enableSearchPageMonitor": {
                                        "type": "boolean",
                                        "default": false
                                    },
                                    "autoSearchContent": {
                                        "type": "boolean",
                                        "default": true
                                    },
                                    "maximumSearchLength": {
                                        "type": "integer",
                                        "default": 1000,
                                        "minimum": 0
                                    }
                                }
                            },
                            "accessibility": {
                                "type": "object",
                                "required": [
                                    "forceGoogleDocsHtmlRendering"
                                ],
                                "properties": {
                                    "forceGoogleDocsHtmlRendering": {
                                        "type": "boolean",
                                        "default": false
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "profileCurrent": {
            "type": "integer",
            "minimum": 0,
            "default": 0
        },
        "global": {
            "type": "object",
            "required": [
                "database"
            ],
            "properties": {
                "database": {
                    "type": "object",
                    "required": [
                        "prefixWildcardsSupported"
                    ],
                    "properties": {
                        "prefixWildcardsSupported": {
                            "type": "boolean",
                            "default": false
                        }
                    }
                }
            }
        }
    }
}