Skip to content
Snippets Groups Projects
keyboard-layout.config.ts 26.6 KiB
Newer Older
import { VirtualKeyboardLayout } from '@iqb/mathlive';

export const IQB_MATH_KEYBOARD_LAYOUTS: Record<string, VirtualKeyboardLayout> = {
  iqbNumeric: {
    label: '123',
    labelClass: 'MLK__tex-math',
    tooltip: 'keyboard.tooltip.numeric',
    rows: [
      [
        {
          label: '<',
          latex: '<',
          class: 'hide-shift',
          shift: { latex: '\\le', label: '' }
        },
        {
          label: '>',
          latex: '>',
          class: 'hide-shift',
          shift: { latex: '\\ge', label: '' }
        },
        '[separator-5]',
        '[7]',
        '[8]',
        '[9]',
        {
          label: '[/]',
          latex: '\\colon'
        },
        '[separator-5]',
        // {
        //   latex: '\\exponentialE',
        //   shift: '\\ln',
        //   variants: ['\\exp', '\\times 10^{#?}', '\\ln', '\\log_{10}', '\\log']
        // },
        // {
        //   latex: '\\imaginaryI',
        //   variants: ['\\Re', '\\Im', '\\imaginaryJ', '\\Vert #0 \\Vert']
        // },
        {
          latex: '#@^#?'
        },
        {
          latex: '\\pi',
          // shift: '\\sin',
          // variants: [
          //   '\\prod',
          //   { latex: '\\theta', aside: 'theta' },
          //   { latex: '\\rho', aside: 'rho' },
          //   { latex: '\\tau', aside: 'tau' },
          //   '\\sin',
          //   '\\cos',
          //   '\\tan'
          // ]
        }
      ],
      [
        {
          label: '',
          latex: '\\le',
          class: 'hide-shift',
          //shift: { latex: '\\le', label: '≤' }
        },
        {
          label: '',
          latex: '\\ge',
          class: 'hide-shift',
          //shift: { latex: '\\ge', label: '≥' }
        },
        '[separator-5]',
        '[4]',
        '[5]',
        '[6]',
        '[*]',
        '[separator-5]',
        {
          class: 'hide-shift',
          latex: '#@^2}',
          shift: '#@^{\\prime}}'
        },
        // {
        //   latex: '#@^{#0}}',
        //   class: 'hide-shift',
        //   shift: '#@_{#?}'
        // },
        {
          class: 'hide-shift',
          latex: '\\sqrt{#0}',
          //shift: { latex: '\\sqrt[#0]{#?}}' }
        },
        {
          class: 'hide-shift',
          latex: '\\sqrt[#0]{#?}}'
        }
      ],
      [
        '[(]',
        '[)]',
        '[separator-5]',
        '[1]',
        '[2]',
        '[3]',
        '[-]',
        '[separator-5]',
        // {
        //   latex: '\\int^{\\infty}_{0}\\!#?\\,\\mathrm{d}x',
        //   class: 'small hide-shift',
        //   shift: '\\int',
        //   variants: [
        //     { latex: '\\int_{#?}^{#?}', class: 'small' },
        //     { latex: '\\int', class: 'small' },
        //     { latex: '\\iint', class: 'small' },
        //     { latex: '\\iiint', class: 'small' },
        //     { latex: '\\oint', class: 'small' },
        //     '\\mathrm{d}x',
        //     { latex: '\\dfrac{\\mathrm{d}}{\\mathrm{d} x}', class: 'small' },
        //     { latex: '\\frac{\\partial}{\\partial x}', class: 'small' },
        //
        //     '\\partial'
        //   ]
        // },
        // {
        //   class: 'hide-shift',
        //   latex: '\\forall',
        //   shift: '\\exists'
        // },
        {
          latex: '\\overline{#@}',
          // shift: '\\underline{#@}',
          // variants: [
          //   '\\overbrace{#@}',
          //   '\\overlinesegment{#@}',
          //   '\\overleftrightarrow{#@}',
          //   '\\overrightarrow{#@}',
          //   '\\overleftarrow{#@}',
          //   '\\overgroup{#@}',
          //   '\\underbrace{#@}',
          //   '\\underlinesegment{#@}',
          //   '\\underleftrightarrow{#@}',
          //   '\\underrightarrow{#@}',
          //   '\\underleftarrow{#@}',
          //   '\\undergroup{#@}'
          // ]
        },
        { latex: '#@\\degree' },
        { label: '[backspace]', width: 1.0 }
      ],
      [
        { label: '=', latex: '=' },
        { label: '', latex: '\\ne' },
        // { label: '[shift]', width: 2.0 },
        '[separator-5]',
        '[0]',
        '[.]',
        '[separator-10]',
        //'[=]',
        '[+]',
        '[separator-15]',
        '[left]',
        '[right]',
        // { label: '[action]', width: 1.0 }
      ]
    ]
  },
  iqbText: {
    label: 'abc',
    labelClass: 'MLK__tex-math',
    tooltip: 'keyboard.tooltip.alphabetic',
    layers: [
      {
        rows: [
          // [
          //   {
          //     label: '1',
          //     variants: '1'
          //   },
          //   {
          //     label: '2',
          //     variants: '2'
          //   },
          //   {
          //     label: '3',
          //     variants: '3'
          //   },
          //   {
          //     label: '4',
          //     variants: '4'
          //   },
          //   {
          //     label: '5',
          //     // shift: {
          //     //   latex: '\\frac{#@}{#?}'
          //     // },
          //     variants: '5'
          //   },
          //   {
          //     label: '6',
          //     // shift: {
          //     //   latex: '#@^#?'
          //     // },
          //     variants: '6'
          //   },
          //   {
          //     label: '7',
          //     variants: '7'
          //   },
          //   {
          //     label: '8',
          //     shift: {
          //       latex: '\\times'
          //     },
          //     variants: '8'
          //   },
          //   {
          //     label: '9',
          //     shift: {
          //       label: '(',
          //       latex: '('
          //     },
          //     variants: '9'
          //   },
          //   {
          //     label: '0',
          //     shift: {
          //       label: ')',
          //       latex: ')'
          //     },
          //     variants: '0'
          //   }
          // ],
          [
            {
              label: 'q',
              class: 'hide-shift',
              shift: {
                label: 'Q'
            },
            {
              label: 'w',
              class: 'hide-shift',
              shift: {
                label: 'W'
              }
            },
            {
              label: 'e',
              class: 'hide-shift',
              shift: {
            },
            {
              label: 'r',
              class: 'hide-shift',
              shift: {
                label: 'R'
            },
            {
              label: 't',
              class: 'hide-shift',
              shift: {
                label: 'T'
              }
            },
            {
              label: 'z',
              class: 'hide-shift',
              shift: {
                label: 'Z'
            },
            {
              label: 'u',
              class: 'hide-shift',
              shift: {
            },
            {
              label: 'i',
              class: 'hide-shift',
              shift: {
            },
            {
              label: 'o',
              class: 'hide-shift',
              shift: {
            },
            {
              label: 'p',
              class: 'hide-shift',
              shift: {
                label: 'P'
            }
          ],
          [
            {
              class: 'separator',
              width: 0.5
            },
            {
              label: 'a',
              class: 'hide-shift',
              shift: {
            },
            {
              label: 's',
              class: 'hide-shift',
              shift: {
                label: 'S'
              }
            },
            {
              label: 'd',
              class: 'hide-shift',
              shift: {
                label: 'D'
            },
            {
              label: 'f',
              class: 'hide-shift',
              shift: {
                label: 'F'
              }
            },
            {
              label: 'g',
              class: 'hide-shift',
              shift: {
                label: 'G'
            },
            {
              label: 'h',
              class: 'hide-shift',
              shift: {
                label: 'H'
            },
            {
              label: 'j',
              class: 'hide-shift',
              shift: {
                label: 'J'
            },
            {
              label: 'k',
              class: 'hide-shift',
              shift: {
                label: 'K'
              }
            },
            {
              label: 'l',
              class: 'hide-shift',
              shift: {
                label: 'L'
            },
            {
              class: 'separator',
              width: 0.5
            }
          ],
          [
            {
              class: 'shift bottom left',
              width: 1.5,
              label: '<span class=caps-lock-indicator></span><svg class=svg-glyph><use xlink:href=#svg-shift /></svg>'
            },
            {
              label: 'y',
              class: 'hide-shift',
              shift: {
            },
            {
              label: 'x',
              class: 'hide-shift',
              shift: {
                label: 'X'
              }
            },
            {
              label: 'c',
              class: 'hide-shift',
              shift: {
                label: 'C'
            },
            {
              label: 'v',
              class: 'hide-shift',
              shift: {
                label: 'V'
              }
            },
            {
              label: 'b',
              class: 'hide-shift',
              shift: {
                label: 'B'
            },
            {
              label: 'n',
              class: 'hide-shift',
              shift: {
                label: 'N'
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
            },
            {
              label: 'm',
              class: 'hide-shift',
              shift: {
                label: 'M'
              }
            },
            {
              class: 'action bottom right hide-shift',
              width: 1.5,
              command: 'performWithFeedback(deleteBackward)',
              label: '<svg class=svg-glyph><use xlink:href=#svg-delete-backward /></svg>',
              shift: {
                class: 'action warning',
                label: '<svg class=svg-glyph><use xlink:href=#svg-trash /></svg>',
                command: 'deleteAll'
              }
            }
          ],
          [
            // {
            //   variants: [
            //     '\\pm',
            //     '\\ominus'
            //   ],
            //   latex: '-',
            //   label: '&#x2212;',
            //   shift: '\\pm',
            //   class: 'big-op hide-shift'
            // },
            // {
            //   variants: [
            //     {
            //       latex: '\\sum_{#0}^{#0}',
            //       class: 'small'
            //     },
            //     '\\oplus'
            //   ],
            //   latex: '+',
            //   label: '+',
            //   class: 'big-op hide-shift',
            //   shift: {
            //     latex: '\\sum',
            //     insert: '\\sum',
            //     class: 'small'
            //   }
            // },
            // {
            //   variants: [
            //     '\\neq',
            //     '\\equiv',
            //     '\\varpropto',
            //     '\\thickapprox',
            //     '\\lt',
            //     '\\gt',
            //     '\\le',
            //     '\\ge'
            //   ],
            //   latex: '=',
            //   label: '=',
            //   shift: {
            //     label: '≠',
            //     latex: '\\ne'
            //   },
            //   class: 'big-op hide-shift'
            // },
            {
              label: ',',
              shift: ';',
              class: 'hide-shift'
            },
            {
              command: 'performWithFeedback(insertDecimalSeparator)',
              shift: ':',
              class: 'big-op hide-shift',
              label: '.'
            },
            {
              label: ' ',
              width: 5
            },
            // {
            //   label: ',',
            //   shift: ';',
            //   variants: '.',
            //   class: 'hide-shift'
            // },
            // {
            //   variants: '.',
            //   command: 'performWithFeedback(insertDecimalSeparator)',
            //   shift: ',',
            //   class: 'big-op hide-shift',
            //   label: '.'
            // },
            {
              class: 'action hide-shift',
              label: '<svg class=svg-glyph><use xlink:href=#svg-arrow-left /></svg>',
              command: 'performWithFeedback(moveToPreviousChar)',
              // shift: {
              //   label: '<svg class=svg-glyph><use xlink:href=#svg-angle-double-left /></svg>',
              //   command: 'performWithFeedback(extendSelectionBackward)'
              // }
            },
            {
              class: 'action hide-shift',
              label: '<svg class=svg-glyph><use xlink:href=#svg-arrow-right /></svg>',
              command: 'performWithFeedback(moveToNextChar)',
              // shift: {
              //   label: '<svg class=svg-glyph><use xlink:href=#svg-angle-double-right /></svg>',
              //   command: 'performWithFeedback(extendSelectionForward)'
              // }
            }
            // {
            //   class: 'action hide-shift',
            //   command: 'performWithFeedback(commit)',
            //   shift: {
            //     label: '<svg class=svg-glyph><use xlink:href=#circle-plus /></svg>',
            //     command: 'performWithFeedback(addRowAfter)'
            //   },
            //   width: 1.5,
            //   label: '<svg class=svg-glyph><use xlink:href=#svg-commit /></svg>'
            // }
          ]
        ],
        id: 'ML__layer_rotn9'
      }
    ]
  },
  iqbGreek: {
    label: '&alpha;&beta;&gamma;',
    labelClass: 'MLK__tex-math',
    tooltip: 'keyboard.tooltip.greek',
    rows: [
      [
        {
          label: '<i>&#x03c6;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\varphi',
          aside: 'phi var.',
          shift: '\\Phi'
        },
        {
          label: '<i>&#x03c2;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\varsigma',
          aside: 'sigma var.',
          shift: '\\Sigma'
        },
        {
          label: '<i>&#x03f5;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\epsilon',
          aside: 'epsilon',
          shift: '\\char"0190'
        },
        {
          label: '<i>&rho;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\rho',
          aside: 'rho',
          shift: '\\char"3A1'
        },
        {
          label: '<i>&tau;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\tau',
          aside: 'tau',
          shift: '\\char"3A4'
        },
        {
          label: '<i>&upsilon;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\upsilon',
          aside: 'upsilon',
          shift: '\\Upsilon'
        },
        {
          label: '<i>&theta;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\theta',
          aside: 'theta',
          shift: '\\Theta'
        },
        {
          label: '<i>&iota;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\iota',
          aside: 'iota',
          shift: '\\char"399'
        },
        {
          label: '<i>&omicron;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\omicron',
          aside: 'omicron',
          shift: '\\char"39F'
        },
        {
          label: '<i>&pi;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\pi',
          aside: 'pi',
          shift: '\\Pi'
        }
      ],
      [
        '[separator-5]',
        {
          label: '<i>&alpha;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\alpha',
          aside: 'alpha',
          shift: '\\char"391'
        },
        {
          label: '<i>&sigma;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\sigma',
          aside: 'sigma',
          shift: '\\Sigma'
        },
        {
          label: '<i>&delta;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\delta',
          aside: 'delta',
          shift: '\\Delta'
        },
        {
          latex: '\\phi',
          class: 'MLK__tex hide-shift',
          insert: '\\phi',
          aside: 'phi',
          shift: '\\Phi'
        },
        {
          label: '<i>&gamma;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\gamma',
          aside: 'gamma',
          shift: '\\Gamma'
        },
        {
          label: '<i>&eta;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\eta',
          aside: 'eta',
          shift: '\\char"397'
        },
        {
          label: '<i>&xi;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\xi',
          aside: 'xi',
          shift: '\\Xi'
        },
        {
          label: '<i>&kappa;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\kappa',
          aside: 'kappa',
          shift: '\\Kappa'
        },
        {
          label: '<i>&lambda;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\lambda',
          aside: 'lambda',
          shift: '\\Lambda'
        },
        '[separator-5]'
      ],
      [
        '[shift]',
        {
          label: '<i>&zeta;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\zeta',
          aside: 'zeta',
          shift: '\\char"396'
        },
        {
          label: '<i>&chi;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\chi',
          aside: 'chi',
          shift: '\\char"3A7'
        },
        {
          label: '<i>&psi;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\psi',
          aside: 'zeta',
          shift: '\\Psi'
        },
        {
          label: '<i>&omega;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\omega',
          aside: 'omega',
          shift: '\\Omega'
        },
        {
          label: '<i>&beta;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\beta',
          aside: 'beta',
          shift: '\\char"392'
        },
        {
          label: '<i>&nu;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\nu',
          aside: 'nu',
          shift: '\\char"39D'
        },
        {
          label: '<i>&mu;</i>',
          class: 'MLK__tex hide-shift',
          insert: '\\mu',
          aside: 'mu',
          shift: '\\char"39C'
        },

        '[backspace]'
      ],
      [
        '[separator]',
        {
          label: '<i>&#x03b5;</i>',
          class: 'MLK__tex',
          insert: '\\varepsilon',
          aside: 'epsilon var.'
        },
        {
          label: '<i>&#x03d1;</i>',
          class: 'MLK__tex',
          insert: '\\vartheta',
          aside: 'theta var.'
        },
        {
          label: '<i>&#x3f0;</i>',
          class: 'MLK__tex',
          insert: '\\varkappa',
          aside: 'kappa var.'
        },
        {
          label: '<i>&#x03d6;</i>',
          class: 'MLK__tex',
          insert: '\\varpi',
          aside: 'pi var.'
        },
        {
          label: '<i>&#x03f1;</i>',
          class: 'MLK__tex',
          insert: '\\varrho',
          aside: 'rho var.'
        },

        {
          class: 'action hide-shift',
          label: '<svg class=svg-glyph><use xlink:href=#svg-arrow-left /></svg>',
          command: 'performWithFeedback(moveToPreviousChar)',
          // shift: {
          //   label: '<svg class=svg-glyph><use xlink:href=#svg-angle-double-left /></svg>',
          //   command: 'performWithFeedback(extendSelectionBackward)'
          // }
        },
        {
          class: 'action hide-shift',
          label: '<svg class=svg-glyph><use xlink:href=#svg-arrow-right /></svg>',
          command: 'performWithFeedback(moveToNextChar)',
          // shift: {
          //   label: '<svg class=svg-glyph><use xlink:href=#svg-angle-double-right /></svg>',
          //   command: 'performWithFeedback(extendSelectionForward)'
          // }
        },
      ]
    ]
  },
  iqbSymbols: {
    label: '&infin;≠∈',
    labelClass: 'MLK__tex',
    tooltip: 'keyboard.tooltip.symbols',
    rows: [
      [
        {
          latex: '\\sin',
          shift: '\\sin^{-1}',
        },
        '\\ln',
        {
          latex: '\\mathrm{abs}',
          insert: '\\mathrm{abs}\\left(#0\\right)'
        },
        {
          latex: '\\rightarrow',
        },
        {
          latex: '\\exists',
          shift: '\\nexists'
        },
        { latex: '\\in', shift: '\\notin' },
        '\\cup',
        {
          latex: '\\overrightarrow{#@}',
          shift: '\\overleftarrow{#@}'},
        {
          class: 'small hide-shift',
          latex: '\\lim_{#?}',
          shift: '\\lim_{x\\to\\infty}'
        },
        // '\\exponentialE'
        {
          // variants: [
          //   {
          //     latex: '\\sum_{#0}^{#0}',
          //     class: 'small'
          //   },
          //   '\\oplus'
          // ],
          // latex: '+',
          // label: '+',
          class: 'small hide-shift',
          latex: '\\sum',
          insert: '\\sum',
        }
      ],
      [
        {
          latex: '\\cos',
        },
        {
          latex: '\\log',
        },
        '\\left\\vert#0\\right\\vert',
        {
          latex: '\\larr',
        },
        {
          latex: '\\forall',
        },
        { latex: '\\ni', shift: '\\not\\owns' },
        '\\cap',
        {
          latex: '\\overline{#@}',
        },
        {
          class: 'hide-shift small',
          latex: '\\int',
        },
        // { latex: '\\pi', shift: '\\tau', variants: ['\\tau'] }
        {
          latex: '\\int^{\\infty}_{0}\\!#?\\,\\mathrm{d}x',
          class: 'small hide-shift',
          // shift: '\\int',
          // variants: [
          //   { latex: '\\int_{#?}^{#?}', class: 'small' },
          //   { latex: '\\int', class: 'small' },
          //   { latex: '\\iint', class: 'small' },
          //   { latex: '\\iiint', class: 'small' },
          //   { latex: '\\oint', class: 'small' },
          //   '\\mathrm{d}x',
          //   { latex: '\\dfrac{\\mathrm{d}}{\\mathrm{d} x}', class: 'small' },
          //   { latex: '\\frac{\\partial}{\\partial x}', class: 'small' },
          //
          //   '\\partial'
          // ]
        },
      ],
      [
        {
          latex: '\\tan',
        },
        {
          latex: '\\exp',
          insert: '\\exp\\left(#0\\right)'
        },
        '\\left\\Vert#0\\right\\Vert',
        {
          latex: '\\lrArr',
        },
        { latex: '\\vert', shift: '!' },
        {
          latex: '#@^{\\complement}',
        },
        {
          latex: '\\subset',
        },
        {
          latex: '#@^{\\prime}',
          shift: '#@^{\\doubleprime}'
        },
        {
          latex: '\\mathrm{d}',
        },
        // {
        //   latex: '\\infty',
        //   variants: ['\\aleph_0', '\\aleph_1', '\\omega', '\\mathfrak{m}']
        // }
        {
          //latex: '-',
          //label: '&#x2212;',
          latex: '\\pm',
          class: 'big-op hide-shift'
        }
      ],
      [
        { label: '[shift]', width: 2.0 },
        '[separator-10]',
        {
          latex: '\\exponentialE',
          shift: '\\imaginaryI'
        },
        { latex: '\\pi', shift: '\\tau' },
        {
          latex: '\\infty',
          shift: '\\Colon'
        },






        // {
        //   class: 'box',
        //   latex: ',',
        //   shift: ';',
        //   variants: [';', '?']
        // },
        // {
        //   class: 'box',
        //   latex: '\\colon',
        //   shift: '\\Colon',
        //   variants: [
        //     { latex: '\\Colon', aside: 'such that', class: 'box' },
        //     { latex: ':', aside: 'ratio', class: 'box' },
        //     { latex: '\\vdots', aside: '', class: 'box' },
        //     { latex: '\\ddots', aside: '', class: 'box' },
        //     { latex: '\\ldotp', aside: 'low dot', class: 'box' },
        //     { latex: '\\cdotp', aside: 'center dot', class: 'box' },
        //     { latex: '\\ldots', aside: 'low ellipsis', class: 'box' },
        //     { latex: '\\cdots', aside: 'center ellipsis', class: 'box' },
        //     { latex: '\\therefore', aside: 'therefore', class: 'box' },
        //     { latex: '\\because', aside: 'because', class: 'box' }
        //   ]
        // },
        // {
        //   class: 'box',
        //   latex: '\\cdot',
        //   aside: 'centered dot',
        //   shift: '\\ast',
        //   variants: [
        //     '\\circ',
        //     '\\bigcirc',
        //     '\\bullet',
        //     '\\odot',
        //     '\\oslash',
        //     '\\circledcirc',
        //     '\\ast',
        //     '\\star',