From f9925688329fb02b46e524cd31ac733f37549eeb Mon Sep 17 00:00:00 2001 From: pkova Date: Sat, 31 Jul 2021 23:37:23 +0300 Subject: Add customizable prefix key in js repl --- docs/repl.js | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) (limited to 'docs/repl.js') diff --git a/docs/repl.js b/docs/repl.js index 5ec386a5..1aaeb218 100644 --- a/docs/repl.js +++ b/docs/repl.js @@ -78,7 +78,13 @@ sysvals.plot = (x,w) => { return '\0'; } -let keymode=0; // 1 for backslash +doc.prfx.onchange = ev => { + prefix = ev.target.value; + buildKb(); +} + +let keymode=0; // 1 for prefix +let prefix=doc.prfx.value; doc.code.onkeydown = ev => { let k = ev.which; if (16<=k && k<=20) { @@ -87,12 +93,12 @@ doc.code.onkeydown = ev => { repl(); return false; } if (keymode) { keymode = 0; - doc.kb.classList.remove('backslash'); + doc.kb.classList.remove('prefix'); let c = keys[ev.key]; if (c) return typeChar(ev.target, c, ev); - } else if (ev.key=='\\') { + } else if (ev.key==prefix) { keymode = 1; - doc.kb.classList.add('backslash'); + doc.kb.classList.add('prefix'); ev.preventDefault(); } } @@ -111,14 +117,17 @@ let kk=Array.from('`123456890-=~!@#$%^&*()_+qwertuiop[]QWERTIOP{}asdfghjkl;ASFGH let kv=Array.from('˜˘¨⁼⌜´˝∞¯•÷׬⎉⚇⍟◶⊘⎊⍎⍕⟨⟩√⋆⌽𝕨∊↑∧⊔⊏⊐π←→↙𝕎⍷𝕣⍋⊑⊒⍳⊣⊢⍉𝕤↕𝕗𝕘⊸∘○⟜⋄↖𝕊𝔽𝔾«⌾»·˙⥊𝕩↓∨⌊≡∾≍≠𝕏⍒⌈≢≤≥⇐‿↩'); let keys={}, revkeys={}, primhelp={}; kk.map((k,i)=>{keys[k]=kv[i];revkeys[kv[i]]=k;}); -doc.kb.innerHTML = keydesc.map(d=>{ - let s = syncls[d[0]]; - let c = Array.from(d)[1]; - let t = d.slice(1+c.length).replace(';','\n'); - let k = revkeys[c]; if (k) t += '\n\\ '+(k==='"'?'"':k); - primhelp[c] = t; - return ''+c+'' -}).concat(['map']).join("​"); // zero-width space +let buildKb = () => { + doc.kb.innerHTML = keydesc.map(d=>{ + let s = syncls[d[0]]; + let c = Array.from(d)[1]; + let t = d.slice(1+c.length).replace(';','\n'); + let k = revkeys[c]; if (k) t += '\n'+prefix+(k==='"'?'"':k); + primhelp[c] = t; + return ''+c+'' + }).concat(['map']).join("​"); // zero-width space +} +buildKb(); doc.kb.onmousedown = ev => { let t = ev.target; if (t.nodeName === 'SPAN') { -- cgit v1.2.3