Code owners
Assign users and groups as approvers for specific file changes. Learn more.
keyboard-layout.config.ts 26.60 KiB
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: '\\frac{#@}{#?}'
},
{
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: 'E'
}
},
{
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: 'U'
}
},
{
label: 'i',
class: 'hide-shift',
shift: {
label: 'I'
}
},
{
label: 'o',
class: 'hide-shift',
shift: {
label: 'O'
}
},
{
label: 'p',
class: 'hide-shift',
shift: {
label: 'P'
}
}
],
[
{
class: 'separator',
width: 0.5
},
{
label: 'a',
class: 'hide-shift',
shift: {
label: 'A'
}
},
{
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: 'Y'
}
},
{
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'
}
},
{
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: '−',
// 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: 'αβγ',
labelClass: 'MLK__tex-math',
tooltip: 'keyboard.tooltip.greek',
rows: [
[
{
label: '<i>φ</i>',
class: 'MLK__tex hide-shift',
insert: '\\varphi',
aside: 'phi var.',
shift: '\\Phi'
},
{
label: '<i>ς</i>',
class: 'MLK__tex hide-shift',
insert: '\\varsigma',
aside: 'sigma var.',
shift: '\\Sigma'
},
{
label: '<i>ϵ</i>',
class: 'MLK__tex hide-shift',
insert: '\\epsilon',
aside: 'epsilon',
shift: '\\char"0190'
},
{
label: '<i>ρ</i>',
class: 'MLK__tex hide-shift',
insert: '\\rho',
aside: 'rho',
shift: '\\char"3A1'
},
{
label: '<i>τ</i>',
class: 'MLK__tex hide-shift',
insert: '\\tau',
aside: 'tau',
shift: '\\char"3A4'
},
{
label: '<i>υ</i>',
class: 'MLK__tex hide-shift',
insert: '\\upsilon',
aside: 'upsilon',
shift: '\\Upsilon'
},
{
label: '<i>θ</i>',
class: 'MLK__tex hide-shift',
insert: '\\theta',
aside: 'theta',
shift: '\\Theta'
},
{
label: '<i>ι</i>',
class: 'MLK__tex hide-shift',
insert: '\\iota',
aside: 'iota',
shift: '\\char"399'
},
{
label: '<i>ο</i>',
class: 'MLK__tex hide-shift',
insert: '\\omicron',
aside: 'omicron',
shift: '\\char"39F'
},
{
label: '<i>π</i>',
class: 'MLK__tex hide-shift',
insert: '\\pi',
aside: 'pi',
shift: '\\Pi'
}
],
[
'[separator-5]',
{
label: '<i>α</i>',
class: 'MLK__tex hide-shift',
insert: '\\alpha',
aside: 'alpha',
shift: '\\char"391'
},
{
label: '<i>σ</i>',
class: 'MLK__tex hide-shift',
insert: '\\sigma',
aside: 'sigma',
shift: '\\Sigma'
},
{
label: '<i>δ</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>γ</i>',
class: 'MLK__tex hide-shift',
insert: '\\gamma',
aside: 'gamma',
shift: '\\Gamma'
},
{
label: '<i>η</i>',
class: 'MLK__tex hide-shift',
insert: '\\eta',
aside: 'eta',
shift: '\\char"397'
},
{
label: '<i>ξ</i>',
class: 'MLK__tex hide-shift',
insert: '\\xi',
aside: 'xi',
shift: '\\Xi'
},
{
label: '<i>κ</i>',
class: 'MLK__tex hide-shift',
insert: '\\kappa',
aside: 'kappa',
shift: '\\Kappa'
},
{
label: '<i>λ</i>',
class: 'MLK__tex hide-shift',
insert: '\\lambda',
aside: 'lambda',
shift: '\\Lambda'
},
'[separator-5]'
],
[
'[shift]',
{
label: '<i>ζ</i>',
class: 'MLK__tex hide-shift',
insert: '\\zeta',
aside: 'zeta',
shift: '\\char"396'
},
{
label: '<i>χ</i>',
class: 'MLK__tex hide-shift',
insert: '\\chi',
aside: 'chi',
shift: '\\char"3A7'
},
{
label: '<i>ψ</i>',
class: 'MLK__tex hide-shift',
insert: '\\psi',
aside: 'zeta',
shift: '\\Psi'
},
{
label: '<i>ω</i>',
class: 'MLK__tex hide-shift',
insert: '\\omega',
aside: 'omega',
shift: '\\Omega'
},
{
label: '<i>β</i>',
class: 'MLK__tex hide-shift',
insert: '\\beta',
aside: 'beta',
shift: '\\char"392'
},
{
label: '<i>ν</i>',
class: 'MLK__tex hide-shift',
insert: '\\nu',
aside: 'nu',
shift: '\\char"39D'
},
{
label: '<i>μ</i>',
class: 'MLK__tex hide-shift',
insert: '\\mu',
aside: 'mu',
shift: '\\char"39C'
},
'[backspace]'
],
[
'[separator]',
{
label: '<i>ε</i>',
class: 'MLK__tex',
insert: '\\varepsilon',
aside: 'epsilon var.'
},
{
label: '<i>ϑ</i>',
class: 'MLK__tex',
insert: '\\vartheta',
aside: 'theta var.'
},
{
label: '<i>ϰ</i>',
class: 'MLK__tex',
insert: '\\varkappa',
aside: 'kappa var.'
},
{
label: '<i>ϖ</i>',
class: 'MLK__tex',
insert: '\\varpi',
aside: 'pi var.'
},
{
label: '<i>ϱ</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: '∞≠∈',
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',
shift: '\\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',
shift: '\\cos^{-1}'
},
{
latex: '\\log',
shift: '\\log_{10}'
},
'\\left\\vert#0\\right\\vert',
{
latex: '\\larr',
shift: '\\lArr'
},
{
latex: '\\forall',
shift: '\\lnot'
},
{ latex: '\\ni', shift: '\\not\\owns' },
'\\cap',
{
latex: '\\overline{#@}',
shift: '\\underline{#@}'
},
{
class: 'hide-shift small',
latex: '\\int',
shift: '\\iint'
},
// { 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',
shift: '\\tan^{-1}'
},
{
latex: '\\exp',
insert: '\\exp\\left(#0\\right)'
},
'\\left\\Vert#0\\right\\Vert',
{
latex: '\\lrArr',
shift: '\\leftrightarrow'
},
{ latex: '\\vert', shift: '!' },
{
latex: '#@^{\\complement}',
aside: 'complement'
},
{
latex: '\\subset',
shift: '\\subseteq'
},
{
latex: '#@^{\\prime}',
shift: '#@^{\\doubleprime}'
},
{
latex: '\\mathrm{d}',
shift: '\\partial'
},
// {
// latex: '\\infty',
// variants: ['\\aleph_0', '\\aleph_1', '\\omega', '\\mathfrak{m}']
// }
{
//latex: '-',
//label: '−',
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',
// '\\times',
// '\\doteq',
// '\\doteqdot'
// ]
// },
'[separator-10]',
{
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)'
// }
},
{
label: '[backspace]',
width: 1.0,
class: 'action hide-shift'
},
// { label: '[action]', width: 1.0 }
]
]
}
};