From 2984f56643e6c5aea5c03481ddd0ce30d24dd845 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Tue, 3 Mar 2026 15:09:09 +1100 Subject: [PATCH 01/55] Trialling onscreen keyboard --- src/deviceManager.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index 514be9e..97fec0d 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -73,6 +73,12 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< }); } + // On-screen keyboard + const kioskKeyboardScript = "(function(){if(document.getElementById('kiosk-vkb-container'))return;const style=document.createElement('style');style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};let currentLayout='default';let activeInput=null;let isShifted=false;const keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';document.body.appendChild(keyboardContainer);function renderKeyboard(){keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);}function hideKeyboard(){keyboardContainer.classList.remove('vkb-visible');if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(activeInput!==target){showKeyboard(target);}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});renderKeyboard();})();"; + await session.send('Page.addScriptToEvaluateOnNewDocument', { + source: kioskKeyboardScript + }); + await session.send('Page.startScreencast', { format: 'png', maxWidth: cfg.width, @@ -197,4 +203,4 @@ async function deleteDeviceAsync(device: DeviceSession) { try { await device.cdp.send("Page.stopScreencast").catch(() => { }); } catch { } try { await root?.send("Target.closeTarget", { targetId: device.id }); } catch { } -} \ No newline at end of file +} From fad07f65fee1ed05befeba5398bf646823edd5bf Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Tue, 3 Mar 2026 15:30:48 +1100 Subject: [PATCH 02/55] Update inputRouter.ts Testing out individual page eval to see if I can get the onscreen keyboard working that way --- src/inputRouter.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/inputRouter.ts b/src/inputRouter.ts index 37350b8..3ca1469 100644 --- a/src/inputRouter.ts +++ b/src/inputRouter.ts @@ -39,6 +39,10 @@ export class InputRouter { if (dev.url !== pkt.url) await dev.cdp.send('Page.navigate', { url: pkt.url }); + + const kioskKeyboardScript = "(function(){if(document.getElementById('kiosk-vkb-container'))return;const style=document.createElement('style');style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};let currentLayout='default';let activeInput=null;let isShifted=false;const keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';document.body.appendChild(keyboardContainer);function renderKeyboard(){keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);}function hideKeyboard(){keyboardContainer.classList.remove('vkb-visible');if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(activeInput!==target){showKeyboard(target);}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});renderKeyboard();})();"; + await dev.cdp.send('Runtime.evaluate', { expression: kioskKeyboardScript }); + } } From ac9c8690ae1ad23de413158f72c62845f549ebd1 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Tue, 3 Mar 2026 15:47:43 +1100 Subject: [PATCH 03/55] Update deviceManager.ts --- src/deviceManager.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index 97fec0d..e4a2a1e 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -74,10 +74,11 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< } // On-screen keyboard - const kioskKeyboardScript = "(function(){if(document.getElementById('kiosk-vkb-container'))return;const style=document.createElement('style');style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};let currentLayout='default';let activeInput=null;let isShifted=false;const keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';document.body.appendChild(keyboardContainer);function renderKeyboard(){keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);}function hideKeyboard(){keyboardContainer.classList.remove('vkb-visible');if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(activeInput!==target){showKeyboard(target);}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});renderKeyboard();})();"; - await session.send('Page.addScriptToEvaluateOnNewDocument', { - source: kioskKeyboardScript - }); + //const kioskKeyboardScript = "(function(){if(document.getElementById('kiosk-vkb-container'))return;const style=document.createElement('style');style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};let currentLayout='default';let activeInput=null;let isShifted=false;const keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';document.body.appendChild(keyboardContainer);function renderKeyboard(){keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);}function hideKeyboard(){keyboardContainer.classList.remove('vkb-visible');if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(activeInput!==target){showKeyboard(target);}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});renderKeyboard();})();"; + //await session.send('Page.addScriptToEvaluateOnNewDocument', { + // source: kioskKeyboardScript + //}); + //--- Moved to inputRouter with page load instead for now await session.send('Page.startScreencast', { format: 'png', From 84cebfa71f6274b41278c62eddd6147c3ad5c26c Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Tue, 3 Mar 2026 15:51:26 +1100 Subject: [PATCH 04/55] Update inputRouter.ts --- src/inputRouter.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/inputRouter.ts b/src/inputRouter.ts index 3ca1469..1b56e83 100644 --- a/src/inputRouter.ts +++ b/src/inputRouter.ts @@ -40,7 +40,8 @@ export class InputRouter { if (dev.url !== pkt.url) await dev.cdp.send('Page.navigate', { url: pkt.url }); - const kioskKeyboardScript = "(function(){if(document.getElementById('kiosk-vkb-container'))return;const style=document.createElement('style');style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};let currentLayout='default';let activeInput=null;let isShifted=false;const keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';document.body.appendChild(keyboardContainer);function renderKeyboard(){keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);}function hideKeyboard(){keyboardContainer.classList.remove('vkb-visible');if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(activeInput!==target){showKeyboard(target);}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});renderKeyboard();})();"; + // Onscreen keyboard script inject + const kioskKeyboardScript = "(function(){function initKeyboard(){if(document.getElementById('kiosk-vkb-container'))return;const style=document.createElement('style');style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};let currentLayout='default';let activeInput=null;let isShifted=false;const keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';document.body.appendChild(keyboardContainer);function renderKeyboard(){keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);}function hideKeyboard(){keyboardContainer.classList.remove('vkb-visible');if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(activeInput!==target){showKeyboard(target);}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});renderKeyboard();}if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',initKeyboard);}else{initKeyboard();}})();"; await dev.cdp.send('Runtime.evaluate', { expression: kioskKeyboardScript }); } From 28862c2e9b22fa4c216eb27bfd844b15926c4d4b Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Tue, 3 Mar 2026 16:03:15 +1100 Subject: [PATCH 05/55] Update inputRouter.ts --- src/inputRouter.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/inputRouter.ts b/src/inputRouter.ts index 1b56e83..44c2b7e 100644 --- a/src/inputRouter.ts +++ b/src/inputRouter.ts @@ -41,9 +41,9 @@ export class InputRouter { await dev.cdp.send('Page.navigate', { url: pkt.url }); // Onscreen keyboard script inject - const kioskKeyboardScript = "(function(){function initKeyboard(){if(document.getElementById('kiosk-vkb-container'))return;const style=document.createElement('style');style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};let currentLayout='default';let activeInput=null;let isShifted=false;const keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';document.body.appendChild(keyboardContainer);function renderKeyboard(){keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);}function hideKeyboard(){keyboardContainer.classList.remove('vkb-visible');if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(activeInput!==target){showKeyboard(target);}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});renderKeyboard();}if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',initKeyboard);}else{initKeyboard();}})();"; - await dev.cdp.send('Runtime.evaluate', { expression: kioskKeyboardScript }); - + //const kioskKeyboardScript = "(function(){function initKeyboard(){if(document.getElementById('kiosk-vkb-container'))return;const style=document.createElement('style');style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};let currentLayout='default';let activeInput=null;let isShifted=false;const keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';document.body.appendChild(keyboardContainer);function renderKeyboard(){keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);}function hideKeyboard(){keyboardContainer.classList.remove('vkb-visible');if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(activeInput!==target){showKeyboard(target);}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});renderKeyboard();}if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',initKeyboard);}else{initKeyboard();}})();"; + //await dev.cdp.send('Runtime.evaluate', { expression: kioskKeyboardScript }); + // --- This method seems to do something else than what I expected } } From 74ceb0c5bd6ea5af31fef18026682c7ff79a2363 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Tue, 3 Mar 2026 16:04:28 +1100 Subject: [PATCH 06/55] Update deviceManager.ts --- src/deviceManager.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index e4a2a1e..1597dfa 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -75,10 +75,12 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< // On-screen keyboard //const kioskKeyboardScript = "(function(){if(document.getElementById('kiosk-vkb-container'))return;const style=document.createElement('style');style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};let currentLayout='default';let activeInput=null;let isShifted=false;const keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';document.body.appendChild(keyboardContainer);function renderKeyboard(){keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);}function hideKeyboard(){keyboardContainer.classList.remove('vkb-visible');if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(activeInput!==target){showKeyboard(target);}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});renderKeyboard();})();"; - //await session.send('Page.addScriptToEvaluateOnNewDocument', { - // source: kioskKeyboardScript - //}); - //--- Moved to inputRouter with page load instead for now + // first version did not wait for DOM, trying a second version now + const kioskKeyboardScript = "(function(){function initKeyboard(){if(document.getElementById('kiosk-vkb-container'))return;const style=document.createElement('style');style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};let currentLayout='default';let activeInput=null;let isShifted=false;const keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';document.body.appendChild(keyboardContainer);function renderKeyboard(){keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);}function hideKeyboard(){keyboardContainer.classList.remove('vkb-visible');if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(activeInput!==target){showKeyboard(target);}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});renderKeyboard();}if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',initKeyboard);}else{initKeyboard();}})();"; + await session.send('Page.addScriptToEvaluateOnNewDocument', { + source: kioskKeyboardScript + }); + //--- Tried something else in inputRouter without much success, reverting back to this await session.send('Page.startScreencast', { format: 'png', From 62729aefbb18d27579d52d39378082a5054690eb Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Tue, 3 Mar 2026 20:39:29 +1100 Subject: [PATCH 07/55] Update deviceManager.ts --- src/deviceManager.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index 1597dfa..2672732 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -80,6 +80,9 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< await session.send('Page.addScriptToEvaluateOnNewDocument', { source: kioskKeyboardScript }); + await session.send('Page.addScriptToEvaluateOnNewDocument', { + source: "console.log('Loaded onscreen keyboard');" + }); //--- Tried something else in inputRouter without much success, reverting back to this await session.send('Page.startScreencast', { From e9af690aebd862628d4f3593d9f22dd1cac00f9b Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Tue, 3 Mar 2026 20:41:10 +1100 Subject: [PATCH 08/55] Update deviceManager.ts --- src/deviceManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index 2672732..d943214 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -81,7 +81,7 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< source: kioskKeyboardScript }); await session.send('Page.addScriptToEvaluateOnNewDocument', { - source: "console.log('Loaded onscreen keyboard');" + source: "console.log('Injected onscreen keyboard JS and CSS.');" }); //--- Tried something else in inputRouter without much success, reverting back to this From 251e04b4e1671183dbfb165d1256d19c17edc89b Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Tue, 3 Mar 2026 21:21:22 +1100 Subject: [PATCH 09/55] Update deviceManager.ts --- src/deviceManager.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index d943214..2558988 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -76,13 +76,18 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< // On-screen keyboard //const kioskKeyboardScript = "(function(){if(document.getElementById('kiosk-vkb-container'))return;const style=document.createElement('style');style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};let currentLayout='default';let activeInput=null;let isShifted=false;const keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';document.body.appendChild(keyboardContainer);function renderKeyboard(){keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);}function hideKeyboard(){keyboardContainer.classList.remove('vkb-visible');if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(activeInput!==target){showKeyboard(target);}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});renderKeyboard();})();"; // first version did not wait for DOM, trying a second version now + /* + // This is the second attempt. This definitely makes things work, but I feel like the Javascript does not stay around persistently. const kioskKeyboardScript = "(function(){function initKeyboard(){if(document.getElementById('kiosk-vkb-container'))return;const style=document.createElement('style');style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};let currentLayout='default';let activeInput=null;let isShifted=false;const keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';document.body.appendChild(keyboardContainer);function renderKeyboard(){keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);}function hideKeyboard(){keyboardContainer.classList.remove('vkb-visible');if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(activeInput!==target){showKeyboard(target);}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});renderKeyboard();}if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',initKeyboard);}else{initKeyboard();}})();"; await session.send('Page.addScriptToEvaluateOnNewDocument', { source: kioskKeyboardScript }); await session.send('Page.addScriptToEvaluateOnNewDocument', { source: "console.log('Injected onscreen keyboard JS and CSS.');" - }); + }); */ + // So trying something new this time: + const kioskKeyboardScript = "(function(){if(window.__kioskKeyboardInitialized)return;window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head)return false;if(!document.getElementById('kiosk-vkb-style')){const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(ensureDOM()){if(activeInput!==target){showKeyboard(target);}}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});console.log('Kiosk Virtual Keyboard Initialized (CDP Mode Active).');})();"; + await session.send('Page.addScriptToEvaluateOnNewDocument', { source: kioskKeyboardScript }); //--- Tried something else in inputRouter without much success, reverting back to this await session.send('Page.startScreencast', { From 88f5a69f3a4c2df74294fe1daef9695fa7b57d9e Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Tue, 3 Mar 2026 21:54:15 +1100 Subject: [PATCH 10/55] Update deviceManager.ts --- src/deviceManager.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index 2558988..c1d3289 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -86,8 +86,13 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< source: "console.log('Injected onscreen keyboard JS and CSS.');" }); */ // So trying something new this time: + /* const kioskKeyboardScript = "(function(){if(window.__kioskKeyboardInitialized)return;window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head)return false;if(!document.getElementById('kiosk-vkb-style')){const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(ensureDOM()){if(activeInput!==target){showKeyboard(target);}}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});console.log('Kiosk Virtual Keyboard Initialized (CDP Mode Active).');})();"; await session.send('Page.addScriptToEvaluateOnNewDocument', { source: kioskKeyboardScript }); + */ + // found out something new, #shadow-root is a bigger problem than I ever knew. lets try something else now: + const kioskKeyboardScript = "(function(){if(window.__kioskKeyboardInitialized)return;window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head)return false;if(!document.getElementById('kiosk-vkb-style')){const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=(e.composedPath&&e.composedPath()[0])||e.target;if(!target||!target.tagName)return;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';const isEditable=target.isContentEditable;if(isInput||isTextArea||isEditable){if(ensureDOM()){if(activeInput!==target){showKeyboard(target);}}}},true);document.addEventListener('pointerdown',function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){const target=(e.composedPath&&e.composedPath()[0])||e.target;const path=e.composedPath?e.composedPath():[e.target];const clickedInsideKeyboard=path.includes(keyboardContainer);const isInput=target.tagName==='INPUT';const isTextArea=target.tagName==='TEXTAREA';const isEditable=target.isContentEditable;const clickedOnInput=isInput||isTextArea||isEditable;if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}},true);console.log('Kiosk Virtual Keyboard Initialized (Shadow DOM & Rich Text Support).');})();"; + await session.send('Page.addScriptToEvaluateOnNewDocument', { source: kioskKeyboardScript }); //--- Tried something else in inputRouter without much success, reverting back to this await session.send('Page.startScreencast', { From db6ef8cfa0d8c09fb77c998f6dd5f3003d876707 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Wed, 4 Mar 2026 01:16:56 +1100 Subject: [PATCH 11/55] Update deviceManager.ts --- src/deviceManager.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index c1d3289..5411357 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -75,9 +75,9 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< // On-screen keyboard //const kioskKeyboardScript = "(function(){if(document.getElementById('kiosk-vkb-container'))return;const style=document.createElement('style');style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};let currentLayout='default';let activeInput=null;let isShifted=false;const keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';document.body.appendChild(keyboardContainer);function renderKeyboard(){keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);}function hideKeyboard(){keyboardContainer.classList.remove('vkb-visible');if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(activeInput!==target){showKeyboard(target);}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});renderKeyboard();})();"; - // first version did not wait for DOM, trying a second version now + // -- first version did not wait for DOM, trying a second version now /* - // This is the second attempt. This definitely makes things work, but I feel like the Javascript does not stay around persistently. + // -- This is the second attempt. This definitely makes things work, but I feel like the Javascript does not stay around persistently. const kioskKeyboardScript = "(function(){function initKeyboard(){if(document.getElementById('kiosk-vkb-container'))return;const style=document.createElement('style');style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};let currentLayout='default';let activeInput=null;let isShifted=false;const keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';document.body.appendChild(keyboardContainer);function renderKeyboard(){keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);}function hideKeyboard(){keyboardContainer.classList.remove('vkb-visible');if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(activeInput!==target){showKeyboard(target);}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});renderKeyboard();}if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',initKeyboard);}else{initKeyboard();}})();"; await session.send('Page.addScriptToEvaluateOnNewDocument', { source: kioskKeyboardScript @@ -85,13 +85,15 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< await session.send('Page.addScriptToEvaluateOnNewDocument', { source: "console.log('Injected onscreen keyboard JS and CSS.');" }); */ - // So trying something new this time: + // -- So trying something new this time: /* const kioskKeyboardScript = "(function(){if(window.__kioskKeyboardInitialized)return;window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head)return false;if(!document.getElementById('kiosk-vkb-style')){const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(ensureDOM()){if(activeInput!==target){showKeyboard(target);}}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});console.log('Kiosk Virtual Keyboard Initialized (CDP Mode Active).');})();"; await session.send('Page.addScriptToEvaluateOnNewDocument', { source: kioskKeyboardScript }); */ - // found out something new, #shadow-root is a bigger problem than I ever knew. lets try something else now: - const kioskKeyboardScript = "(function(){if(window.__kioskKeyboardInitialized)return;window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head)return false;if(!document.getElementById('kiosk-vkb-style')){const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=(e.composedPath&&e.composedPath()[0])||e.target;if(!target||!target.tagName)return;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';const isEditable=target.isContentEditable;if(isInput||isTextArea||isEditable){if(ensureDOM()){if(activeInput!==target){showKeyboard(target);}}}},true);document.addEventListener('pointerdown',function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){const target=(e.composedPath&&e.composedPath()[0])||e.target;const path=e.composedPath?e.composedPath():[e.target];const clickedInsideKeyboard=path.includes(keyboardContainer);const isInput=target.tagName==='INPUT';const isTextArea=target.tagName==='TEXTAREA';const isEditable=target.isContentEditable;const clickedOnInput=isInput||isTextArea||isEditable;if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}},true);console.log('Kiosk Virtual Keyboard Initialized (Shadow DOM & Rich Text Support).');})();"; + // -- found out something new, #shadow-root is a bigger problem than I ever knew. lets try something else now: + //const kioskKeyboardScript = "(function(){if(window.__kioskKeyboardInitialized)return;window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head)return false;if(!document.getElementById('kiosk-vkb-style')){const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=(e.composedPath&&e.composedPath()[0])||e.target;if(!target||!target.tagName)return;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';const isEditable=target.isContentEditable;if(isInput||isTextArea||isEditable){if(ensureDOM()){if(activeInput!==target){showKeyboard(target);}}}},true);document.addEventListener('pointerdown',function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){const target=(e.composedPath&&e.composedPath()[0])||e.target;const path=e.composedPath?e.composedPath():[e.target];const clickedInsideKeyboard=path.includes(keyboardContainer);const isInput=target.tagName==='INPUT';const isTextArea=target.tagName==='TEXTAREA';const isEditable=target.isContentEditable;const clickedOnInput=isInput||isTextArea||isEditable;if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}},true);console.log('Kiosk Virtual Keyboard Initialized (Shadow DOM & Rich Text Support).');})();"; + // -- so the above worked really well for standard Input and Textarea objects, but HA Textfields are super cooked + const kioskKeyboardScript = "(function(){if(window.__kioskKeyboardInitialized)return;window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head)return false;if(!document.getElementById('kiosk-vkb-style')){const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;i Date: Wed, 4 Mar 2026 07:40:30 +1100 Subject: [PATCH 12/55] Update deviceManager.ts --- src/deviceManager.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index 5411357..0633e64 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -90,10 +90,12 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< const kioskKeyboardScript = "(function(){if(window.__kioskKeyboardInitialized)return;window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head)return false;if(!document.getElementById('kiosk-vkb-style')){const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(ensureDOM()){if(activeInput!==target){showKeyboard(target);}}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});console.log('Kiosk Virtual Keyboard Initialized (CDP Mode Active).');})();"; await session.send('Page.addScriptToEvaluateOnNewDocument', { source: kioskKeyboardScript }); */ - // -- found out something new, #shadow-root is a bigger problem than I ever knew. lets try something else now: + // -- Found out something new, #shadow-root is a bigger problem than I ever knew. lets try something else now: //const kioskKeyboardScript = "(function(){if(window.__kioskKeyboardInitialized)return;window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head)return false;if(!document.getElementById('kiosk-vkb-style')){const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=(e.composedPath&&e.composedPath()[0])||e.target;if(!target||!target.tagName)return;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';const isEditable=target.isContentEditable;if(isInput||isTextArea||isEditable){if(ensureDOM()){if(activeInput!==target){showKeyboard(target);}}}},true);document.addEventListener('pointerdown',function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){const target=(e.composedPath&&e.composedPath()[0])||e.target;const path=e.composedPath?e.composedPath():[e.target];const clickedInsideKeyboard=path.includes(keyboardContainer);const isInput=target.tagName==='INPUT';const isTextArea=target.tagName==='TEXTAREA';const isEditable=target.isContentEditable;const clickedOnInput=isInput||isTextArea||isEditable;if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}},true);console.log('Kiosk Virtual Keyboard Initialized (Shadow DOM & Rich Text Support).');})();"; - // -- so the above worked really well for standard Input and Textarea objects, but HA Textfields are super cooked - const kioskKeyboardScript = "(function(){if(window.__kioskKeyboardInitialized)return;window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head)return false;if(!document.getElementById('kiosk-vkb-style')){const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;i','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head)return false;if(!document.getElementById('kiosk-vkb-style')){const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;i','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}const key=e.target.dataset.key;console.log('[VKB] Key pressed:',key);const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){console.log('[VKB] focusin event fired.',e.target);const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;i Date: Wed, 4 Mar 2026 13:06:48 +1100 Subject: [PATCH 13/55] Update deviceManager.ts --- src/deviceManager.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index 0633e64..9d11ab1 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -95,6 +95,8 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< // -- So the above worked really well for standard Input and Textarea objects, but HA Textfields are super cooked //const kioskKeyboardScript = "(function(){if(window.__kioskKeyboardInitialized)return;window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head)return false;if(!document.getElementById('kiosk-vkb-style')){const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;i','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}const key=e.target.dataset.key;console.log('[VKB] Key pressed:',key);const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){console.log('[VKB] focusin event fired.',e.target);const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;i','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}const key=e.target.dataset.key;console.log('[VKB] Key pressed:',key);const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){console.log('[VKB] focusin event fired.',e.target);const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;i Date: Wed, 4 Mar 2026 13:16:10 +1100 Subject: [PATCH 14/55] Update deviceManager.ts --- src/deviceManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index 9d11ab1..d1981a9 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -97,7 +97,7 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< // -- The above works hit and miss when it comes to HA input elements, so let's try closely follow console logs //const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}const key=e.target.dataset.key;console.log('[VKB] Key pressed:',key);const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){console.log('[VKB] focusin event fired.',e.target);const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;i','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}const key=e.target.dataset.key;console.log('[VKB] Key pressed:',key);const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){console.log('[VKB] focusin event fired.',e.target);const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;i','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}const key=e.target.dataset.key;console.log('[VKB] Key pressed:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function checkAndShowKeyboard(e){const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;iel&&el.id==='kiosk-vkb-container');if(isKeyboardClick){console.log('[VKB] Pointer down inside keyboard. Staying open.');return;}let clickedOnInput=false;for(let i=0;i Date: Wed, 4 Mar 2026 13:37:01 +1100 Subject: [PATCH 15/55] Update deviceManager.ts --- src/deviceManager.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index d1981a9..cd1c939 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -97,7 +97,9 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< // -- The above works hit and miss when it comes to HA input elements, so let's try closely follow console logs //const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}const key=e.target.dataset.key;console.log('[VKB] Key pressed:',key);const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){console.log('[VKB] focusin event fired.',e.target);const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;i','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}const key=e.target.dataset.key;console.log('[VKB] Key pressed:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function checkAndShowKeyboard(e){const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;iel&&el.id==='kiosk-vkb-container');if(isKeyboardClick){console.log('[VKB] Pointer down inside keyboard. Staying open.');return;}let clickedOnInput=false;for(let i=0;i','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}const key=e.target.dataset.key;console.log('[VKB] Key pressed:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function checkAndShowKeyboard(e){const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;iel&&el.id==='kiosk-vkb-container');if(isKeyboardClick){console.log('[VKB] Pointer down inside keyboard. Staying open.');return;}let clickedOnInput=false;for(let i=0;i tag absorbs everything. Trying some more click logic now: + const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;margin:0;border:none;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}const key=e.target.dataset.key;console.log('[VKB] Key pressed:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover&&!keyboardContainer.matches(':popover-open')){keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function checkAndShowKeyboard(e){const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;i=rect.top&&e.clientY<=rect.bottom&&e.clientX>=rect.left&&e.clientX<=rect.right){console.log('[VKB] Pointer down mathematically inside keyboard bounds. Staying open.');return;}const path=e.composedPath?e.composedPath():[e.target];let clickedOnInput=false;for(let i=0;i Date: Wed, 4 Mar 2026 13:50:40 +1100 Subject: [PATCH 16/55] Update deviceManager.ts --- src/deviceManager.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index cd1c939..8669bb0 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -99,7 +99,9 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< // -- The above made it clear that HA is hijacking the focusin event to the top level element, this stuffs up a lot of things //const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}const key=e.target.dataset.key;console.log('[VKB] Key pressed:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function checkAndShowKeyboard(e){const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;iel&&el.id==='kiosk-vkb-container');if(isKeyboardClick){console.log('[VKB] Pointer down inside keyboard. Staying open.');return;}let clickedOnInput=false;for(let i=0;i tag absorbs everything. Trying some more click logic now: - const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;margin:0;border:none;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}const key=e.target.dataset.key;console.log('[VKB] Key pressed:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover&&!keyboardContainer.matches(':popover-open')){keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function checkAndShowKeyboard(e){const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;i=rect.top&&e.clientY<=rect.bottom&&e.clientX>=rect.left&&e.clientX<=rect.right){console.log('[VKB] Pointer down mathematically inside keyboard bounds. Staying open.');return;}const path=e.composedPath?e.composedPath():[e.target];let clickedOnInput=false;for(let i=0;i','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;margin:0;border:none;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}const key=e.target.dataset.key;console.log('[VKB] Key pressed:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover&&!keyboardContainer.matches(':popover-open')){keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function checkAndShowKeyboard(e){const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;i=rect.top&&e.clientY<=rect.bottom&&e.clientX>=rect.left&&e.clientX<=rect.right){console.log('[VKB] Pointer down mathematically inside keyboard bounds. Staying open.');return;}const path=e.composedPath?e.composedPath():[e.target];let clickedOnInput=false;for(let i=0;i','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px !important;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover&&!keyboardContainer.matches(':popover-open')){keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function resolveInputFromPath(path){for(let i=0;i=rect.top&&e.clientY<=rect.bottom&&e.clientX>=rect.left&&e.clientX<=rect.right){console.log('[VKB] Pointer down mathematically inside keyboard bounds. Intercepting.');e.preventDefault();e.stopPropagation();const path=e.composedPath?e.composedPath():[e.target];let keyBtn=null;for(let i=0;i{keyBtn.style.background=originalBg;},100);processKey(key);}return;}const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside keyboard and input. Triggering hide.');hideKeyboard();}else{console.log('[VKB] Pointer down on an input. Staying open.');}}},true);console.log('[VKB] Initialization complete (Global Capture Bypass & Target Strict).');})();"; await session.send('Page.addScriptToEvaluateOnNewDocument', { source: kioskKeyboardScript }); //--- Tried something else in inputRouter without much success, reverting back to this From f555db4dcf43b2183de358dff6ae8a51c6ec8a4d Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Wed, 4 Mar 2026 14:08:12 +1100 Subject: [PATCH 17/55] Update deviceManager.ts --- src/deviceManager.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index 8669bb0..6ff1966 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -101,7 +101,9 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< // -- The above got the focus working most of the time, but clicking the keyboard stopped working. There is something to do with #top-layer and hoe the tag absorbs everything. Trying some more click logic now: //const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;margin:0;border:none;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}const key=e.target.dataset.key;console.log('[VKB] Key pressed:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover&&!keyboardContainer.matches(':popover-open')){keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function checkAndShowKeyboard(e){const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;i=rect.top&&e.clientY<=rect.bottom&&e.clientX>=rect.left&&e.clientX<=rect.right){console.log('[VKB] Pointer down mathematically inside keyboard bounds. Staying open.');return;}const path=e.composedPath?e.composedPath():[e.target];let clickedOnInput=false;for(let i=0;i','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px !important;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover&&!keyboardContainer.matches(':popover-open')){keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function resolveInputFromPath(path){for(let i=0;i=rect.top&&e.clientY<=rect.bottom&&e.clientX>=rect.left&&e.clientX<=rect.right){console.log('[VKB] Pointer down mathematically inside keyboard bounds. Intercepting.');e.preventDefault();e.stopPropagation();const path=e.composedPath?e.composedPath():[e.target];let keyBtn=null;for(let i=0;i{keyBtn.style.background=originalBg;},100);processKey(key);}return;}const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside keyboard and input. Triggering hide.');hideKeyboard();}else{console.log('[VKB] Pointer down on an input. Staying open.');}}},true);console.log('[VKB] Initialization complete (Global Capture Bypass & Target Strict).');})();"; + //const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px !important;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover&&!keyboardContainer.matches(':popover-open')){keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function resolveInputFromPath(path){for(let i=0;i=rect.top&&e.clientY<=rect.bottom&&e.clientX>=rect.left&&e.clientX<=rect.right){console.log('[VKB] Pointer down mathematically inside keyboard bounds. Intercepting.');e.preventDefault();e.stopPropagation();const path=e.composedPath?e.composedPath():[e.target];let keyBtn=null;for(let i=0;i{keyBtn.style.background=originalBg;},100);processKey(key);}return;}const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside keyboard and input. Triggering hide.');hideKeyboard();}else{console.log('[VKB] Pointer down on an input. Staying open.');}}},true);console.log('[VKB] Initialization complete (Global Capture Bypass & Target Strict).');})();"; + // -- Okay so the events and dialogs and popovers do all sorts of funky nonsense. We are not going the nuclear route. It's intercept and block ALL mouse and touch events when the keyboard is open lol + const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px !important;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover){if(keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function resolveInputFromPath(path){for(let i=0;i{document.addEventListener(ev,function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(ev==='pointerdown'||ev==='touchstart'){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<100))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;const originalBg=foundKey.style.background;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background=originalBg;},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Global Capture Bypass, Mathematical Hit-Test & Popover Bumping).');})();"; await session.send('Page.addScriptToEvaluateOnNewDocument', { source: kioskKeyboardScript }); //--- Tried something else in inputRouter without much success, reverting back to this From 18d8edc834b83203e9c4aa044c4231d10521cfa8 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Wed, 4 Mar 2026 14:53:45 +1100 Subject: [PATCH 18/55] Update deviceManager.ts --- src/deviceManager.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index 6ff1966..8367f9b 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -103,7 +103,9 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< // -- Our turn to hijack HA events //const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px !important;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover&&!keyboardContainer.matches(':popover-open')){keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function resolveInputFromPath(path){for(let i=0;i=rect.top&&e.clientY<=rect.bottom&&e.clientX>=rect.left&&e.clientX<=rect.right){console.log('[VKB] Pointer down mathematically inside keyboard bounds. Intercepting.');e.preventDefault();e.stopPropagation();const path=e.composedPath?e.composedPath():[e.target];let keyBtn=null;for(let i=0;i{keyBtn.style.background=originalBg;},100);processKey(key);}return;}const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside keyboard and input. Triggering hide.');hideKeyboard();}else{console.log('[VKB] Pointer down on an input. Staying open.');}}},true);console.log('[VKB] Initialization complete (Global Capture Bypass & Target Strict).');})();"; // -- Okay so the events and dialogs and popovers do all sorts of funky nonsense. We are not going the nuclear route. It's intercept and block ALL mouse and touch events when the keyboard is open lol - const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px !important;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover){if(keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function resolveInputFromPath(path){for(let i=0;i{document.addEventListener(ev,function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(ev==='pointerdown'||ev==='touchstart'){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<100))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;const originalBg=foundKey.style.background;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background=originalBg;},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Global Capture Bypass, Mathematical Hit-Test & Popover Bumping).');})();"; + // *** const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px !important;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover){if(keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function resolveInputFromPath(path){for(let i=0;i{document.addEventListener(ev,function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(ev==='pointerdown'||ev==='touchstart'){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<100))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;const originalBg=foundKey.style.background;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background=originalBg;},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Global Capture Bypass, Mathematical Hit-Test & Popover Bumping).');})();"; + // -- *** SUCCESS - the above worked really nicely. now adding a few more finishing touches - adding a red down arrow to hide the keyboard manually + const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px !important;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','⌫','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover){if(keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function resolveInputFromPath(path){for(let i=0;i{document.addEventListener(ev,function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(ev==='pointerdown'||ev==='touchstart'){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<100))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;const originalBg=foundKey.style.background;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background=originalBg;},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Global Capture Bypass, Mathematical Hit-Test & Popover Bumping).');})();"; await session.send('Page.addScriptToEvaluateOnNewDocument', { source: kioskKeyboardScript }); //--- Tried something else in inputRouter without much success, reverting back to this From 78baf311a439ab4b0638980ac62ce8ef9a1365d3 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Wed, 4 Mar 2026 17:07:15 +1100 Subject: [PATCH 19/55] Update deviceManager.ts --- src/deviceManager.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index 8367f9b..7b87cb5 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -105,7 +105,9 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< // -- Okay so the events and dialogs and popovers do all sorts of funky nonsense. We are not going the nuclear route. It's intercept and block ALL mouse and touch events when the keyboard is open lol // *** const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px !important;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover){if(keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function resolveInputFromPath(path){for(let i=0;i{document.addEventListener(ev,function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(ev==='pointerdown'||ev==='touchstart'){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<100))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;const originalBg=foundKey.style.background;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background=originalBg;},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Global Capture Bypass, Mathematical Hit-Test & Popover Bumping).');})();"; // -- *** SUCCESS - the above worked really nicely. now adding a few more finishing touches - adding a red down arrow to hide the keyboard manually - const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px !important;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','⌫','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover){if(keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function resolveInputFromPath(path){for(let i=0;i{document.addEventListener(ev,function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(ev==='pointerdown'||ev==='touchstart'){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<100))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;const originalBg=foundKey.style.background;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background=originalBg;},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Global Capture Bypass, Mathematical Hit-Test & Popover Bumping).');})();"; + //const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px !important;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','⌫','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover){if(keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function resolveInputFromPath(path){for(let i=0;i{document.addEventListener(ev,function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(ev==='pointerdown'||ev==='touchstart'){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<100))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;const originalBg=foundKey.style.background;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background=originalBg;},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Global Capture Bypass, Mathematical Hit-Test & Popover Bumping).');})();"; + // -- The above has a debounce issue where the same key keeps getting clicked + const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-backspace{font-size:2.2rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='⌫'){keyBtn.classList.add('vkb-key-backspace');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{document.addEventListener(ev,function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(['pointerdown','touchstart','mousedown','click'].includes(ev)){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<250))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background='';},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Global Capture Bypass, Mathematical Hit-Test & Popover Bumping).');})();"; await session.send('Page.addScriptToEvaluateOnNewDocument', { source: kioskKeyboardScript }); //--- Tried something else in inputRouter without much success, reverting back to this From 8277d0f1f43987662b25515b7b51a8fe42ea2a1b Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Thu, 5 Mar 2026 12:18:33 +1100 Subject: [PATCH 20/55] Update deviceManager.ts --- src/deviceManager.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index 7b87cb5..95a6e56 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -107,7 +107,9 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< // -- *** SUCCESS - the above worked really nicely. now adding a few more finishing touches - adding a red down arrow to hide the keyboard manually //const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px !important;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','⌫','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover){if(keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function resolveInputFromPath(path){for(let i=0;i{document.addEventListener(ev,function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(ev==='pointerdown'||ev==='touchstart'){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<100))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;const originalBg=foundKey.style.background;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background=originalBg;},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Global Capture Bypass, Mathematical Hit-Test & Popover Bumping).');})();"; // -- The above has a debounce issue where the same key keeps getting clicked - const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-backspace{font-size:2.2rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='⌫'){keyBtn.classList.add('vkb-key-backspace');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{document.addEventListener(ev,function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(['pointerdown','touchstart','mousedown','click'].includes(ev)){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<250))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background='';},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Global Capture Bypass, Mathematical Hit-Test & Popover Bumping).');})();"; + //const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-backspace{font-size:2.2rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='⌫'){keyBtn.classList.add('vkb-key-backspace');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{document.addEventListener(ev,function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(['pointerdown','touchstart','mousedown','click'].includes(ev)){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<250))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background='';},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Global Capture Bypass, Mathematical Hit-Test & Popover Bumping).');})();"; + // -- The debounce above worked really well for mistriggered double clicks on the keyboard. Noticed the same issue is there with the keyboard minimise, this fixed below + const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-backspace{font-size:2.2rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='⌫'){keyBtn.classList.add('vkb-key-backspace');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{document.addEventListener(ev,function(e){if(window.__vkbClosingShield&&(Date.now()-window.__vkbClosingShield<400)){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();return;}if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(['pointerdown','touchstart','mousedown','click'].includes(ev)){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<250))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background='';},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Ghost-Click Shield Active).');})();"; await session.send('Page.addScriptToEvaluateOnNewDocument', { source: kioskKeyboardScript }); //--- Tried something else in inputRouter without much success, reverting back to this From 9b0934475f666478e4f96271b9dbda95b1bdbe62 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Fri, 6 Mar 2026 22:12:00 +1100 Subject: [PATCH 21/55] Update README.md --- README.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e18fbb1..b0468e6 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,28 @@ Headless browser that renders target web pages (e.g., Home Assistant dashboards) ![Remote WebView](/images/tiled_preview.png) +# About this fork + +The modifications done in my fork is simple: provide an on-screen Latin Alphabet / English keyboard so I can do some basic keyentries on my ESP32 powered touch display. + +There is literally no setup required on this one, I have been lazy and haven't even put together any ENVIRONMENT variables to enable/disable the keyboard. + +All you need to do to trial this is to point your Docker Compose file at this GitHub repo (full example code below from Strange-V's hard work). + +If you find any bugs please let me know. I might be able to fix things, but if you have a fix yourself, please put in a PR. + +```yaml +services: + rwvserver: + #image: strangev/remote-webview-server:latest # use :beta for pre-release + build: https://github.com/SleepinDevil/RemoteWebViewServer.git # this line and commenting out the above line is all you need to do to try this + container_name: remote-webview-server + restart: unless-stopped + #### rest of code is all exactly the same +``` + +Unminified Javascript for those of you who are curious: + ## Features - Renders pages in a headless Chromium environment and streams diffs as tiles over WebSocket. @@ -42,7 +64,8 @@ You can pin a stable release (`1.4.0`) or track channels (`latest`, `beta`) depe ```yaml services: rwvserver: - image: strangev/remote-webview-server:latest # use :beta for pre-release + #image: strangev/remote-webview-server:latest # use :beta for pre-release + build: https://github.com/SleepinDevil/RemoteWebViewServer.git container_name: remote-webview-server restart: unless-stopped environment: From 72d97d1ba70b5a63f9badcec97274b3c8a73c7af Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Fri, 6 Mar 2026 22:12:58 +1100 Subject: [PATCH 22/55] Create unminified-keyboard-for-information-only.js --- unminified-keyboard-for-information-only.js | 542 ++++++++++++++++++++ 1 file changed, 542 insertions(+) create mode 100644 unminified-keyboard-for-information-only.js diff --git a/unminified-keyboard-for-information-only.js b/unminified-keyboard-for-information-only.js new file mode 100644 index 0000000..2a5c098 --- /dev/null +++ b/unminified-keyboard-for-information-only.js @@ -0,0 +1,542 @@ +/** + * ============================================================================ + * KIOSK VIRTUAL KEYBOARD - HOME ASSISTANT / CDP OPTIMIZED + * ============================================================================ + * * HISTORY & TRIBULATIONS: + * This script evolved through a brutal gauntlet of browser edge-cases: + * 1. CDP Timing: Script had to be lazy-loaded to survive Single Page App (SPA) body wipes. + * 2. Shadow DOM: Home Assistant's hid inputs from standard event targets. + * 3. Rich Text / CodeMirror: HA's YAML editor required direct DOM execCommands and focus-kicking. + * 4. The #top-layer Bug: HA's elements sat above standard z-index. Solved via Popover API. + * 5. Event Swallowing: HA's top-level components called stopPropagation() on clicks. Solved via Mathematical Hit-Testing. + * 6. Ghost Clicks: Touchscreens firing rapid touchend/mousedown/click events caused through-clicks. Solved via 400ms Shield. + * 7. Websocket Jitter: Rapid double-taps over CDP/remote connections. Solved via 250ms Debounce. + */ + +(function() { + console.log('[VKB] Script injected. Initializing...'); + + // Prevent duplicate injections if CDP evaluates this script multiple times + if (window.__kioskKeyboardInitialized) { + console.log('[VKB] Already initialized. Aborting duplicate injection.'); + return; + } + window.__kioskKeyboardInitialized = true; + + // --- State Variables --- + let keyboardContainer = null; + let currentLayout = 'default'; + let activeInput = null; + let isShifted = false; + + // --- Keyboard Layouts --- + // Includes Linux-inspired functional keys, extended symbols, and a dedicated Hide (▼) key. + const layouts = { + default: [ + ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'], + ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'], + ['⇧', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '⌫'], + ['▼', '?123', ',', '◀', 'Space', '▶', '.', '⏎'] + ], + shift: [ + ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'], + ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L'], + ['⇧', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '⌫'], + ['▼', '?123', ',', '◀', 'Space', '▶', '.', '⏎'] + ], + symbols: [ + ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'], + ['@', '#', '$', '%', '&', '*', '-', '+', '(', ')'], + ['ABC', '!', '"', "'", ':', ';', '/', '?', '⌫'], + ['▼', '=\\<', ',', '◀', 'Space', '▶', '.', '⏎'] + ], + extended: [ + ['~', '|', '^', '_', '=', '{', '}', '[', ']','✓'], + ['<', '>', '£', '€', '¢', '°', '±', '÷', '×', '\\'], + ['?123', '↹', '©', '®', '™', '¿', '¡', '§', '⌫'], + ['▼', 'ABC', ',', '◀', 'Space', '▶', '.', '⏎'] + ] + }; + + /** + * DOM INITIALIZATION (LAZY LOADED) + * We don't build the HTML/CSS until the very last second (when an input is clicked). + * This protects us against SPA frameworks like Lit/React wiping the document.body on initial load. + */ + function ensureDOM() { + if (!document.body || !document.head) { + console.warn('[VKB] document.body or head not ready.'); + return false; + } + + // 1. Inject CSS Overrides + if (!document.getElementById('kiosk-vkb-style')) { + console.log('[VKB] Injecting CSS overrides.'); + const style = document.createElement('style'); + style.id = 'kiosk-vkb-style'; + + // NOTE ON !IMPORTANT: Home Assistant uses aggressive global resets. + // NOTE ON POPOVER: We use display: flex hooked to :popover-open to utilize the #top-layer API. + style.textContent = ` + #kiosk-vkb-container { + position: fixed !important; + top: auto !important; + bottom: -500px !important; + left: 0 !important; + right: 0 !important; + margin: 0 !important; + width: 100% !important; + background: #1e1e1e; + border-top: 2px solid #333; + z-index: 2147483647; + display: flex; + flex-direction: column; + padding: 4px; + box-sizing: border-box; + user-select: none; + -webkit-user-select: none; + font-family: 'DejaVu Sans', 'Liberation Sans', Ubuntu, Roboto, sans-serif; + touch-action: manipulation; + border: none; + } + #kiosk-vkb-container:popover-open { + display: flex; + } + #kiosk-vkb-container.vkb-visible { + bottom: 0 !important; + } + .vkb-row { + display: flex; + justify-content: center; + margin-bottom: 4px; + width: 100%; + gap: 4px; + } + .vkb-row:last-child { + margin-bottom: 0; + } + .vkb-key { + flex: 1; + height: 44px; + background: #383838; + color: #f8f8f2; + border: 1px solid #2a2a2a; + border-radius: 2px; + font-size: 1.4rem; + font-weight: normal; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + padding: 0; + } + .vkb-key:active { background: #555555; } + .vkb-key-layout { background: #324a5f; color: #e2e8f0; font-size: 1.1rem; } + .vkb-key-layout:active { background: #233544; } + .vkb-key-special { background: #485c4a; color: #e2e8f0; font-size: 1.3rem; } + .vkb-key-special:active { background: #364538; } + .vkb-key-large-icon { font-size: 1.8rem; } + .vkb-key-backspace { font-size: 2.2rem; } + .vkb-key-hide { background: #8b3a3a; color: #e2e8f0; font-size: 1.5rem; } + .vkb-key-hide:active { background: #6b2a2a; } + .vkb-key-enter { background: #E95420; color: #ffffff; border-color: #c94618; font-size: 1.5rem; } + .vkb-key-enter:active { background: #c94618; } + .vkb-key-space { flex: 3; } + .vkb-key-arrow { flex: 0.8; } + `; + document.head.appendChild(style); + } + + // 2. Inject HTML Container (Using Popover API) + if (!keyboardContainer) { + console.log('[VKB] Creating keyboard DOM elements.'); + keyboardContainer = document.createElement('div'); + keyboardContainer.id = 'kiosk-vkb-container'; + // Enable the Popover API to break out of all z-index stacking contexts + if (keyboardContainer.popover !== undefined) { + keyboardContainer.popover = 'manual'; + } + renderKeyboard(); + } + + // 3. Framework Resistance: Re-attach if HA destroyed it + if (!document.body.contains(keyboardContainer)) { + console.log('[VKB] Appending keyboard to body.'); + document.body.appendChild(keyboardContainer); + } + + return true; + } + + /** + * KEYBOARD RENDERER + * Dynamically builds the DOM nodes based on the current layout state. + */ + function renderKeyboard() { + if (!keyboardContainer) return; + keyboardContainer.innerHTML = ''; + const layout = layouts[currentLayout]; + + layout.forEach(row => { + const rowDiv = document.createElement('div'); + rowDiv.className = 'vkb-row'; + + row.forEach(key => { + const keyBtn = document.createElement('button'); + keyBtn.className = 'vkb-key'; + keyBtn.textContent = key === 'Space' ? '' : key; + keyBtn.dataset.key = key; + + // Apply semantic CSS classes + if (['?123', 'ABC', '=\\<'].includes(key)) keyBtn.classList.add('vkb-key-layout'); + if (['⇧', '⌫', '◀', '▶', '↹'].includes(key)) keyBtn.classList.add('vkb-key-special'); + if (['⇧', '↹'].includes(key)) keyBtn.classList.add('vkb-key-large-icon'); + if (key === '⌫') keyBtn.classList.add('vkb-key-backspace'); + if (key === '▼') keyBtn.classList.add('vkb-key-hide'); + if (key === 'Space') keyBtn.classList.add('vkb-key-space'); + if (key === '◀' || key === '▶') keyBtn.classList.add('vkb-key-arrow'); + if (key === '⏎') keyBtn.classList.add('vkb-key-enter'); + + // Shift State Highlight + if (key === '⇧' && isShifted) { + keyBtn.style.background = '#e2e8f0'; + keyBtn.style.color = '#121212'; + } + + // NOTE: We DO NOT attach mousedown/touchstart listeners here anymore. + // The Master Event Shield handles interaction globally to prevent HA from swallowing clicks. + rowDiv.appendChild(keyBtn); + }); + keyboardContainer.appendChild(rowDiv); + }); + } + + /** + * CORE LOGIC: PROCESS KEYPRESS + * Handles typing, cursor manipulation, and CodeMirror (Rich Text) integrations. + */ + function processKey(key) { + if (!activeInput) { + console.warn('[VKB] Key pressed but activeInput is null.'); + return; + } + console.log('[VKB] Processing key:', key); + + // KICKSTAND: Wake up CodeMirror or dormant HA inputs before typing + if (typeof activeInput.focus === 'function') { + activeInput.focus(); + } + + // Helper to insert text at the exact cursor position + const insertText = (text) => { + if (activeInput.isContentEditable) { + // The only reliable way to inject into CodeMirror/Rich text + document.execCommand('insertText', false, text); + } else { + // Standard input string slicing + let val = activeInput.value || ''; + let start = activeInput.selectionStart || 0; + let end = activeInput.selectionEnd || 0; + activeInput.value = val.substring(0, start) + text + val.substring(end); + activeInput.selectionStart = activeInput.selectionEnd = start + text.length; + } + }; + + switch (key) { + case '▼': + hideKeyboard(); + break; + case '⇧': + isShifted = !isShifted; + currentLayout = isShifted ? 'shift' : 'default'; + renderKeyboard(); + break; + case '?123': + currentLayout = 'symbols'; + isShifted = false; + renderKeyboard(); + break; + case 'ABC': + currentLayout = 'default'; + isShifted = false; + renderKeyboard(); + break; + case '=\\<': + currentLayout = 'extended'; + isShifted = false; + renderKeyboard(); + break; + case '↹': + insertText('\t'); + break; + case '⌫': + if (activeInput.isContentEditable) { + document.execCommand('delete', false, null); + } else { + let val = activeInput.value || ''; + let start = activeInput.selectionStart || 0; + let end = activeInput.selectionEnd || 0; + if (start === end && start > 0) { + activeInput.value = val.substring(0, start - 1) + val.substring(end); + activeInput.selectionStart = activeInput.selectionEnd = start - 1; + } else if (start !== end) { + activeInput.value = val.substring(0, start) + val.substring(end); + activeInput.selectionStart = activeInput.selectionEnd = start; + } + } + break; + case 'Space': + insertText(' '); + break; + case '◀': + if (!activeInput.isContentEditable) { + let start = activeInput.selectionStart || 0; + if (start > 0) activeInput.selectionStart = activeInput.selectionEnd = start - 1; + } + break; + case '▶': + if (!activeInput.isContentEditable) { + let end = activeInput.selectionEnd || 0; + let valLen = (activeInput.value || '').length; + if (end < valLen) activeInput.selectionStart = activeInput.selectionEnd = end + 1; + } + break; + case '⏎': + if (activeInput.isContentEditable) { + document.execCommand('insertParagraph', false, null); + } else if (activeInput.tagName === 'TEXTAREA') { + insertText('\n'); + } else { + // Try to natively submit forms, or dispatch an Enter event to trick JS listeners + if (activeInput.form) { + if (typeof activeInput.form.requestSubmit === 'function') { + activeInput.form.requestSubmit(); + } else { + activeInput.form.submit(); + } + } else { + const enterEvent = new KeyboardEvent('keydown', { + key: 'Enter', code: 'Enter', keyCode: 13, bubbles: true, composed: true + }); + activeInput.dispatchEvent(enterEvent); + } + hideKeyboard(); + } + break; + default: + if (key) { + insertText(key); + if (isShifted) { + isShifted = false; + currentLayout = 'default'; + renderKeyboard(); + } + } + break; + } + + // Framework hydration (Tell Lit/React that the state has changed) + // Note: composed: true allows the event to escape the Shadow DOM + if (key !== '⏎' && key !== '▼') { + activeInput.dispatchEvent(new Event('input', { bubbles: true, composed: true })); + activeInput.dispatchEvent(new Event('change', { bubbles: true, composed: true })); + } + } + + /** + * VISIBILITY CONTROLS + */ + function showKeyboard(inputElement) { + console.log('[VKB] showKeyboard triggered for:', inputElement); + activeInput = inputElement; + renderKeyboard(); + + // THE Z-BUMP: If already open, close and reopen to force the browser to restack + // it above any newly opened Home Assistant elements in the #top-layer. + if (keyboardContainer.showPopover) { + if (keyboardContainer.matches(':popover-open')) { + keyboardContainer.hidePopover(); + } + keyboardContainer.showPopover(); + } + + keyboardContainer.classList.add('vkb-visible'); + + // Instant scroll jump (no smooth animation for performance) + if (activeInput && activeInput.scrollIntoView) { + activeInput.scrollIntoView({ behavior: 'auto', block: 'center' }); + } + } + + function hideKeyboard() { + console.log('[VKB] hideKeyboard triggered. Activating ghost-click shield.'); + + // GHOST-CLICK SHIELD TRIGGER + // Touch screens send a delayed "click" event after pointerdown. We set a 400ms + // deadzone to prevent that click from falling through to HA elements beneath us. + window.__vkbClosingShield = Date.now(); + + if (keyboardContainer) { + keyboardContainer.classList.remove('vkb-visible'); + if (keyboardContainer.hidePopover && keyboardContainer.matches(':popover-open')) { + keyboardContainer.hidePopover(); + } + } + + if (activeInput && activeInput.blur) { + activeInput.blur(); + } + activeInput = null; + isShifted = false; + currentLayout = 'default'; + } + + /** + * SHADOW ROOT PIERCER + * Iterates through the raw click path (bypassing HA's event retargeting). + * Automatically hunts inside specific Web Components to find the hidden inner inputs. + */ + const validTypes = ['text', 'email', 'number', 'password', 'search', 'tel', 'url']; + + function resolveInputFromPath(path) { + for (let i = 0; i < path.length; i++) { + let el = path[i]; + if (!el || !el.tagName) continue; + + let t = el.tagName.toUpperCase(); + + // Standard Inputs + if (t === 'INPUT' && validTypes.includes(el.type)) return el; + if (t === 'TEXTAREA' || el.isContentEditable || (el.classList && el.classList.contains('cm-content'))) return el; + + // Home Assistant Specific Wrappers + if (t === 'HA-TEXTFIELD' || t === 'HA-SEARCH-INPUT' || t === 'HA-CODE-EDITOR' || t === 'HA-SELECTOR-TEXT') { + let inner = el.shadowRoot ? el.shadowRoot.querySelector('input, textarea, [contenteditable="true"], .cm-content') : null; + if (inner) return inner; + } + } + return null; // Clicked on something that doesn't accept text + } + + /** + * GENERAL FOCUS HANDLER + */ + function checkAndShowKeyboard(e) { + // e.composedPath() is mandatory for Shadow DOM + const path = e.composedPath ? e.composedPath() : [e.target]; + const targetInput = resolveInputFromPath(path); + + if (targetInput) { + console.log('[VKB] Valid DOM element found via', e.type, ':', targetInput); + if (ensureDOM()) { + const isVisible = keyboardContainer && keyboardContainer.classList.contains('vkb-visible'); + // If it's a new input, or the same input but the keyboard is currently hidden, show it! + if (activeInput !== targetInput || !isVisible) { + showKeyboard(targetInput); + } else { + console.log('[VKB] Element already active and visible. Ignoring.'); + } + } + } else { + if (e.type === 'focusin') console.log('[VKB] focusin ignored: Target is not a valid input.'); + } + } + + // Attach base focus/click listeners to the document + document.addEventListener('focusin', checkAndShowKeyboard, true); + document.addEventListener('click', checkAndShowKeyboard, true); + + /** + * THE MASTER EVENT SHIELD + * The most critical piece of the architecture. We listen to ALL interaction events + * at the top 'useCapture: true' phase to intercept them before Home Assistant can. + */ + const interactionEvents = ['pointerdown', 'pointerup', 'mousedown', 'mouseup', 'click', 'touchstart', 'touchend']; + + interactionEvents.forEach(ev => { + document.addEventListener(ev, function(e) { + + // 1. Ghost-Click Shield (Active for 400ms after closing) + if (window.__vkbClosingShield && (Date.now() - window.__vkbClosingShield < 400)) { + e.preventDefault(); + e.stopPropagation(); + e.stopImmediatePropagation(); + return; + } + + if (keyboardContainer && keyboardContainer.classList.contains('vkb-visible')) { + + // Extract physical touch coordinates (X/Y) + let x = e.clientX; + let y = e.clientY; + if (x === undefined && e.changedTouches && e.changedTouches.length > 0) { + x = e.changedTouches[0].clientX; + y = e.changedTouches[0].clientY; + } + if (x === undefined || y === undefined) return; + + // 2. The Mathematical Bounds Check + // Bypasses DOM-based hit testing entirely. If you touched the screen + // inside the keyboard's geographic territory, we intercept it. + const rect = keyboardContainer.getBoundingClientRect(); + if (y >= rect.top && y <= rect.bottom && x >= rect.left && x <= rect.right) { + + // MURDER THE EVENT: Do not let HA know a click happened. + e.preventDefault(); + e.stopPropagation(); + e.stopImmediatePropagation(); + + // Only process keypress logic on the initial down-touch + if (['pointerdown', 'touchstart', 'mousedown', 'click'].includes(ev)) { + + // 3. The Websocket Jitter Debounce + // Prevent rapid double-clicks from misfiring the same key. + if (window.__vkbLastTap && (Date.now() - window.__vkbLastTap < 250)) return; + window.__vkbLastTap = Date.now(); + + // Mathematically determine which specific key was pressed + const keys = keyboardContainer.querySelectorAll('.vkb-key'); + let foundKey = null; + for (let i = 0; i < keys.length; i++) { + const kRect = keys[i].getBoundingClientRect(); + if (y >= kRect.top && y <= kRect.bottom && x >= kRect.left && x <= kRect.right) { + foundKey = keys[i]; + break; + } + } + + if (foundKey) { + const key = foundKey.dataset.key; + + // Visual Feedback (Clean style reset) + foundKey.style.background = '#555'; + setTimeout(() => { + foundKey.style.background = ''; // Wipe inline style to revert to CSS classes + }, 100); + + processKey(key); + } + } + return; // Exit out of the interaction listener + } + + // 4. Outside Click Detection (Hide trigger) + // If we reach here, the user tapped OUTSIDE the geographic bounds of the keyboard. + if (ev === 'pointerdown') { + const path = e.composedPath ? e.composedPath() : [e.target]; + const clickedOnInput = resolveInputFromPath(path) !== null; + + if (!clickedOnInput) { + console.log('[VKB] Pointer down outside. Hiding.'); + hideKeyboard(); + } else { + console.log('[VKB] Pointer down on input. Staying open.'); + } + } + } + }, true); // useCapture: true is REQUIRED to beat the SPA event delegation + }); + + console.log('[VKB] Initialization complete (Global Capture Bypass, Mathematical Hit-Test & Popover Bumping).'); + +})(); From fd2431dc951a3def808d07e4f758763b38cd3138 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Fri, 6 Mar 2026 22:13:52 +1100 Subject: [PATCH 23/55] Update README.md --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index b0468e6..5ee9588 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,3 @@ -[![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct-single.svg)](https://stand-with-ukraine.pp.ua) - -# Remote WebView Server - -Headless browser that renders target web pages (e.g., Home Assistant dashboards) and streams them as image tiles over WebSocket to lightweight [clients](https://github.com/strange-v/RemoteWebViewClient) (ESP32 displays). The server supports multiple simultaneous clients, each with its own screen resolution, orientation, and per-device settings. - -![Remote WebView](/images/tiled_preview.png) - # About this fork The modifications done in my fork is simple: provide an on-screen Latin Alphabet / English keyboard so I can do some basic keyentries on my ESP32 powered touch display. @@ -26,7 +18,15 @@ services: #### rest of code is all exactly the same ``` -Unminified Javascript for those of you who are curious: +Raw Javascript that is being injected for those of you who are curious: https://github.com/SleepinDevil/RemoteWebViewServer/blob/main/unminified-keyboard-for-information-only.js + +[![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct-single.svg)](https://stand-with-ukraine.pp.ua) + +# Remote WebView Server + +Headless browser that renders target web pages (e.g., Home Assistant dashboards) and streams them as image tiles over WebSocket to lightweight [clients](https://github.com/strange-v/RemoteWebViewClient) (ESP32 displays). The server supports multiple simultaneous clients, each with its own screen resolution, orientation, and per-device settings. + +![Remote WebView](/images/tiled_preview.png) ## Features From b88c5ed219f0eec53d73d18f931e127e23df66a2 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Fri, 6 Mar 2026 22:14:33 +1100 Subject: [PATCH 24/55] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 5ee9588..2dc8f7e 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,8 @@ services: Raw Javascript that is being injected for those of you who are curious: https://github.com/SleepinDevil/RemoteWebViewServer/blob/main/unminified-keyboard-for-information-only.js +# Original description from Strange-V below + [![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct-single.svg)](https://stand-with-ukraine.pp.ua) # Remote WebView Server From ebc4c42a276092b2f5f1932ff126dd6eb45172c7 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Sat, 7 Mar 2026 00:09:59 +1100 Subject: [PATCH 25/55] Update deviceManager.ts --- src/deviceManager.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index 95a6e56..6b19220 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -109,7 +109,9 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< // -- The above has a debounce issue where the same key keeps getting clicked //const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-backspace{font-size:2.2rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='⌫'){keyBtn.classList.add('vkb-key-backspace');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{document.addEventListener(ev,function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(['pointerdown','touchstart','mousedown','click'].includes(ev)){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<250))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background='';},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Global Capture Bypass, Mathematical Hit-Test & Popover Bumping).');})();"; // -- The debounce above worked really well for mistriggered double clicks on the keyboard. Noticed the same issue is there with the keyboard minimise, this fixed below - const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-backspace{font-size:2.2rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='⌫'){keyBtn.classList.add('vkb-key-backspace');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{document.addEventListener(ev,function(e){if(window.__vkbClosingShield&&(Date.now()-window.__vkbClosingShield<400)){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();return;}if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(['pointerdown','touchstart','mousedown','click'].includes(ev)){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<250))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background='';},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Ghost-Click Shield Active).');})();"; + //const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-backspace{font-size:2.2rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='⌫'){keyBtn.classList.add('vkb-key-backspace');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{document.addEventListener(ev,function(e){if(window.__vkbClosingShield&&(Date.now()-window.__vkbClosingShield<400)){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();return;}if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(['pointerdown','touchstart','mousedown','click'].includes(ev)){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<250))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background='';},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Ghost-Click Shield Active).');})();"; + // -- My previous implementation of the ENTER key was narrowminded and caused issues with FORM elements that I did not see coming, trying something new now + const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-backspace{font-size:2.2rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='⌫'){keyBtn.classList.add('vkb-key-backspace');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{document.addEventListener(ev,function(e){if(window.__vkbClosingShield&&(Date.now()-window.__vkbClosingShield<400)){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();return;}if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(['pointerdown','touchstart','mousedown','click'].includes(ev)){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<250))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background='';},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Ghost-Click Shield Active).');})();"; await session.send('Page.addScriptToEvaluateOnNewDocument', { source: kioskKeyboardScript }); //--- Tried something else in inputRouter without much success, reverting back to this From ab8c898f35b685141204150e5ac43a5e6cd35ae9 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Sat, 7 Mar 2026 00:10:22 +1100 Subject: [PATCH 26/55] Update unminified-keyboard-for-information-only.js --- unminified-keyboard-for-information-only.js | 27 +++++++++++---------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/unminified-keyboard-for-information-only.js b/unminified-keyboard-for-information-only.js index 2a5c098..b134ddd 100644 --- a/unminified-keyboard-for-information-only.js +++ b/unminified-keyboard-for-information-only.js @@ -11,6 +11,8 @@ * 5. Event Swallowing: HA's top-level components called stopPropagation() on clicks. Solved via Mathematical Hit-Testing. * 6. Ghost Clicks: Touchscreens firing rapid touchend/mousedown/click events caused through-clicks. Solved via 400ms Shield. * 7. Websocket Jitter: Rapid double-taps over CDP/remote connections. Solved via 250ms Debounce. + * 8. Enter Key vs SPA Forms: Forcing native form.submit() broke SPA API authentication sequences. + * Solved by dispatching fully simulated keydown/keypress/keyup sequences. */ (function() { @@ -304,22 +306,21 @@ case '⏎': if (activeInput.isContentEditable) { document.execCommand('insertParagraph', false, null); + // Explicitly notify that content changed + activeInput.dispatchEvent(new Event('input', { bubbles: true, composed: true })); } else if (activeInput.tagName === 'TEXTAREA') { insertText('\n'); + activeInput.dispatchEvent(new Event('input', { bubbles: true, composed: true })); + activeInput.dispatchEvent(new Event('change', { bubbles: true, composed: true })); } else { - // Try to natively submit forms, or dispatch an Enter event to trick JS listeners - if (activeInput.form) { - if (typeof activeInput.form.requestSubmit === 'function') { - activeInput.form.requestSubmit(); - } else { - activeInput.form.submit(); - } - } else { - const enterEvent = new KeyboardEvent('keydown', { - key: 'Enter', code: 'Enter', keyCode: 13, bubbles: true, composed: true - }); - activeInput.dispatchEvent(enterEvent); - } + // MODERN SPA SUBMISSION HOOK + // Do NOT use activeInput.form.submit(). It triggers a native HTTP POST that bypasses + // Javascript-based authentication validation (like HA Login sequences). + // Instead, simulate a physical Enter keystroke. Lit/React look for exactly this. + const evInit = { key: 'Enter', code: 'Enter', keyCode: 13, which: 13, bubbles: true, composed: true, cancelable: true }; + activeInput.dispatchEvent(new KeyboardEvent('keydown', evInit)); + activeInput.dispatchEvent(new KeyboardEvent('keypress', evInit)); + activeInput.dispatchEvent(new KeyboardEvent('keyup', evInit)); hideKeyboard(); } break; From f5c58ed803d041cf596a2cfce37dcb08972b7c0f Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Sat, 7 Mar 2026 00:14:36 +1100 Subject: [PATCH 27/55] Update unminified-keyboard-for-information-only.js --- unminified-keyboard-for-information-only.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/unminified-keyboard-for-information-only.js b/unminified-keyboard-for-information-only.js index b134ddd..55f44d8 100644 --- a/unminified-keyboard-for-information-only.js +++ b/unminified-keyboard-for-information-only.js @@ -13,6 +13,8 @@ * 7. Websocket Jitter: Rapid double-taps over CDP/remote connections. Solved via 250ms Debounce. * 8. Enter Key vs SPA Forms: Forcing native form.submit() broke SPA API authentication sequences. * Solved by dispatching fully simulated keydown/keypress/keyup sequences. + * 9. Opening Ghost Clicks: Tapping low inputs caused the trailing click to hit the newly spawned keyboard. + * Solved via 400ms Opening Shield to absorb residual touch events. */ (function() { @@ -352,6 +354,9 @@ activeInput = inputElement; renderKeyboard(); + // OPENING SHIELD: Prevent trailing events from the initial tap from hitting a key + window.__vkbOpeningShield = Date.now(); + // THE Z-BUMP: If already open, close and reopen to force the browser to restack // it above any newly opened Home Assistant elements in the #top-layer. if (keyboardContainer.showPopover) { @@ -487,6 +492,11 @@ e.stopPropagation(); e.stopImmediatePropagation(); + // OPENING SHIELD CHECK: Ignore keys if the keyboard JUST appeared + if (window.__vkbOpeningShield && (Date.now() - window.__vkbOpeningShield < 400)) { + return; + } + // Only process keypress logic on the initial down-touch if (['pointerdown', 'touchstart', 'mousedown', 'click'].includes(ev)) { From f9505796b202adce64bd0cad056fe8b5968d019c Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Sat, 7 Mar 2026 00:15:44 +1100 Subject: [PATCH 28/55] Update deviceManager.ts --- src/deviceManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index 6b19220..cf7eef3 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -111,7 +111,7 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< // -- The debounce above worked really well for mistriggered double clicks on the keyboard. Noticed the same issue is there with the keyboard minimise, this fixed below //const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-backspace{font-size:2.2rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='⌫'){keyBtn.classList.add('vkb-key-backspace');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{document.addEventListener(ev,function(e){if(window.__vkbClosingShield&&(Date.now()-window.__vkbClosingShield<400)){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();return;}if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(['pointerdown','touchstart','mousedown','click'].includes(ev)){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<250))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background='';},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Ghost-Click Shield Active).');})();"; // -- My previous implementation of the ENTER key was narrowminded and caused issues with FORM elements that I did not see coming, trying something new now - const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-backspace{font-size:2.2rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='⌫'){keyBtn.classList.add('vkb-key-backspace');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{document.addEventListener(ev,function(e){if(window.__vkbClosingShield&&(Date.now()-window.__vkbClosingShield<400)){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();return;}if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(['pointerdown','touchstart','mousedown','click'].includes(ev)){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<250))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background='';},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Ghost-Click Shield Active).');})();"; + const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-backspace{font-size:2.2rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='⌫'){keyBtn.classList.add('vkb-key-backspace');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{document.addEventListener(ev,function(e){if(window.__vkbClosingShield&&(Date.now()-window.__vkbClosingShield<400)){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();return;}if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(window.__vkbOpeningShield&&(Date.now()-window.__vkbOpeningShield<400))return;if(['pointerdown','touchstart','mousedown','click'].includes(ev)){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<250))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background='';},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Ghost-Click Shield Active).');})();"; await session.send('Page.addScriptToEvaluateOnNewDocument', { source: kioskKeyboardScript }); //--- Tried something else in inputRouter without much success, reverting back to this From e4f247b3b0d652da47cbdf170050e2f7e016cffb Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Sat, 7 Mar 2026 00:32:07 +1100 Subject: [PATCH 29/55] Add files via upload --- images/1.png | Bin 0 -> 88184 bytes images/2.png | Bin 0 -> 140758 bytes images/3.png | Bin 0 -> 147539 bytes images/4.png | Bin 0 -> 146658 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/1.png create mode 100644 images/2.png create mode 100644 images/3.png create mode 100644 images/4.png diff --git a/images/1.png b/images/1.png new file mode 100644 index 0000000000000000000000000000000000000000..c4e08cdb0ba1e867d3b76ba4584b48bc37c53e14 GIT binary patch literal 88184 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 AApigX literal 0 HcmV?d00001 diff --git a/images/2.png b/images/2.png new file mode 100644 index 0000000000000000000000000000000000000000..eb6a4f8510870875840115fe848b530b7b04d163 GIT binary patch literal 140758 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ⅅ>yRNM6B9#rQ)A{|iVJaX zN!zNsChAqN0OXbA-1YGWLd7RJ7J-P>#c!#Kp-QD1TUCkN2Cj^rg0O+y++;o^tH#{A zb*pl`9Yg>G_sA9q|Acs`dYOvLU=;774{7=O^-4lJ%TrT{2L%Hk{aS0UldYUERpQne zC&D%vk{O>5iB)31aNI$zfncT9RstCON=RUMJof3&sG`wUZ1cdf?^n~B{ z7D>=sJ8%byF1x4cp>rq(HS`muuff5=LyWh-U1wooIShI|o*oP%TqH}VWMm<{Kj4Ra zi1rf_6NBS8h`=%2eQ?T8(0ssJr<I6wqZgjT zt%9A$aQ2arKqLzSH4DcyQ`tcE4G|wl-cI*h-6?*TmGhH-Ak)S;QcqkpNEp&Lo8Z}C zmr43VqI<}THtw+2cjKW&&H(fzwS|6}eaRV7w)W^tvUq|`aIJ(N3EQuZZ-Z4g0x2Fy z!cAOx8Rr@}>O3nSd`|q^^uJOvdQQ)0AT=D7F|w#6Sv8Fcc>K?)M?4vDJrMlR!kuNl z>HxtG!8*vQD{MY!&?2!RF&aEA;qc)+B4RXs#HfO>2>A`st%l+hDD}jxv4l4viYJ1fAV$sz+yN-mMB;5F(;-wm_*Q6S5OJZ?gC8>vG4j`)xv95_$b`b6QBeSqd<8)R zJmlem2&BQ_i<2B*(PMxO={Kxj@Gr%;yeGv}-=PWy)l)@!-sMOGUn-(pitR%*iHJ2v zxr5}eIi?z5X%g})k^SDdabrSK(jNR0g^_c=+DUPs7s3*nNW4LT`Tff+U_D46B&G~u zRfzyIjWG6zA|lCck!lf|IngbGg@vRAG44ddljzhTeBG*|vf+zKvmD{1_4M={V#cGx zkps}02t?_KP>G8oK0uCy!v`7Mu>iQKS3iHA5|qHO28i|vUj-LaIS@kMJs<`WJr2lT zugKJq(*YgMYCVRhjh7_5kFLuQ;9aSlWOaXW*tIEgqrq-*%9IBgYsm;1$I{#*d7tB+ zgb_K0{0P-U;k)W{mk0rrqA*?rqGZcZ4Ruh6G zEFl0}TL<6c8Ye_aSQ-fO5lN2p#6PY`Z6L(Lr#FqDfsRXme1E*Nt}n=U;IvsD@#d6> zK8|`9Vnrq)>c1*qk=>O0ML399B$B%B<2zvrVfX1=X^%eL-tz4p80AENy6J?+m0>kh zHQP%cJz`6D10R)?EXeW2l_7p4wFwCB5vFH{0*>&Agbjhywxdt&`si|c_}x3`^fkff^j&`ljFyq{3G8yj{E}Am{_jMK5-sjQo2Mu z#BIs2&-Ch>G==aQ2Yi&^qa`Th2r@d^rcm?SZOK#26yeMHg&+{s^Qwx%20y)DUk@4v z{R*>gGAJ-~lGF*krt|LD6LtQJ<3~h;5<$#{T4=E#1is%NBmWuUY&}Ne2_l_Q?C$Ws zaHrK)jA%i^fie?rWR-w9@5wTKW2>iwyRKw7j79GwCwM{~Azqx;Dy!c*B5`Kf{06^* zSSU~^1lI$>7^#~^GdlXAs{=U$2)MyVGE+0gIleQR|8zZ@)0%mo*p{TMqR2Q2mSaTe zsF8*O6)g%!r~AkYB+q_2hOSRue2?f_xulm;R`T#Vmn2?ZJxIr}$@z98Rey7_p}pg) zOa2`Bs6!(IG1eu;xNOT3*A9hmzr74MF+6!}eP8q`jlRhDYyoT`)P8XlIEg2zBe7 z^V;EFA|)*QZqC%v!8n8I=lg>VnNHP~Ph|JehBvCrN5r@f*hoBNq_=-Z|M?vKMF(JF zyplp45@N5tyi##JMn?L?c_AiaA9p)eG_BZZl?|#r#kFGcM_1QS2nvdJdv8-TNNe)k z&2ur*@Xf{HYmLHJe@3m7xc%~pleMh=Dq|{RAN5_7sA$#5IlU^9`Fv^@vk-G!{llS~ zs{ZANwh6v;PS{i-8SpH%MTxR)syQ*UOQ7y#_Ml(Ifr`7CgU?N7`XW=Ve6kl}#>HhA zuOl_UckfQgYOD1Qd&@oeHQmMS<3I0vB78IN<_cGi9MfbrHQ}pTVn?AdN=g(w>qZ|Mu!<1H5MJWI-z)JyxIL!mJvb8IL!`)5uyOZcHM4eN%Ml-x;;zIZkY zy{Xag^_%PzXSk%9W_>9yItcRpnHHO-p*z$e^u5Ku5A^ffc0n$C*)ZN_VfLF|T}$~@ zv8lyXIV$b(Cp@R*p1$I?&0{)J=ScT(SdD(w)rboI%?t*QD~&GbW^7Y#SRE=9S#`Jo zmNa*0O6nFiN#A2P$SE(rQt+{Pdx>u5TZi#;%2{)b3V-q437IrC6t)&=wtrUj*+>YM z_s<^L@~Ke8N?Fr+SkL(a_`Hs@H(u+ATsD3?T_#25GTH0t4%%$D;9j0NqJP6MTh^F@ zVcu*jl>e!L6ve)fTWmaV!;!Z9h1|nT>qC7uH)~?gJVhamx0vWPdnGNOnsMdNGdHkL zSi|w%RdYI#MEI_BR2)FI7ttKX4m~a87N@mJ(rXOPZj$6<6-)`P8m_>ccaR zIi|}CN){cuRPAnb`l9*PvN@8u$6a=bt6o`uMbw3EC?+o;iMr4E!qkGC%BKyFM{?6b z6ijvv-suzwmYzTI)F()5%aqY*4BP9(GkRy`i-vQj&OUwDQl$2jvfX55cHFZy_6!V) z6t?y{&aaJRymm0qJ5o!2j~e5Pi3?wTSer{9@4*`wNO$6OjSWL&W3FDU=1ficlELak zQ;kofLY^NB^|~GxX0{2>=yKGl_Oo`@t`{EcsuavywyPM4T08fX=|+pkFn``)n`*^| z9ho*#n%pMwj$K|KmZe?Anz;@91$>GDNgif6P)Be-uC1UTR|=U0&rmrb zWy;ha-!jIsdKPnLE)`N-s@rTz?dn{va-A)9t?(!N{_hP+UCy~;8W|j^b#n|ACKo6D zIL)_q(+JC%3T=s34S5{Q%Mn{0cDy*YI)t;_elziyU>pR-QEBkX+O5&xEsx&TZSaBa z@JDXza;o8xWiM-gxp*SUj4Rc@Rxo4q?Y`!5j-agIPJYi?1>Fw9@W;pRzQif3T%#H%`e{2rGJOx}XRdv+FfA9AV{JR_ z*CJ|hCA1tMMwv(%t0z8HFZX4T$HNn|O2 zNZPB@rE}aTJ)`?%n*0qzF`=QnTw@j1hSPEEjcv!vMdPTmr8OvZdONvO<)%i|$%p+T zHV=$ zp|re-ytdwNlLB}h&Hi6}U+!t!F{gLRW3e~$!8w)x`D=dn8t^t%*Y=p(F`ozK_9RDM zc^L4eu;s(vQy%}b*W4y=;cd10^QZsI1=Rf5xZCkfi$@a2)$)XNrt(_`m73xff&Im~ zoHJDN3DNoGqJ@k?iKYvp@;+6SIZo$V%mNgt4_VUc)tj!OQk&VTwdk>=cCD1Vj>=iB zdivs6{f;=pwG?{tA1=;GemWkaVv(Ma`SA9iRpWjMN)i)aKNfx6;`v3SD?I1kwk|1` zjxys~{r}CEzTRgM5)B=jGCDNN9GXu3DUr|dBeh_U5=;80w)fWuOq-{vBnsC^>7)g? zNtv-UrQc6=4iqXl=5X!hP-R%P!hJ)XiQ{7?^bGXPmyjF4@FR^xcZZTx|>Wk&xG4B?!^Y`qt z>SPx7Tx~wG)gmyRO<#gCqh*3hBG@Rb6?{L@PuVZrFR;ZLKeOPK;G_7e&8yQOaIlB6 zI*d(PkWWpK?cypPmQb-(d)8Hpt*YK3zCWTROQ=|A>3Au_Nmrd$@{996v!>jxij#%$ zJN%xyt*xc?yx(@CZgjZM=9$a-bi4d_(ZdxRYJn%*%~59!PQW^CVboS`x_PG~u>l-jxRNGe_+1GdFq8>vYWh_b%NINT+hvgsxh}lYf45P zp&o|FSQO=x-`IZYO2=KgM}#(tCH|@JZLXy>F(CK6YMHYOR0P zG&S{c$TzOY#dO5S$x}s_UrDw8|IP0O(pUoOKWt+*qUxqdj5jkDjy$wFS|~{4A%)c+ z?(Ie%!m78Hz2)C5=BB#e&0T&4{cYMBw#&2>PT2>VhomSic-+GRk06_gJ}u2weQRMP47j=?3X8}=J)BGJ>YWm3T zmPxqF^|4|2X74lO;G$&ilUvGZOpQWy11P@duFt1q+Ms9e%gbfEk$P`vx0TSOTUS_7 zkUqE<${VTMWQDZpjV%LZg~HYq|77e@uQn@B%^TR^1Bh~g5sa+cZUx;7TP9pQ{K^WI z)@RtsbnR(t+n@L3|F_o+Hq)OL*OXWrN8u@yzRHV*d9ZSlFTr(Prp4==HhXQKV~iIq zF80Mcyxqp!5GKBx$K9MpioznnfA(2bqlFo}vrlwl>`e+iuSeb0!CROWGgsF>>fr_L zvB$l&<4c<=GUMIL+?ynQ}3!zA-5wD4rrKG1X4x(Rs z5MLYI6Yo$e8v24GdTGF0^1ziEkNuC7mu1VgNe)V|57D0d?Z@ssv;E_<1c^(Am9f#I z&HI=x9jXeUG~jW+%!X%WVLA4W&3c~Ju&a}%mYMP*O~WH!O6LTMffO}5N6$z9L0_vj zj4E`YS3h|~nL;|$gL1HP%y+A^7mHs0$}FJREemX>BQ7W%);G zq+`nCr_7DlvX?sRnx|5V2nIKf7jo1G9>*@0(S7eueN2(6!L&R{Bg~WIJFD}|Qi?HE z60fYI(y^6zsYG>5{wn9DP}zn2;A3}11^v_+2i3inj6OV|i0)-F=-WKhV0yv1U?$ff zJHMG(zA4~jPA+C-($3J&tiOG2x_W5HE5PiA9Q7fw)0dteCe|616-c5e9 zw_=wx#8S0#O^uH3(0e{-rK3sn8B+vaduBJR&s;3_9AI}>_2q9F4Uiw28CzUF;W@@L z!DI0xnzd^=#+)u@Ys_i+;s1Ccppj>ODY3dsCh71c#+fIRK|imR|F|Y`;A)HmPDp=fV9Q%2WB1hl=yslxHs7 zn=2`7(8#r;9C%`1!I{MSy{_=2YQBD+N`B6fDSL{s*7wsw9b9+v-(@Z4ef)UDbE4>h zN$u)ciROokzQ;fP4_D@O*)4!y`Sr7k=op39{^I4*9CJN60r3aYRtGPHXnfjom0`8< zogvwU>(8`9KX(51=YPhZlj9UHFz_N^RfQ|mO;=;!29SY|4i zPjF_O$zB_GagRlVg*S`gtVErSN$rrQxNpc)`XQUF=-Y)49>16x3e4@TdHM@+gCAB8 zuW#t>F#BKsGsU{=^%9R0?><$k)fxAb)%VBIn}>I;Gd^s1TGR8vxp_!Cu07)^E7U?k zS5xpOR=sZh^1Yy&9@*nFs!K7;z03dpGm^EeV{r9Ei}p{SWwW6No-y)14~*Y`^>NKJ z5HtFRwV-pKl8{8XMcStqp}hIsRE}{zLIQzFMceER>y?Oqy?nbbZx8>D-ea@5O$d>q zZ=ZhR``5I;FSaU&H9wfsd+dv({fhNJz1{Uj{))jbUbmy(;!4riIVE52*D-2>wp$Fd zB=*~E?vqNDV7mS{KjGOEu64pJlT;+hFZTRz(M13I9P|ITe_qS?Uq(6~^h}RCSYM-K!%D7K^CkP%qi9!a8U3eD&aN858!DbirJk==TY+NKe0lKYt+g(n_s~8D3JhBJ zf~eM({AIn=pk}idaoc93LyPax-Ta%$oYN?cn2dcG)!J-yp30`kMcZco@Lg4Yd+!6> z|5Bl+w+rmy9&8(>?&a67?K*vMX_BE>d7cRu?oN3$`Or})MxWg~kcl^0-=Jxh3%YHo?Ku)! z^_RgrYxU@=w6#I#4c&}g8auugTRbrC;X;1n+<%Z`y?G3@Z z&UyL*i3&t@xtj<^;gS1ExP33`gGQ?R-kGp#qLa~4ZiStk$}4V+d7`Q0x_k@&e-h*` z{9h)>myBv<$8ms{mc;!tE7$F~cAKiCfGL;VyqF_?3ym+xF|zfzD~h#w+7&-!5_dFA z?#!<%Zxjl(Y&O@;>)$--v9ijt&l2Z#L$4{?81P(Un*i{?->F0;L6`j!W5NDDzfXQP z0E`i}UjS&KL*u$WM{hB)(?H2!Ala_XZli{HnFG&oH2Ysy{@`0Vd#XrwC>ua6K!C_LF6;m%gzjnWHv^qI7Czf`A9vz}!fQ*Hx(Lms<4RYWCDh+=N zbdIewsE5F3RqE;ne|#)yd4on=6mLQU)&G=#_4CHzzP;=v#=2+?rJ21p@T=@)#!(3=j2dgjyVk(+lY=o^bHA$6}>fJM*xn6tQdyc3m!IV zqFdQ9BM0Af|9SFPLttU4AaqE>d1Haj;qiNEOg46fW|zLiTsoN4?@iEnK&xVA8M@z8 zS4*I$h{-$v@dBJfIyFv!-jY7$U)e%HAV`ZCeQ?$~B8`Rdj{s?5_yksnU~xA6=ab#z z0Q?wZm@8YNNTJ8c%uktpssn-J58{k5*DxWoB$GuVDzkp7RF%F4q-q7y!(k%;Gu+X? zs!@O+0-FbMB-+3DJ`4b<#;^m7N+UD>fRNLmCy-2LW@ZdjO+$MP#ZV0Oszompy(Qq* zfanaz0z&0CA=5j=@?XZ78Cn3Q&gIE+Uu~UMFDjZc8kg}UwztN_9A2BDU{a1h!0m%J z-~gyKI+!ctuF>TLyn{jwBS-*9AhTGYu!F`f8Jo6(=VCYfF@rW1fL)Nt6S{k#rs$WN z?@(IeztRm~SVp#lrRFbfiV{_zf0AyH5zv^L)mFdtQ?*ELf3M|QyEg3{(_l6#^uvo> z@Z^EQ#1DatV?qSLx4;zwNQO2GASa}8|99La)Z(xynV*iAVVoTBB_YYlesKAAWfw)8+N0VQ$kBZfL*@?ReTfRzH=Z5~;`sNFeJ6*EgTIzEdUH&z*W8GFDW?C=^%L_c zs|eD>R!Z`^VRgY{>94wT4!C9tJXmyEvB&X#0M9_@AkXB+4K6ZH4UPR^mkyvAHLn{NPezOZtB&4orBLGEI95O6zw}`HrgD#f`xEFYTKe>w zWH5lhXs~0!uptbqp&n*=!_4YssVSo(1;E*V!8X;T8?{M)t<2;-f+r>7&6t(A1Df09 z6rzz!06JK3z&?PaAwxOF+m-vy<$fW7bBUH>Us3vW0bLoce_05mZWx&%^#?(ZRS zP7P|4MmfjT`pO@J`BSY9h_8+`Zjq&bec2uh+r)ph@XegPZ4r4*k<9Dy3Yxd|(1ef#! z$iua{bnJn2RnwP-df^y$cyEx3m&4X5muiBSKVH&nUvfg1BiQqJCRBzFNVa`%=EzXa$Wdl;`z zkHfv9MXrtu#AT)$TAuxiD`2F7%$?xf1AvF6rJH|lmgo4~sG$(Ao6#L}i)@-)hIL*5 z-NPPJiYDUlL-cFx;HI8UPiMY}e8=&C{l@qXbp9lqi>FMjZCASp$(q{iP}o@NW*g$~P z5gk&ZuZvSq ze}Vy~J6wpCUBcmf-*8>|d32o#W*sE9lzaD90bGq^qF(YWYN~Uhw0rVXq4M2(qaM+6 zp$Bgq>?~u6YV;&>^qZ~+9xE-9WJ(&RqzPPMTk%C0X#_+}hUbj4Vmv!ys;98BfGR^z z0Weg8Y#;3`JAtVeoi&9cRdV`(3INps$46A+f!~Cy1Tql#lf5Oj5AT1wp&s0PnlBD5 zbK85;l5cf+8N&z*Z6@fNj-AZ%VzuA!nnb-#5X5ekS6N5BTa643B{)-n+#qX;?+z}B?+)pkjQS~H726+f4FWAiGr3?toVKE_H)2K}yC zw583y8djkXCjxaHJCiZ$6{d|qZV6ch&gNg_BhWAf#l`e(o!+mDpg>f!%{D4z^N!$GU6a(QAC)_rXzPXB> zjsh6V&(2B^T1A+GH3H-W`q+dX08|}lYCwGv_$2W3DYnv@+2SL{IfXyI`sE3o%+6U* z!F(EgHUxnQ7#jdB!UI6;NIn7ZNH7fXD$ag7SO2HS_vM>so~Go}SAR@QJ6-jPMus(0cji*dF4ugYL7zjZCd;pGtE5rl6`qv23h!Z8ap&`2y zOX)uUOe;;_rOybz?O)cIFUk=y+1-C;C;3t`fClhRTd7TA`s)VFKi!V3zil@!YkJAT zS>|cj!$H4$!^3|0Ac;?Hn;iBz=p2(2-EQc8(BSz&6(xh%#!} zw$YxWO)uFQl%}xI^OE;|3p}x_im?qr3bL z=5IJPw$Q|MtnAFB(qz9;#cSE=HFAzF+1fgj=aV4pi){$6AE%pfsOp-d70w0`WW*W< z>sy`(D{-_^_kOl&t|KGB>Df!*?!e~;QW~&zWFwED)XEGZFu*c)1(uIoRSb(tnJ`trfLmHuS`nob+f8Cu`n>@zku9{_G9apZL^oN}d6)T| z=JmD0feR<~*Rmc6NF8nylWNiIGh9Deka9u$SLS1<(u;EsmRZ-v?@gY%@Sy+dvg(E9 zDZafol4g4ij?HRRT`-{XNTIZAetLIgaHQ#7=pNTSm*Ni}dAe==Jl)T}gJOqw99|AC z``TeQxY_AwdE(V$nYVZEcHZ&z{W%eJx@z{&^E4^Gj!V)*%Hc9BOd?fIX-1W^T1P43 z<8Q_Hzn{J{@%_S`1l9xo7st81?>jL?WNywhk&dA7T#j~5>zU$rtUaZWmwYv=G+NP_ zoyI9(i7UV62xD0Ap8!`r&O-`qjkJ?DeO2=Fg{CzbY&&Isy*@cJL=!XL_j=;i>qD~H zzc%`@4Oy-I6t{`y>8XbcAI$3inJbUc5lL${HC!9KQ6k4sY|_wzm#3(AcN0tDuIb+w zGDD_&=ga?iI~g!EYcJnudt&*A_wmCcNe)YW36~ESWXDXzjbR>ko1^f=9m#+sQAzHE zWlVP&8j=|4s)&KH0=ufx(+=M59&n+ayUb5ldNP6?1 zU{GQ1?+oqLzg+CgB(#LRetXnd#*x9Ss-?B{a96os>G(J55)T!nGPg+vKkKZtkms-I zm6r_q`$o6rgUaoii-*ySgOGo-u>7W^1FMta?DPv5HVo7_F4 zVN2Vx;P#@(o0aX`d$YsW75aZC<-QZw6H}Zidtp&~S|LJqX+yr|uDbrZBk2M(X4{!7 zj+D|j^m_I!x+htwgkYJqqq04)aK8gHB;$!`>phX+kVRINZ6oQz@%2(KU+f!UOn#U ziOPEEX@?|`FrkpTB3KKw47uC4AJF9X_Cyw0ch&jO$6sbk9aQ3HQ}%xvARzICwqNfU=h%_l*~{0Tn3+b-#OB4wwXv zx6`m^WIiC{rhvKwLOCshYx}mh7Y_S;KReY@zt6BN0sKHKxEI)bc zwI@>$kP;{Q^iMVpt?E7_bsagy!qWm_2^qiPmRNc5E@zs#4UnsKuLl82pD2Q@eQG4C1n?2_k`p*9%f`{?^?ZO_3}v` zeuLxR{U$oCf`D|SrlLe7Y3F3*RTW{q)#Pk|r>8s_`+^a&kSy*2*qxr5ijYfD?g2>w zbTI{b&SPBddY#-f5es(P?^23dzh_Kx`nGd?PRoCE%hhVCdb4laQZieE#h9st=f0Op zZ@YE5oOMshEtO2*hEsEMb&27ihuMB=0o$yvl8?>9d zyfIY%7e}PlBT!!vsbiW+m6>q(^xNZrdrmI+yx7s^d3vBxXyLcO@>aknv1r)uJJPGT zX$~U@!Zb|$sJ-Xu$-b#@>9?h1=ICzl@2A@AYeB&S3Z4W)U%!hq4>Pi}HkAmZ)zi9E zU)YHu<^E$K0)qLpk_gI9J=#HI4=^zTv2X$y-{JZN)74*aWfxw_KUO^R=NVZ1e#184 zBDbp8V`eA4P{Txq3}=fPwLc5+b&aJDqY#P%qi!pmwb(_N@fUPbi=G`&N>T_ZX{1p>o4W-u+$bGZ>@&`?uDQLd=Lg_lY_R{f$k=p@(h-P3+x zC^m5B9Pq{<&{*2oH1}n1IT+!+dvbIBT``_r^ z=_(M;U~@vP3-oj#gF!_@^^VjQY+rb>qtu5=n7j6NVeO4uoRrQe-2N()qIS?T- zYBi^+7HQ0Q3voDsor5o+VPMdp*>JN#C_Bxq{1VH>8V9@X-}88kobhj@B2*$dg*n|` zaCdG@mP)o)y4yOP)Nu30`CVXsCj~5dli~2ZSB8#6rBytTe8<;vl!k&hCn%GH?lQSG zS|XdD-Ds+XsUA$eF)};(&DD)_8&1&qXJ%veCTe*I$Qu<>V;x_qUATE+Qz28byjGPJ z>Oz{~EU5(rMx$A)LvkHKdI7T*RABA%cYC&rM=X7L;g1z2)C)7SjM0$t*9$Lu{kHZo zP0(JZS9!iwwn0(Xk~T!$)XdDu9--2h))t!Pp(ve8uO8o|&*lE-#ZclWFa?MaK}Lb_ z6~kW$wFJ>OrWS?w^f(ZAnq#VKU>kr@fgl(UpIKu=zo5LjoIUnXNq6qe5l|sv6%bTA zAVti}%Ue&KE!qF>ZriUIhOsgU9_%vv7D07oeqv9BQ0CVOWvK`| z(O9Z9nY?#noHT6gJ2NqywtMDxuMfvju85DX_126=El(sMuz9ZAs45o6&+a#^y+(C3 zeo)?CP6R_~j~$~W`2VBZtY2=|FWeGJjPoy5N=^DSz0Pho7&%m239J_P*3yt2}GrQYtxRe!L`#8X#} z_Z7rNJnHX_&V#X44c-ixdASo)7+Q{zcwu;gn8zW^5sCTpHU>d2w=G&#Z42s4l)Pv8 zV+33e;+AuyQ<|2x#> z*j04ddXrST`9-kXHQ=O8Oks35%>*#uScN)79aJAOh_LB|Y1EtCTnQ3Kf;fV+NQ&sn z8^TBDv7qjzXODp%f@G|)k|}!tOyeymvBL2HNY4(3hwnoXojR`D;o`LRvoMqk5hwK^ zQ3v~@7J~>8j20@o#|>oX=4xP`Hc3Q3f6m?*%((?;2sKu)k|5HFqRrw@l;z-@xNh?+-8VL*mX=yi$4vSO;H%e{Mk5d-s|3J2EHtJU`2-)|(-~YPi0qk+rE;*jO_TRh8)v#a~Vk+1y?rGS;j=M zzBTYzs^qT?SN0g$*yN2qFD>P5X=xd2sb`|;h28+6rei#xNrhxdZp=wd&5)wgXf}}6 z3xXOD4-E{Sm~&pWY+nF1oow&L%HH3_MR)TK4$a&_AX44)$bW?+j{CCPamM-54KL+~ z_o`qD+IOHRj&vRt&?CTVubC}pF=xiH5{H7H=ad^XA?N}-4@rVlnt{nlIoB`6LEuk0 zz|MzMqN-B5%Loou_-dnFxT14X^{7>)QmYvyqqr~s@53^~eiKg^h71yAw4~XCgtS*Z3 zgfs_6@t5M$tMGwf-IDRHs1d;@hm#3#sBvPKkoE}Hibw=-AM~Om{81=5p^``l!S#KZ z{K%TUluOiM$jIEa#C7=2$bw87fn$J)bsiob-3?1W8_>WZ(_QZOM+SzG?AvL;hD$w98%M?PZ@{ubgcXPl3cAdXaM(C{Insw$ziL1F+k z!9eisq}-oBfBxHksXhP_IAm}Uxf2L*5Xv{Ad0dAz^~44~Q4g_L;ylTi&AljL69E&5 zHX)|LI8{QqB0L^c?YB9*A3!&-)2nwiQKTUP3W&KUCsg5HF&B1K*E9)*F$B#4^S@98 zBCAA_E-v~Nz9?>e!!9B{H$o!BMkU>s=%M@{iqU`G-?aB%_qVqbq(%W| zD4Dhug|W7WJw4ar3@RDdoyeBanlrCsipu!-TbUJQLlTwX;&A2AhWd?Bq9-XC%|^Y2 z4=3nmOn#1l+0trxoUk%Y&0jO>)04`rr8E2dDl5hV{2N@hyBNB5xz!z5liHwQUKSFI zHP0;mzAEd;#Fa~3MiI2y+cT9LUi@*JOF{q6#^&}zk#)Q83HnX7Sp5ER+l`Em0!<3k zA~b3V+F|PV!(lR{o6O`S`)6v(vy9paG4WyNZaqkopc8;D7zq`iyHjJtUW#BA`2>PY z1d~0`4=D}KwA_jLhG;&fXXQ!c`g@bU6o#vkxPI~2(7Xz)JQ;dK%q7}5O79`0b#SVR zAIAh+n3R~2*dPid`;F{$xG+9Z>2;n*QniH0Kr#~ah}q&q5iT>x%KVPw+G{HMy-`Pn zf)U7*_eW|mJ3QYHVHu6gi!mx9pM>|JF?0mm5w3vD;zfv`HP2<9S7i@j7}DBCK7k*y z8&I+$5hzmdc8kN#6qtIY1@R+U9&(DwuH1h71GFr>Lq=g091z6gjYv_6BnPxz3S(_; zY&6j_K|n>m7&GOB#4@YX6ftxh9Z@yNRl&KDt&HP=5%WX;2xGgFsyZfSLCA0DgomLv z=PlaVYZ&}NV(srOf@vtz+{=Y+Y-}1vag~?=uqq*EM`rN0wziU$C1L}_*m_^7ZZZkR zbXH2Tb~wO9Kn0Y1h(N$Cf0emB8#{Y*{>)+XNEGvMzGj@0y5Zc(VL^sK2HR5QhNYu_ zL8h!mZ`geahrgx84AB)azhu}R>?C}sxrGG?zJzjoeX{}4d_hqi)?qJ*$2h{cD24PW zmA8yzwup5@zJl3 z6b;#qE1|Uv#hlk<)Fr8&qdiHg>OD2#rzd{sFJR`@u1>#cJ6~*lB6$Rcyobpj+znD2 z_u*D4!hj_+yH799dE$1}95ER#@3s_G?%M)ONiqt~-uE|+Ygaj8A{Xu@@d?{eD zE#MUbRYNVP8u0`lshTcwj`sjM6Mr7UVO-fk+av3A;&)Q-%RHCTsGQ!;lvR3 zxPi*7Rzq=j_6W7_K~4<*Zl0OS54Zw0Z|~xC7ZlpQbl=n4b-RD>o;@pr(vPdouY=$Y zf}bd`_YrG-Dfe4nvCt=Ty8i<|G5DxJtmr`Cw(qivrSNSPtT!`}N4n^{G}}+qEc|Ed z?J<3n4;ogeH!7y2EfQDV-JP;wYVJ>m8~NH=j59<;TiD&d-%Ne#mZQirj1#;wX>LJi zWNGzi`Mfkr-jk>A7aL~QGf!mndn2xx!I(lKazqOMsH~9<^!EB@5ZT$U?C}&ihk9GG z-=B5xs*e{AVrVNKiu?Q@7Yqxe!?l#& z_ced?PGQ*Z$-Ar88m>QnFDzSiP8>LF5NW7%(onwYNl9YJx`FQxhqCr$r9Qdv`slzH zx*DfTxvcB7H+WlT>1H((0R}i)5a!*n$!^+1Ct8!@`L_~@LX6&$T}hzCtv}Duvlx%h7OKMWI&?Mj{JtC zN@xTFz_IOCX#PuUZ;ta!V z10vM}Lr0kC$O598nvC#yPCYW>f16l{;?SmcpB}N>{c9gOW>n7GE-0+um8&|5Ij)et zKvFa%+SV#oiN{MNKHhm(LAt;SX}O?}m6Ngx`n)3i%eS14+xt6Ga=p z3j301TSO#UJWct*hNz54BVY|YUmk^9Bp{*-)6$Sf^059VJ|!n--~2uZg9YbyXhJ{( zWctA3)NHUlTC~^VQi$zt)!~YH%KI+&p{_ zd#)S)8qxzFWzIG5-m=f3UetV^B-Z9wXLeTDw8na{TXn^b@mAOT2+pWhPb{-FQ z-_~3pm^pizj}Bdn;(%opY~dYup0`{U+zzEPVMOCsP4>qjA{{C}1D-hQYBk8xkxIr| ztof%co8dX4P#8F}or;Pwcb(aMec$(2LmcDpuj$9bxTD8wZ7L%r)dL|v^hv9UG@R<} zb=4{|zKu`Cmj`h{={yyUubJ6e()!)CD{sF1ExjDw5~%>(J#Y^`8czWr3sNZf^5u@d z5ou;(XXWPRHev=nLU*)BQLsPN6wuyXHDCQCr4_e-KvXO%b^uBQ5BU$>ka|O0fWjrCVnnAZ{94( zG^b8o9N3Ihn?yrl8l-3i-Ggyw=X_Fky(y8tXLdeUa~aiC|MFSigVRQFCL%lc9Q|N) zwT7syg{v+IElmV0{WtdBJgUdG{Tr<)lqM=Pm!Vmqc`gkk%>$uHQ5hnlG*3zqY0#iq zBZ*Ww8}3d7Q^_e1@ZO zx~_bF-+UL(A|EM4zNkoMvH74ufGUWPju38@lUr9@mwh0>wE7!BUGU7B#hJ)Gi&O|+ zAh1JpJ)bmVni(f8#zKqYiv0P9fkN+1q@V4*H08tNv)Jzw4l^f}8lJ^2p6>`hxNCj0 zEU563&{n@;KCw3Z>QzKWuy7p9(V#?&0(+d{*zw~L#+!$nkpZ9@LTgv-)vma;By?kc zrr;GJW4g`u1YRM&4&HYj^z}bKu<4*^*`=ArUKgCd_YDJUId@n|Tz|duhP|m}-fcL1 z-LHFdJTAG|B0phjvy}hL7fb6#I74Y?P*@lnE07A7gc=ycj*%ES(Wp{`>)DUo+c1f0 z;ZU(c*h0YV99W-M6RU zn{{)PZ7@f|xT6ZKgY>oW#{vQZhDaJv3Bda0kjxwOjR<%}cw2DgfbZz^^b_v$(J(_O zF1~zc@a{p0m;+IbwZ_caTCar!g>rW}v6N-e$Og4c8h9>xS}Mk<3#Z99PF&(FjNG{` zrT<*d^D*~_-!go9T09dc*UVD;BrHvAk~md1NX47HW+7m)s(WKs<^x?cC*B>;s2I9r z%kOUW`!O6DkdKFCKi$3A$$ncn|CFg_RpE55kF;0dBCEkd)NUvCJLl!|Mv}|*6$9gm`46)+1T}){e|*68K1wbOlC5}*JP(GhpMuA0l3987$L9Ij*78^RJ_|#^%5`4L ze>gw7`-}MmJXWgAt-OL@g$w4Tiiyx^>SL8@PP1#Xy~QzGbJDvD~;U|~t! z$#jEdLhI43g1c_k4{Ne+x?0nXapNy>->z+(I0N$P{80I#2t3yo8L*RD_ZNr1o_Cab zaoPW}`W~|a%9gD6u19dSlhN`3al#lvHwjS*^#FbWeTP`xwzg(z&pnbWMu&?;D3pdq zIZ@o2D!8pl`p2_0#xo}4Ga)lw<1?>KZhl}L9JDLG?yA}{W?;-mU0tMeyc~Cib`ukhoM*P>_~&Zl_OV zW3acj$3aoHy3@yS(#>-DiVEn{g-+f-eBi(f^i|B71;15SR|~Yey~Y0{rSOv{+38#E z{n(wmCMvoi^1C4O=5$A;uM;p#O(;}B|B4w#M%%i62OLCv0NoTBT&b<2$v;dUq->Mxo0zJ8AuIUs=K4t9U{jU-?Q+?DO-I@7SZ?x%HwKldo~@eP)i`=E zvt{rIjxKKZGVUrVRQ;Q4Jsl`x?e_QRc*Bz0uK7~4 zh*NV}{;|E*ORXt`v+E2WnUhP}KrjUjPgEr6{{c*U1s^HGNGH}wV01?7@ZIU#<7y&# z`$A*3y&`-p>}4Ju*AS$;XtwjJ*#q_CTi;xpOFF-+@$>LhvC+c^{zrR9LIqhj>#{sC zs1(kRuU0DJr&~o2mKGea4^N%ymehhbo?xz=Cf{(6U_=vM1o@(!aO&s@7 zFH*P64_q;I4z-mm7U4fKUk4asrTg7a62mb8gxMUslro zL!bBzvI`|zZv&!YvEM7#DdOwiT)5eUj%m{t#qs+GEqPVmBiR~EzQ~PSM(%jM(2uHnW3f2U{0_4 z{gJhD%E*rEa9FQ9ZI3Xq+Rv0J;HW_+BU{j$$diiPX)2qhjCoI*dal!-47RzWwYXg~ z?4F&FaO_8PCZKsZidKWZqR-;IJ9&yCr(SMz&277E2ei%nu{*)^O5@H`!egT1R0{4U zPNrBMCG)KbTiiz|Sx;qfjoWUc60F!@us^HJ>CbH>rvk~I{v{>yXp9=^uWfX#Q(2ln zha`3|6{wrTt$IamcF<=lL@nS`$NH5W#b-PB3*D(B)nA88Aq3yKw!u(L4=UMsr1)n zoIvPqXh1Au4*1)6ZOgFz<8@!xSNZ0Nm(LSx?|^^+H#FeSVEGY&9C>2g8(CNQ_}k_j zF#ml~8J%9zq$l3jFt8(K8S1{BPG2kWGDyOQ^Fj=mmu-U4gGB2zaAb~r3UP`A^Z?k4 zv>fp*YLFMgvN-U%^6Z|*fX}c)&)z^)b3iM`@G!;zw>1pMu}0caH&%X`pDTQ=^R_h8 zcw1!&E2()AD#$KDh&$or{t894iMjbvbOCsL=64i0Io1NDBj5y79G6y3mBjOwq0U2h zI2#qC;k6$$zHmV71{#g5{L;=TxYrYtMC|oTQk(SH%S%dfv!3kTvQ98tjR%_@e~ENd zB23qJGQtv`l*WjQM46EN;}nVx22NSuf9~6;r)HlLhSK)!X+Yzy?{PkLN>i^P`ciK# ztI~@gRyV*FAj&1>9zT+oYho}Ft_P1uk`4_H=CUQS_%Nk~PZ=0QW}lne26&2w5)My#tz znVeH$gF6g?P|9gHk|OAK}9gw>4cs#Rt34(S;T1&SbiM)iRV#D{4hSg6a5wD zD;lE}t9Y#U=Gn2Bh^;Z0k-nE1hEJ|Ui)J#72C;BdQJ>MQXPC;p#WdYQZ1?BC^j#cM z(h?zQCpx)+9rHG4Bzw;akz$8cicamW#gVWGpeB1bKIA{Puq2TxU2ymTYvgU2vWZMa zil2F>i0^tscQKc=m-iQmS<2n#;|rm8p~C_tEld}A^t9H9m*DWc!Qmc?)f=yHhLH|%je+>vk=Y`w__)HP;CR4j30!U<;Faly!3fBUoLaWf1D}ezAbPd^LOQ^~9dH;~OJtdnkX~fpzyGnZAJH77>!$K<_awG>Bo4FG zBH+AWm9c+t+rGZb8t*m_=idjpG!3jRMtKI}3P4`*3J69!JG<<=NE=j`A08fViz}U3 zswFZ%Z4O3>vzBdkq*6ee_fCt+Q6iuNW?lT<8Pq-|0QYFgp}r5yDk&fJP7$URibdAc zJH(rJjCm$=lk5c+Y%`C2fdx0SzWF+Y+xM#T6-Ed5gubsWi{0tZy1IO#+4H!*#Y2Ou zPn`_b=8L6QC$Yy?p5MWBRS(XDKfHqr^ta_Fn|tlyYH8e_wk=*fdpq6ul#5dd=by;> z9LgPhQvR{(soAr1G^WN1LFNkEt@6>#ukh1+dRR|eXJGdvbxo{J6>F2(*vy#a-Q3(lgR9lH9G(@% zh9>Pgiwp~4#qdnz@C+1ZPx_Hwf9{c!yy(~62k8C3kBljXY}jw*I(0+&RrhWuUSrFv z9~pCUlJ8ha{M;cGa(!{Pl}nU(N$y@H7TSRg_aIp*wQvvfM(2dd%q!2>$>P4R+ZrGy zG5L{++tjDP49=?W@VM7wpD}dBoj!RbEv4Dvj%hBN-U3!nsr+LW`_EN**xARL2e5M< zW#25cuE%T4(mjb~)qK+T*XH}9DWwFqinOJ$J5;UCX4$~vRAp@3eSiK`#{m3{ z0q=4$F9)%P$VG6n5pTcY-e^~zZzy%r6Au;2aB-67|GJ_|*jl$-eC1BfTj?t|p4y`@ zCSSOzF=J2q5x%NFI1W^Uz1rj!!vhx-JaX?G4H6XD zWhTtx&O&#{kCi{anzm~Fxijh}I}cTCNDG{*3%!@kA71Lyy77H|BU5w{i!5#wgQ*6| z2jh3X1?;#kAadyIAvI0TxYL#iQ*{e0R7@+x-BgSW9@vTt^6feM=G=@*{y+}vl>=kO zy6;cxGHR6T9~^7qR+FOr!ot8J-O-;L!q!A@uhJf9sAPHE#l`4z+*Fl^J^K?YWtmXr zkoU9qyUdv?o6Xl(be8+@5TqFy(&(2F?+y8-jI^Y@ok>{qUpP z#)h7=3|GqxlS0l+Xl~E9SWl&MzIJkAlbfy72JV+by)B`pHZ3JDJA=ooOJkR!#l1_- zUg^EJdwAdvg~u`Ln^!ic#f0;%t^4W0c`v2M{ho&OTw+!=^X8`q2gcf2cFhmdjnz){ zEGZ_}M6Ew5k#=CdzV_3+lDkTu)neoRugNnU_vRZW)=aT#EXjRk%s-*LVIpqSr`^bG zzV!0En0vB|N<`z!2}P8O%WZB%RQ279G4o1a*EeQJL^i(G@V*72t0*P%u9EA*twB}? z4!moPFJ&*XulN<#yqxr)IA}?$$6-W}8x}{*LOgHg0z{!xJ{Ya8P z*Mfww@Wh%brLp#L87f;>F-L8y($#M!Ld5xdcdAU3YJbVEwtc8bKi)f+VAn{m+kPsR zwY|yOa<{j1`RA(wO1}<{-y7+2ygwqS)~KB8-qLzT~ALH<$nb2w}2zkiH51yhB;f67)@d{h&KsvA7RqkcltjM;rs$OKcI<*FQ4DOc$n_seCo41|0G5lf$1f6 z@zB4oQrxr0iTG-0fuIq4>es)=csNf(R8yuFYzt0kV#`Bre`9JF`{fX0g^Z)bZ`~Udu z{Qti`?Ek!V|KDDmUZF8BE9Y%}%I^1O5@!}HU;O7N#fW{EWkB{$@nS;JEol`6bjtVV z9+bLpt};+>0`*sttLA;@Pbu!=oBxhmZ-jxa`s%$xlJ**rbG>K7yHAF=#kYQ<`|r6f z(DdxohTN=M7M*?kSR9D|ZcJ;YrSmlZfau`Sshbo*|2@-(YR+;#x&KT}*2oild~1m( zsZW!>N9~`gwmtiDOffv|ytws$&Uu}&DkUNWh%ERidL5M(X=^OqWL#zB8(;H_`oHVt zPV3pS#Y&XT^_)U_9E_M@?Tv{_Osh{iq%q=gf?wi^C{nJwR#|5~_xG5UvPi z7hPtQ5hw|?MA=qQ;K>lKZQwtE$`m>mQf{Fc1eHFc6+ArbZx;PnJyz!g&@1woZE9yL;a%Bm$!R? zp5wU5?m%KWpMvnjlBaTcm%=9h!NH~_kJRv);kHW91SD~Rd!^R}g4!z-gI$$}E^*K8C*hhU#VC+jSywLZuHtqS%@|B{mh&G=xxAc* z)OSEa{dH-Lly9GrUAvmO)&s^o?Q(Y>0KL&7Jn;;p$?>G=LuDf;{B*OxgPBbd;&j&! zXG$s+I7Z>PdE)Wmqg!eIsEm0LPj9fzcY}=Q`J3idcZ!Bk{*kwF%eQA+!-HQ(pEH=| z7hF+X1{l6!Dghylkv9G7cG7`^g-h0V%){k-g)np`fA5ON$Q((>lJT5kka| z9|tX z-qSC62qPQ?KWHgus_dTXJ}cZhQbRHZP~3(TXp#@J^3vwo%dNk%k~A<;C18>cM(WZ3 zmdUsII1s)rb*i$7&{@xOdieZs?)&ql zK6)l~%;#Wow4*METQDR}$RQZ7&Nq}I%SZ@51gcjY7L&SVVH5%i9T{7RnI>JUDF;jL zUodOGA^m^^4}0-%9CtSv>SH=DUNZs+8PJM$0G?e+zmtXLnw!_4p9a4ls#!vl00-i) zywArW{k7!M^_p&u+2n$tm<6NF5g`oLXFu;9KEO=N+J^B0m7qzFe%L48RlUKg3dm#92H~2062(M*HV7bdQaV4nvu-!bD)sjgMhK$;l$)+kYRMjv3M}Hd1dXA3n~GQC*<=fKEu?B)hkwq)ltu2ipkd z9>7xmy2@mYM3>kKJnW9|&hQ=g;vu9pI`L9p#4s}KHFB@#pSI%`Rff$$FKtM)d;a`L zV`B?QJ78l0zaW!*M#`6zK_x%js`*#62huR03s9!gwTm?QnGu$W_8wU!I?3q2Xzlr} zX)oi4qlY5^e6Ghuj*Nyx^9C&%P&L4z*7Wdr_Dh^Uq4!8@OXbGevz)*Csz<;oBoq`h z6T!GT!2!9TtZ)I5eW2L@=N>#<7y8%WytaDnCt5#CPy+!fUj=0NcT^!h1rZ8Y7?{DT zn%5aIZr)t;u+W`Hxp@k7sFd2V1!gH9$iG=tWdSn1l2_F%$sB*an}m4QDvDlRbclku6IQ zuMDGQ<~iUV(zwG{zNAXHLzv$}bYs|xgy9Yj8bQ92=iekF;~_j*LY^g5VFJlJ*f4gx6@_uM3UdWu+r9I6}iFpHAc+ zfELj_2L28{J0cTAr(<{sK9E&_y};a6_s5QWK5&V+#{8jpuwQM`mn5Q zd(w^Ntm_$v@jFv<^KKHrJ*OX>_UoC_4?SA%&>iAey_OBqraMMC^pE-<1V#DOotoDR zH8FQx6X;Z7PuH(!UGrxReQt$fQvZP97K-`d<0>yP#)xDYOPwxiS-aVf8Zg#0{aTAlVvrYw#qCs2zHbd zL}*-XD+@w71O#D-8i+pj0q zB{7cS3*J59xI*xu36dRI5}FzH$}TXSC(=me;v)U9pyns<@^#J`OhB*)SsGKdpGXVmU%H_PxbS?bh#DAW$ZVqI`P#mSqKXGU!+nn z3j7cP_BR2>$mkr9WC>vwyKaNHWpkx4(gEa3!vUMfdzr4G64!T6bfF={)$T@}L7&{wku)w?VA7>7slqG23x4VWD=s=@%0Aasm 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 elements sat above standard z-index. Solved via Popover API. * 5. Event Swallowing: HA's top-level components called stopPropagation() on clicks. Solved via Mathematical Hit-Testing. - * 6. Ghost Clicks: Touchscreens firing rapid touchend/mousedown/click events caused through-clicks. Solved via 400ms Shield. + * 6. Closing Ghost Clicks: Rapid touchend/click events caused through-clicks. Solved via 400ms Shield. * 7. Websocket Jitter: Rapid double-taps over CDP/remote connections. Solved via 250ms Debounce. * 8. Enter Key vs SPA Forms: Forcing native form.submit() broke SPA API authentication sequences. * Solved by dispatching fully simulated keydown/keypress/keyup sequences. - * 9. Opening Ghost Clicks: Tapping low inputs caused the trailing click to hit the newly spawned keyboard. + * 9. Opening Ghost Clicks: Tapping low inputs caused the trailing click to instantly hit the spawned keyboard. * Solved via 400ms Opening Shield to absorb residual touch events. + * 10. Ultimate Scalability: Fixed `px` values were removed. Width/Height are now global variables, + * and font sizes strictly scale to the Container Height using CSS `cqh` units and flexbox. */ (function() { console.log('[VKB] Script injected. Initializing...'); + // --- CONFIGURATION VARIABLES --- + // Scalability variables. Adjust these to fit your display (e.g., 720x1280 screens). + // The keyboard is fully responsive. Keys and font sizes will automatically + // recalculate based on these two variables via flexbox and CSS container queries (cqh). + const VKB_WIDTH = '100%'; // Use a fixed width like '800px' on large horizontal displays. + const VKB_HEIGHT = '196px'; // Total keyboard vertical height. Default reflects the old 44px * 4 rows. + // Prevent duplicate injections if CDP evaluates this script multiple times if (window.__kioskKeyboardInitialized) { console.log('[VKB] Already initialized. Aborting duplicate injection.'); @@ -81,15 +90,18 @@ // NOTE ON !IMPORTANT: Home Assistant uses aggressive global resets. // NOTE ON POPOVER: We use display: flex hooked to :popover-open to utilize the #top-layer API. + // NOTE ON SCALING: Container uses 'container-type: size' so fonts dynamically track VKB_HEIGHT. style.textContent = ` #kiosk-vkb-container { position: fixed !important; top: auto !important; - bottom: -500px !important; + bottom: -200vh !important; /* Forces off screen entirely regardless of height */ left: 0 !important; right: 0 !important; - margin: 0 !important; - width: 100% !important; + margin: 0 auto !important; /* Centers horizontally if width < 100% */ + width: ${VKB_WIDTH} !important; + height: ${VKB_HEIGHT} !important; + container-type: size; /* Enables CQH font scaling */ background: #1e1e1e; border-top: 2px solid #333; z-index: 2147483647; @@ -115,18 +127,18 @@ margin-bottom: 4px; width: 100%; gap: 4px; + flex: 1; /* Automatically stretches height evenly */ } .vkb-row:last-child { margin-bottom: 0; } .vkb-key { - flex: 1; - height: 44px; + flex: 1; /* Automatically stretches width evenly */ background: #383838; color: #f8f8f2; border: 1px solid #2a2a2a; border-radius: 2px; - font-size: 1.4rem; + font-size: 11.5cqh; /* Scales precisely to parent container height */ font-weight: normal; cursor: pointer; display: flex; @@ -135,15 +147,15 @@ padding: 0; } .vkb-key:active { background: #555555; } - .vkb-key-layout { background: #324a5f; color: #e2e8f0; font-size: 1.1rem; } + .vkb-key-layout { background: #324a5f; color: #e2e8f0; font-size: 9cqh; } .vkb-key-layout:active { background: #233544; } - .vkb-key-special { background: #485c4a; color: #e2e8f0; font-size: 1.3rem; } + .vkb-key-special { background: #485c4a; color: #e2e8f0; font-size: 11cqh; } .vkb-key-special:active { background: #364538; } - .vkb-key-large-icon { font-size: 1.8rem; } - .vkb-key-backspace { font-size: 2.2rem; } - .vkb-key-hide { background: #8b3a3a; color: #e2e8f0; font-size: 1.5rem; } + .vkb-key-large-icon { font-size: 15cqh; } + .vkb-key-backspace { font-size: 18cqh; } + .vkb-key-hide { background: #8b3a3a; color: #e2e8f0; font-size: 12.5cqh; } .vkb-key-hide:active { background: #6b2a2a; } - .vkb-key-enter { background: #E95420; color: #ffffff; border-color: #c94618; font-size: 1.5rem; } + .vkb-key-enter { background: #E95420; color: #ffffff; border-color: #c94618; font-size: 12.5cqh; } .vkb-key-enter:active { background: #c94618; } .vkb-key-space { flex: 3; } .vkb-key-arrow { flex: 0.8; } @@ -308,7 +320,6 @@ case '⏎': if (activeInput.isContentEditable) { document.execCommand('insertParagraph', false, null); - // Explicitly notify that content changed activeInput.dispatchEvent(new Event('input', { bubbles: true, composed: true })); } else if (activeInput.tagName === 'TEXTAREA') { insertText('\n'); @@ -377,7 +388,7 @@ function hideKeyboard() { console.log('[VKB] hideKeyboard triggered. Activating ghost-click shield.'); - // GHOST-CLICK SHIELD TRIGGER + // CLOSING GHOST-CLICK SHIELD TRIGGER // Touch screens send a delayed "click" event after pointerdown. We set a 400ms // deadzone to prevent that click from falling through to HA elements beneath us. window.__vkbClosingShield = Date.now(); @@ -462,7 +473,7 @@ interactionEvents.forEach(ev => { document.addEventListener(ev, function(e) { - // 1. Ghost-Click Shield (Active for 400ms after closing) + // 1. Closing Ghost-Click Shield (Active for 400ms after closing) if (window.__vkbClosingShield && (Date.now() - window.__vkbClosingShield < 400)) { e.preventDefault(); e.stopPropagation(); @@ -492,7 +503,7 @@ e.stopPropagation(); e.stopImmediatePropagation(); - // OPENING SHIELD CHECK: Ignore keys if the keyboard JUST appeared + // 3. Opening Ghost-Click Shield (Active for 400ms after spawning) if (window.__vkbOpeningShield && (Date.now() - window.__vkbOpeningShield < 400)) { return; } @@ -500,7 +511,7 @@ // Only process keypress logic on the initial down-touch if (['pointerdown', 'touchstart', 'mousedown', 'click'].includes(ev)) { - // 3. The Websocket Jitter Debounce + // 4. The Websocket Jitter Debounce // Prevent rapid double-clicks from misfiring the same key. if (window.__vkbLastTap && (Date.now() - window.__vkbLastTap < 250)) return; window.__vkbLastTap = Date.now(); @@ -519,10 +530,10 @@ if (foundKey) { const key = foundKey.dataset.key; - // Visual Feedback (Clean style reset) + // Visual Feedback (Clean style reset to fix sticking bugs) foundKey.style.background = '#555'; setTimeout(() => { - foundKey.style.background = ''; // Wipe inline style to revert to CSS classes + foundKey.style.background = ''; // Wipe inline style to revert to CSS class default }, 100); processKey(key); @@ -531,7 +542,7 @@ return; // Exit out of the interaction listener } - // 4. Outside Click Detection (Hide trigger) + // 5. Outside Click Detection (Hide trigger) // If we reach here, the user tapped OUTSIDE the geographic bounds of the keyboard. if (ev === 'pointerdown') { const path = e.composedPath ? e.composedPath() : [e.target]; @@ -548,6 +559,6 @@ }, true); // useCapture: true is REQUIRED to beat the SPA event delegation }); - console.log('[VKB] Initialization complete (Global Capture Bypass, Mathematical Hit-Test & Popover Bumping).'); + console.log('[VKB] Initialization complete (Fully Scalable, Ghost-Click Shield Active).'); })(); From 4247b348fe497cd8c53bd0cde60172f225209b05 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Wed, 11 Mar 2026 03:42:42 +1100 Subject: [PATCH 45/55] Update deviceManager.ts --- src/deviceManager.ts | 40 +--------------------------------------- 1 file changed, 1 insertion(+), 39 deletions(-) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index 2e5fa95..aec1610 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -74,46 +74,8 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< } // On-screen keyboard - //const kioskKeyboardScript = "(function(){if(document.getElementById('kiosk-vkb-container'))return;const style=document.createElement('style');style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};let currentLayout='default';let activeInput=null;let isShifted=false;const keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';document.body.appendChild(keyboardContainer);function renderKeyboard(){keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);}function hideKeyboard(){keyboardContainer.classList.remove('vkb-visible');if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(activeInput!==target){showKeyboard(target);}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});renderKeyboard();})();"; - // -- first version did not wait for DOM, trying a second version now - /* - // -- This is the second attempt. This definitely makes things work, but I feel like the Javascript does not stay around persistently. - const kioskKeyboardScript = "(function(){function initKeyboard(){if(document.getElementById('kiosk-vkb-container'))return;const style=document.createElement('style');style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};let currentLayout='default';let activeInput=null;let isShifted=false;const keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';document.body.appendChild(keyboardContainer);function renderKeyboard(){keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);}function hideKeyboard(){keyboardContainer.classList.remove('vkb-visible');if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(activeInput!==target){showKeyboard(target);}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});renderKeyboard();}if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',initKeyboard);}else{initKeyboard();}})();"; - await session.send('Page.addScriptToEvaluateOnNewDocument', { - source: kioskKeyboardScript - }); - await session.send('Page.addScriptToEvaluateOnNewDocument', { - source: "console.log('Injected onscreen keyboard JS and CSS.');" - }); */ - // -- So trying something new this time: - /* - const kioskKeyboardScript = "(function(){if(window.__kioskKeyboardInitialized)return;window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head)return false;if(!document.getElementById('kiosk-vkb-style')){const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(ensureDOM()){if(activeInput!==target){showKeyboard(target);}}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});console.log('Kiosk Virtual Keyboard Initialized (CDP Mode Active).');})();"; - await session.send('Page.addScriptToEvaluateOnNewDocument', { source: kioskKeyboardScript }); - */ - // -- Found out something new, #shadow-root is a bigger problem than I ever knew. lets try something else now: - //const kioskKeyboardScript = "(function(){if(window.__kioskKeyboardInitialized)return;window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head)return false;if(!document.getElementById('kiosk-vkb-style')){const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=(e.composedPath&&e.composedPath()[0])||e.target;if(!target||!target.tagName)return;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';const isEditable=target.isContentEditable;if(isInput||isTextArea||isEditable){if(ensureDOM()){if(activeInput!==target){showKeyboard(target);}}}},true);document.addEventListener('pointerdown',function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){const target=(e.composedPath&&e.composedPath()[0])||e.target;const path=e.composedPath?e.composedPath():[e.target];const clickedInsideKeyboard=path.includes(keyboardContainer);const isInput=target.tagName==='INPUT';const isTextArea=target.tagName==='TEXTAREA';const isEditable=target.isContentEditable;const clickedOnInput=isInput||isTextArea||isEditable;if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}},true);console.log('Kiosk Virtual Keyboard Initialized (Shadow DOM & Rich Text Support).');})();"; - // -- So the above worked really well for standard Input and Textarea objects, but HA Textfields are super cooked - //const kioskKeyboardScript = "(function(){if(window.__kioskKeyboardInitialized)return;window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head)return false;if(!document.getElementById('kiosk-vkb-style')){const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;i','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}const key=e.target.dataset.key;console.log('[VKB] Key pressed:',key);const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){console.log('[VKB] focusin event fired.',e.target);const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;i','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}const key=e.target.dataset.key;console.log('[VKB] Key pressed:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function checkAndShowKeyboard(e){const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;iel&&el.id==='kiosk-vkb-container');if(isKeyboardClick){console.log('[VKB] Pointer down inside keyboard. Staying open.');return;}let clickedOnInput=false;for(let i=0;i tag absorbs everything. Trying some more click logic now: - //const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;margin:0;border:none;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}const key=e.target.dataset.key;console.log('[VKB] Key pressed:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover&&!keyboardContainer.matches(':popover-open')){keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function checkAndShowKeyboard(e){const path=e.composedPath?e.composedPath():[e.target];let targetInput=null;for(let i=0;i=rect.top&&e.clientY<=rect.bottom&&e.clientX>=rect.left&&e.clientX<=rect.right){console.log('[VKB] Pointer down mathematically inside keyboard bounds. Staying open.');return;}const path=e.composedPath?e.composedPath():[e.target];let clickedOnInput=false;for(let i=0;i','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px !important;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover&&!keyboardContainer.matches(':popover-open')){keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function resolveInputFromPath(path){for(let i=0;i=rect.top&&e.clientY<=rect.bottom&&e.clientX>=rect.left&&e.clientX<=rect.right){console.log('[VKB] Pointer down mathematically inside keyboard bounds. Intercepting.');e.preventDefault();e.stopPropagation();const path=e.composedPath?e.composedPath():[e.target];let keyBtn=null;for(let i=0;i{keyBtn.style.background=originalBg;},100);processKey(key);}return;}const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside keyboard and input. Triggering hide.');hideKeyboard();}else{console.log('[VKB] Pointer down on an input. Staying open.');}}},true);console.log('[VKB] Initialization complete (Global Capture Bypass & Target Strict).');})();"; - // -- Okay so the events and dialogs and popovers do all sorts of funky nonsense. We are not going the nuclear route. It's intercept and block ALL mouse and touch events when the keyboard is open lol - // *** const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px !important;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover){if(keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function resolveInputFromPath(path){for(let i=0;i{document.addEventListener(ev,function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(ev==='pointerdown'||ev==='touchstart'){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<100))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;const originalBg=foundKey.style.background;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background=originalBg;},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Global Capture Bypass, Mathematical Hit-Test & Popover Bumping).');})();"; - // -- *** SUCCESS - the above worked really nicely. now adding a few more finishing touches - adding a red down arrow to hide the keyboard manually - //const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out, display 0.25s allow-discrete;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}@starting-style{#kiosk-vkb-container.vkb-visible{bottom:-500px !important;}}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','⌫','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{if(keyboardContainer.showPopover){if(keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}keyboardContainer.showPopover();}keyboardContainer.classList.add('vkb-visible');setTimeout(()=>{if(activeInput&&activeInput.scrollIntoView){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);});}function hideKeyboard(){console.log('[VKB] hideKeyboard triggered.');if(keyboardContainer){keyboardContainer.classList.remove('vkb-visible');setTimeout(()=>{if(keyboardContainer.hidePopover&&keyboardContainer.matches(':popover-open')){keyboardContainer.hidePopover();}},260);}if(activeInput&&activeInput.blur){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];function resolveInputFromPath(path){for(let i=0;i{document.addEventListener(ev,function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(ev==='pointerdown'||ev==='touchstart'){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<100))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;const originalBg=foundKey.style.background;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background=originalBg;},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Global Capture Bypass, Mathematical Hit-Test & Popover Bumping).');})();"; - // -- The above has a debounce issue where the same key keeps getting clicked - //const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-backspace{font-size:2.2rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='⌫'){keyBtn.classList.add('vkb-key-backspace');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{document.addEventListener(ev,function(e){if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(['pointerdown','touchstart','mousedown','click'].includes(ev)){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<250))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background='';},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Global Capture Bypass, Mathematical Hit-Test & Popover Bumping).');})();"; - // -- The debounce above worked really well for mistriggered double clicks on the keyboard. Noticed the same issue is there with the keyboard minimise, this fixed below - //const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-backspace{font-size:2.2rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='⌫'){keyBtn.classList.add('vkb-key-backspace');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{document.addEventListener(ev,function(e){if(window.__vkbClosingShield&&(Date.now()-window.__vkbClosingShield<400)){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();return;}if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(['pointerdown','touchstart','mousedown','click'].includes(ev)){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<250))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background='';},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Ghost-Click Shield Active).');})();"; - // -- My previous implementation of the ENTER key was narrowminded and caused issues with FORM elements that I did not see coming, trying something new now - const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-500px !important;left:0 !important;right:0 !important;margin:0 !important;width:100% !important;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:1.8rem;}.vkb-key-backspace{font-size:2.2rem;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:1.5rem;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='⌫'){keyBtn.classList.add('vkb-key-backspace');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{document.addEventListener(ev,function(e){if(window.__vkbClosingShield&&(Date.now()-window.__vkbClosingShield<400)){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();return;}if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(window.__vkbOpeningShield&&(Date.now()-window.__vkbOpeningShield<400))return;if(['pointerdown','touchstart','mousedown','click'].includes(ev)){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<250))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background='';},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Ghost-Click Shield Active).');})();"; + const kioskKeyboardScript = "(function(){console.log('[VKB] Script injected. Initializing...');const VKB_WIDTH='100%';const VKB_HEIGHT='196px';if(window.__kioskKeyboardInitialized){console.log('[VKB] Already initialized. Aborting duplicate injection.');return;}window.__kioskKeyboardInitialized=true;let keyboardContainer=null;let currentLayout='default';let activeInput=null;let isShifted=false;const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['▼','?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['▼','=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['▼','ABC',',','◀','Space','▶','.','⏎']]};function ensureDOM(){if(!document.body||!document.head){console.warn('[VKB] document.body or head not ready.');return false;}if(!document.getElementById('kiosk-vkb-style')){console.log('[VKB] Injecting CSS overrides.');const style=document.createElement('style');style.id='kiosk-vkb-style';style.textContent=`#kiosk-vkb-container{position:fixed !important;top:auto !important;bottom:-200vh !important;left:0 !important;right:0 !important;margin:0 auto !important;width:${VKB_WIDTH} !important;height:${VKB_HEIGHT} !important;container-type:size;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;touch-action:manipulation;border:none;}#kiosk-vkb-container:popover-open{display:flex;}#kiosk-vkb-container.vkb-visible{bottom:0 !important;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;flex:1;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:11.5cqh;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:9cqh;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:11cqh;}.vkb-key-special:active{background:#364538;}.vkb-key-large-icon{font-size:15cqh;}.vkb-key-backspace{font-size:18cqh;}.vkb-key-hide{background:#8b3a3a;color:#e2e8f0;font-size:12.5cqh;}.vkb-key-hide:active{background:#6b2a2a;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:12.5cqh;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);}if(!keyboardContainer){console.log('[VKB] Creating keyboard DOM elements.');keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';if(keyboardContainer.popover!==undefined)keyboardContainer.popover='manual';renderKeyboard();}if(!document.body.contains(keyboardContainer)){console.log('[VKB] Appending keyboard to body.');document.body.appendChild(keyboardContainer);}return true;}function renderKeyboard(){if(!keyboardContainer)return;keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(['⇧','↹'].includes(key)){keyBtn.classList.add('vkb-key-large-icon');}if(key==='⌫'){keyBtn.classList.add('vkb-key-backspace');}if(key==='▼'){keyBtn.classList.add('vkb-key-hide');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function processKey(key){if(!activeInput){console.warn('[VKB] Key pressed but activeInput is null.');return;}console.log('[VKB] Processing key:',key);if(typeof activeInput.focus==='function'){activeInput.focus();}const insertText=(text)=>{if(activeInput.isContentEditable){document.execCommand('insertText',false,text);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;}};switch(key){case'▼':hideKeyboard();break;case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(activeInput.isContentEditable){document.execCommand('delete',false,null);}else{let val=activeInput.value||'';let start=activeInput.selectionStart||0;let end=activeInput.selectionEnd||0;if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}}break;case'Space':insertText(' ');break;case'◀':if(!activeInput.isContentEditable){let start=activeInput.selectionStart||0;if(start>0)activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(!activeInput.isContentEditable){let end=activeInput.selectionEnd||0;let valLen=(activeInput.value||'').length;if(end{document.addEventListener(ev,function(e){if(window.__vkbClosingShield&&(Date.now()-window.__vkbClosingShield<400)){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();return;}if(keyboardContainer&&keyboardContainer.classList.contains('vkb-visible')){let x=e.clientX;let y=e.clientY;if(x===undefined&&e.changedTouches&&e.changedTouches.length>0){x=e.changedTouches[0].clientX;y=e.changedTouches[0].clientY;}if(x===undefined||y===undefined)return;const rect=keyboardContainer.getBoundingClientRect();if(y>=rect.top&&y<=rect.bottom&&x>=rect.left&&x<=rect.right){e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();if(window.__vkbOpeningShield&&(Date.now()-window.__vkbOpeningShield<400))return;if(['pointerdown','touchstart','mousedown','click'].includes(ev)){if(window.__vkbLastTap&&(Date.now()-window.__vkbLastTap<250))return;window.__vkbLastTap=Date.now();const keys=keyboardContainer.querySelectorAll('.vkb-key');let foundKey=null;for(let i=0;i=kRect.top&&y<=kRect.bottom&&x>=kRect.left&&x<=kRect.right){foundKey=keys[i];break;}}if(foundKey){const key=foundKey.dataset.key;foundKey.style.background='#555';setTimeout(()=>{foundKey.style.background='';},100);processKey(key);}}return;}if(ev==='pointerdown'){const path=e.composedPath?e.composedPath():[e.target];const clickedOnInput=resolveInputFromPath(path)!==null;if(!clickedOnInput){console.log('[VKB] Pointer down outside. Hiding.');hideKeyboard();}else{console.log('[VKB] Pointer down on input. Staying open.');}}}},true);});console.log('[VKB] Initialization complete (Fully Scalable, Ghost-Click Shield Active).');})();"; await session.send('Page.addScriptToEvaluateOnNewDocument', { source: kioskKeyboardScript }); - //--- Tried something else in inputRouter without much success, reverting back to this await session.send('Page.startScreencast', { format: 'png', From f9b196580867bf59693ec8b8ae6a26e106017a41 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Wed, 11 Mar 2026 03:43:49 +1100 Subject: [PATCH 46/55] Update inputRouter.ts --- src/inputRouter.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/inputRouter.ts b/src/inputRouter.ts index 44c2b7e..37350b8 100644 --- a/src/inputRouter.ts +++ b/src/inputRouter.ts @@ -39,11 +39,6 @@ export class InputRouter { if (dev.url !== pkt.url) await dev.cdp.send('Page.navigate', { url: pkt.url }); - - // Onscreen keyboard script inject - //const kioskKeyboardScript = "(function(){function initKeyboard(){if(document.getElementById('kiosk-vkb-container'))return;const style=document.createElement('style');style.textContent=`#kiosk-vkb-container{position:fixed;bottom:-500px;left:0;width:100%;background:#1e1e1e;border-top:2px solid #333;z-index:2147483647;display:flex;flex-direction:column;padding:4px;box-sizing:border-box;user-select:none;-webkit-user-select:none;font-family:'DejaVu Sans','Liberation Sans',Ubuntu,Roboto,sans-serif;transition:bottom 0.25s ease-out;touch-action:manipulation;}#kiosk-vkb-container.vkb-visible{bottom:0;}.vkb-row{display:flex;justify-content:center;margin-bottom:4px;width:100%;gap:4px;}.vkb-row:last-child{margin-bottom:0;}.vkb-key{flex:1;height:44px;background:#383838;color:#f8f8f2;border:1px solid #2a2a2a;border-radius:2px;font-size:1.4rem;font-weight:normal;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}.vkb-key:active{background:#555555;}.vkb-key-layout{background:#324a5f;color:#e2e8f0;font-size:1.1rem;}.vkb-key-layout:active{background:#233544;}.vkb-key-special{background:#485c4a;color:#e2e8f0;font-size:1.3rem;}.vkb-key-special:active{background:#364538;}.vkb-key-shift{font-size:1.8rem;}.vkb-key-enter{background:#E95420;color:#ffffff;border-color:#c94618;font-size:1.5rem;}.vkb-key-enter:active{background:#c94618;}.vkb-key-space{flex:3;}.vkb-key-arrow{flex:0.8;}`;document.head.appendChild(style);const layouts={default:[['q','w','e','r','t','y','u','i','o','p'],['a','s','d','f','g','h','j','k','l'],['⇧','z','x','c','v','b','n','m','⌫'],['?123',',','◀','Space','▶','.','⏎']],shift:[['Q','W','E','R','T','Y','U','I','O','P'],['A','S','D','F','G','H','J','K','L'],['⇧','Z','X','C','V','B','N','M','⌫'],['?123',',','◀','Space','▶','.','⏎']],symbols:[['1','2','3','4','5','6','7','8','9','0'],['@','#','$','%','&','*','-','+','(',')'],['ABC','!','\"',\"'\",':',';','/','?','⌫'],['=\\\\<',',','◀','Space','▶','.','⏎']],extended:[['~','|','^','_','=','{','}','[',']','✓'],['<','>','£','€','¢','°','±','÷','×','\\\\'],['?123','↹','©','®','™','¿','¡','§','⌫'],['ABC',',','◀','Space','▶','.','⏎']]};let currentLayout='default';let activeInput=null;let isShifted=false;const keyboardContainer=document.createElement('div');keyboardContainer.id='kiosk-vkb-container';document.body.appendChild(keyboardContainer);function renderKeyboard(){keyboardContainer.innerHTML='';const layout=layouts[currentLayout];layout.forEach(row=>{const rowDiv=document.createElement('div');rowDiv.className='vkb-row';row.forEach(key=>{const keyBtn=document.createElement('button');keyBtn.className='vkb-key';keyBtn.textContent=key==='Space'?'':key;keyBtn.dataset.key=key;if(['?123','ABC','=\\\\<'].includes(key)){keyBtn.classList.add('vkb-key-layout');}if(['⇧','⌫','◀','▶','↹'].includes(key)){keyBtn.classList.add('vkb-key-special');}if(key==='⇧'){keyBtn.classList.add('vkb-key-shift');}if(key==='Space'){keyBtn.classList.add('vkb-key-space');}if(key==='◀'||key==='▶'){keyBtn.classList.add('vkb-key-arrow');}if(key==='⏎'){keyBtn.classList.add('vkb-key-enter');}if(key==='⇧'&&isShifted){keyBtn.style.background='#e2e8f0';keyBtn.style.color='#121212';}keyBtn.addEventListener('mousedown',handleKeyPress);keyBtn.addEventListener('touchstart',handleKeyPress,{passive:false});rowDiv.appendChild(keyBtn);});keyboardContainer.appendChild(rowDiv);});}function handleKeyPress(e){e.preventDefault();if(!activeInput)return;const key=e.target.dataset.key;let val=activeInput.value;let start=activeInput.selectionStart;let end=activeInput.selectionEnd;const insertText=(text)=>{activeInput.value=val.substring(0,start)+text+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start+text.length;};switch(key){case'⇧':isShifted=!isShifted;currentLayout=isShifted?'shift':'default';renderKeyboard();break;case'?123':currentLayout='symbols';isShifted=false;renderKeyboard();break;case'ABC':currentLayout='default';isShifted=false;renderKeyboard();break;case'=\\\\<':currentLayout='extended';isShifted=false;renderKeyboard();break;case'↹':insertText('\\t');break;case'⌫':if(start===end&&start>0){activeInput.value=val.substring(0,start-1)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start-1;}else if(start!==end){activeInput.value=val.substring(0,start)+val.substring(end);activeInput.selectionStart=activeInput.selectionEnd=start;}break;case'Space':insertText(' ');break;case'◀':if(start>0){activeInput.selectionStart=activeInput.selectionEnd=start-1;}break;case'▶':if(end{if(activeInput){activeInput.scrollIntoView({behavior:'smooth',block:'center'});}},250);}function hideKeyboard(){keyboardContainer.classList.remove('vkb-visible');if(activeInput){activeInput.blur();}activeInput=null;isShifted=false;currentLayout='default';}const validTypes=['text','email','number','password','search','tel','url'];document.addEventListener('focusin',function(e){const target=e.target;const isInput=target.tagName==='INPUT'&&validTypes.includes(target.type);const isTextArea=target.tagName==='TEXTAREA';if(isInput||isTextArea){if(activeInput!==target){showKeyboard(target);}}});document.addEventListener('pointerdown',function(e){if(keyboardContainer.classList.contains('vkb-visible')){const clickedInsideKeyboard=keyboardContainer.contains(e.target);const clickedOnInput=e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA';if(!clickedInsideKeyboard&&!clickedOnInput){hideKeyboard();}}});renderKeyboard();}if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',initKeyboard);}else{initKeyboard();}})();"; - //await dev.cdp.send('Runtime.evaluate', { expression: kioskKeyboardScript }); - // --- This method seems to do something else than what I expected } } From f9643f937de0841d0f75d008bda7870e0e5ff48b Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Fri, 13 Mar 2026 21:10:03 +1100 Subject: [PATCH 47/55] Delete images/1.png --- images/1.png | Bin 88184 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 images/1.png diff --git a/images/1.png b/images/1.png deleted file mode 100644 index c4e08cdb0ba1e867d3b76ba4584b48bc37c53e14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88184 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 AApigX From 8483b646035792f86fdfc4db230c33f738ba7f2c Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Fri, 13 Mar 2026 21:10:34 +1100 Subject: [PATCH 48/55] Delete images/2.png --- images/2.png | Bin 140758 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 images/2.png diff --git a/images/2.png b/images/2.png deleted file mode 100644 index eb6a4f8510870875840115fe848b530b7b04d163..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140758 zcmeGEcRbep8$XQOP9rNT*`utCLb9F6-kWU7NXVA$v@L-~D*p*W-#JUQb8$3@H;S4i3&4bv0!J z92`6>{9A$|g74HHq$$DwaJ>yw(KwZ#n3v!W1h*8m6>)HCQpgVN2;t8po@(aaI5_k? z$iKMi2Hfj7I44Ew%8Et-*1uc)?=vq2E}VpvKQHg}+1dK}H1^7e8xQ+msZSI&s9O-0 zJaRe+mp&k8p1$&lh@8!n_)FL~+*o|aZv(ZIF#~dv&u({KeBWpB;+2KF_1(s1@_xym zsh#I^biR)?KL0Vrwk;>VCU&c#-7#@yucH5VWsvt+>D!|>0|#$r-x=y^h>&+8FD*Jz ze%=3l{b4mmh4=KkuCt}4+q`&;9V7B;yi`Gr6@I&GKkxg0zTafmzc(1Oqwf3PH(CC_Z^DlM-`J3{1QZ<_2j|B4nYWsJQELVo zlF9gdPM#=^=|I-PG!b(A7&`?Gl7Y?0!>yJZLP{EeN-QfOtz(Ps#Zk**+GmShh}=v3 zmSg86al-X@F~M>vcN^hUY_o6by7T&C3>v8NIe+^klxs8#}DGmzFW%ZvHvjtKhEI$c;^A^;K)87+iQiA0yVWk||XU z;js{ZW@2=l_yB5*1Jf{bJQy<4o7R`V&wFX~rDB-rC=rtq2Z3Ne=|oAU=C;ALeM$9I zj}gPLTpza5??$ZOrDa*ZUu7!jle+@z+MzV2#-3Lc=BnW0Uo0xhEm%v7{WR2XFrc)z zmASC0TxD2g89SlA=m?@06F#S66} zgKBqawW^dvxzHw5(Ov%jqI>#$wZ2;igsXdly+$U7)#bEd`;1EiR7F+HPx|DR#f3iIVmo>16XDq3 zJ6>+MF8oT5mwNd^jmB@kco1&U zoQXz9bPF<56xNqRCc)q3<2y8hFlSP8jdN+L4w@mtaMnlIpd~31@|H6}-z)dA9BG633mAeV zIeIinzCjsngQyyx-Q>S)uP7!>S^2bpq;7jfHZ7jJOL7n6=vY-}PZfl?C zODYQ8Wn5lM?s?D?F#&K;A&(!_xb+(;OFI|1(cKS9a?)@HKMyA`*aX*H{(dRKdNv)+ z@#JHEWhKSOj~`24yy%|q&wMbjFdj!6#kH!(ENW;_|;vWqJ# zkQfaKAd_m=oGrRXP7$vK&SE)|_cPcN0^_898QMn9AGpIsg+-~HtO zHY)6RAq=t}C0N*PFUlL6cdy{JQkCY3PJTn7;Cyjy!pLrZ$69(0ag%(J0Us}Z_9V_{ zFBTGjl-*mv3jSEt-=0jU&-lD-hK{B&eyl|lQ`?bRy12aD@iydOeRnR!0k&LIQ}f-z zW_y31k%^H~ynwFd?^LY|HL%d&jYJzv8Vwm4nVGfqb- zqSB_7VzQnieKFs!sWS0~5Ch7+ltGq6ZA9$B$D14&1<0%Yo4ox3^Fz^$+bssEc^y}E z<%vJ?U*EY;fz_5@ne8$#-0+d3CB@d&(d8cgytvUV97-Ka!GZ>G+})MT$jJCSsvB}q z|2#!3hxkghQ0ii1o=b2`OXWYMq8mbUL#k}uR|aIFkb9<--J+skmJBCm3#PJseW$zL zeNse5=6+?R(CFA060=79ghF%%@z;C31}7&IdwQ;;I6PM;#GlHCu{t<7C_bzFbyIPt zu#nzTU;e#?8oeTuCchGYyZWAsp!SHe467<^*RcDKH|La;l$>wh?gH!`4*+bt=Df^YnVSA~2MDmYe;FBx0+im`+2Nvz zClLMzNtvCU-R4mPnHv=qwYatxYsYA2W~LzZjKaFl(JNn0V_w)43P$z?&Ic%91J+wU zdMAZx?{2kBXI*X&*FYhg}qN<0O$ZG{0O#!^169rW0~QJ?>iel#LjZ z3V(V>GK+L|*hy%i0pC;Ed-NA|bGp8LW2T8$X0MQOCuLHYUeGiV|Lc+F8kAMJvg(!I zT7cC)k_Qy~(&Q^JF*!+15sPnU3`Hh8n+et|CLxhuUQYJps>gLJE0#|=vghMCr7m2& z2s;RDj8l=4P5H14E4&IoezUm;JGpJs>pfc}yD3MV+T@fO@I@ z^LP=;tDK7H)eE>voaU}GZ{Bs3jH{qibHs6wqXSSF92^V>27GlY_^kZl4CTgWOOKh^ z?!>IDECnd>s;a~gf>ep!030`O-mHG}hTQa$gh09m#2Cc8HCLa{V$L8|J}P;xt$wvl z787bVC@UxsW|9B*STAf*?hfQ05(f9~Ne?fHeR_H=>d{4AqJg(XdnQWvSjj&c=r{8&^Dyk{^m)*C2No<_3zZUM@*13{%Ye#i&G1QR7=)yAx1W?_d^P`vMZ}PiQ zwfw{(5Z-dU9A8{~;nnNc1&|~!U%muzlnMaVYA#1P$R38K4l<%(NHrntCxX?eMlo14J?!GWll7zY0K)vH(ROi7$jg?t}5 zFRiY2L!>k{H&e$e>seYR!hLRSZRJ5?tgfy?8IHzYiqYVvarW@&ZEM4Us|-y{B*1Pf z+og(N8{2?#vA5aRIV3*)ba1%3W>+w2Py z6B8nml5qf7fEsFi5BleEw(rNHIYvK!&Tno$-_p_oWeyDiWMN?e_iV>2P*Ad$bZ6of z2|hkPEIQVGvOQ#NWkm^M!@|;1-_$hLSuCOUmoQ&Z*ZR6hOl&N&A5hqzO8Zlk=;l)N z#C)S;I)8p>Xei?CTRGTD0*>Mi{{8TRo9AT)lq@aJLo|!PK|t;W&fFS z1$wx^7iTM2a^Yqu1-@ldN=MBn?Y_~6PJWsUW-zX&W`j3__bB-DrzTcX~ zGFU)88y=?l_3Ia2Zu75SH*ZhYpYitg&U*5M4CCzXe(B%ZRLazD(v*U(E@fdFbR^w2 zC)+l2hkKil9BzUVF@FU{8H~TVs^M&JZ)0D-W;k=^3^2X5mK|1rTcUAasJ9Q^J66AX zg?aq=+}8HCT|fXMG#s0on~;4d!Pa{B0tgmj3g$M1l_2#pcYm~``rghR_+bwEL_04p z>Lnj0o;vmmw4^hcVSAYyMZzH@_jdlMC@J9w-MhEZhEI9QY94T@BJl3x=hq=Z?s)ke zP8+ZWuibUK;9pmA+g}dIAxxnFcpkhxBmxi)&vctaO^6s$6F17XLTlEJ$oNa^p4rF8K0qyiKZ5D-9$8+=8;XO4c)zreRre7p!G&eOtk@#_MO%^G28T9qVW`Y2P4hR2M8Ch9l z<|MP8KJ5a2i11IGfUP0bjcDOu+!UF=sQvwYycK<5YlenrrKF_b2x5GsSTK0}=^9_^ z+)PEpErD57R#vtpFeY{blnj0Qb{|j;UwRs)B>4S)x2*E`3{l0jR%*RNmyyxSj?6FWce1U#<*E&wSvfA<`)S)>Qj z8tKBPlnDn=g?miX;JMM@i3_YjwalmkYQ!l6A+y=VgM@&Vo-HjG3KQ(sj~~{+m$63t zc7cKC;9`{Whay2iLBRK+?wmK%dw)^#u~vRj5h2_)bQ(wxar0%Wfj#6M5aY$wRTYS@ zGQ*N}IK6feavvX`X>2TO2Se+w%J1*Z3;^YE-S(+{gvEfyyE6(xL^yZ?{!sZ`-Q2v6 z_I+=>3801^ChmFxQp<8=@2$V%N?}jeuyb`Ko!bBWy1KeL9J1!)ldE%@Hv0za1sC&Y zr>}ETzpAUlHaAOG*NC`I=Hcp)w9 zMgViXG9KKvWWYMRg!=@+z~(v9ZMr6HE-T9o4KfAOcHcjjx9+@tgJ9MUz)$! z`Ef7c4FqcHvP&&^A9pRd%Mr z*Z_=Cv7Jbz*VH64F)=}!eBf&Vt{WeJeS9)BI!Z7iCJJal#vo+t=twYLWdpKeyO>}j zewTfXf}>SyC`+*mCx}l#F+dJOh}q$x4D<+)or*}xLWDCgF)?}W{dIaO6G#JvuIKk} zLBW1BFlQ*Swv0qjaq)Be_Vxn5)F*xZYy!0nxiOEodl!C$>{uby5jH;}H4MPH`qn^B zo6W!9Utdc4|6zuO0dv!XqD@p06c%={v%{??Wl$MNFWbAMQI`-5ApqD3f|X?G zp(ON1REHw@J|HF`4L@*?;(V9xMwjeUu1HJ_BqXl8Tjl9BZz2fF*oDB;H2&g{Vz=<= zncIHA-=FFLnb6Z9X9b}R)shkR7;=L(WJ}-2-=7P*AEqSxn>UHzM!O;60BFfNMUY!m z=EUV7sQoGkgqU>P7oU1!d^{G)BC;oIttWD@W7Q756f*mZ1z%o!umK(K>FwRZVgDF+49#X$q@BJ2KmhwRjIn&O~%>`_anQnZNUL!aj6uTr`)CGEpJ})i1c$ohF zhtobV74;(FYXkv%Ji0b+$Ul4d)52!J&UgQfPPStzSeZ)Wjh>84mh0cV2WA=*u6KDcC z1qEmBz}&s51J+Q0Ui;g(1$Wy;rKA!vt%FExPWHzUz-XvUROXC8u4rqE12Pcsc1geA zjBo$dRn2%D|MFNrT7v+G+l0_ZVovtnzdQhnfS7lG-Fc_%OuL=VxXd(ya{6}UN=c#~ z6f1f86i5&Zu+Q;v;=~H_kGc||TfT^M&^*qF$(9J)o6p=Bs|uw%S*JV+Ukh2gC+Rgy z0LAtJ04Tfxudl#Ce(@D zAZ3vC*CMD0p$TjZQWL6*1LP3EEQoI%&1-KH!**lC+D;C_PAI1ie_h?^6R5Hc3Sxpv zg;1UA1?{duO>A5Kr{Q>Dq=G?PKGw{CU@hagcfWUzxBP{W>hdCmb~{*5SsG10@ak+x^e5y z$5(EF8-p~M6BA5v)@3H9!j~@13>RridjBE^Ng%O5Q+V!ZXR0^;>_yMx!$1HIsCTee zb5EuYFX-gTu@nZ*r<;OIU>uM`JXuej(o1bPM26%v)P7o0!Z&-ro&+ovWg@=}WqNM3 z%y4&N{A~;(NrChZJr-zxNIQRJHK=f<)Ip`gFXdiJdQ zyvLgeWM_~Ty{n7hN9e(-Ez@^>xdteiyu7*gO=~`si_N3TQlpeaQn&d0sc0T2CtP~+ z-cjW0)mTr-`=Hf;Z2)MKN}A3+maGizA=HiPu{*ZKF8OAHkO$-dELpj^061;XTOtQK z-79}A`gZT5$1H4Wgt1IT$JP0}*O1K&Sa{~|InzN18tV+QnUtaH_-_F1z*UHlR)Mqy zUQSMji#Qtf?!ak4Wb%7*4CAVz;^(KS})Z4vZtyfIyF zYS28I#s49(9F3<=w=VVQy+Wy3F4~-S$@{`15)-49z%!i+Ixk8o!5?uye~pePPVnYy zCMk1!@$5C(&7tQ zHPNDQgBr)j#~sEit#%u853U`4_Bf(H?ho4&-u*sxWF@ot;R+)oqXI82nm-*42)nPH zpFnVC&q<>$@*Xr*Q1m0BB{KUFAq0q9#BOeGE+s*d`y}+hDh>`@(1n8D58-|D)-A7% zSrx(ZK^2a={*OT5p$Uk*r$H7hWmpk)@DLQcOstZmeiDvh9h5mX75l3Rk1>;q>#e zGDV|RS>1srdgq1HM*XmabX94yEuTk6Z71v9cR$>cixLi5(hS&NDnWD!P{)y+1gIjl zFSN*rewcu}!kd|vPfDQM5pd@YML|Jw|%Dk0u9 zGld9e!$3tat-KLIg$JY};BcdN!{hj4Yx^Tzx%ltR{#@xAGhOj#0|24Dwibu-Y_`5- zjN+kB{l4jcye~;*>ef5UQSZ?sPqrQl8i9s^)PIB-@vj)@cN^UXq7PcSo~bFZ5@E|l zT*VA#qpo*_bAIUAZX^0nApJ~#y_MUI^tifV`y&Cf@fWMz#u0tl4)7E~$G4l$)@*}= znbDW};*>c7Tai=t_Pzo%Dyo!0Bj203U1S)c&n%6+qiEi*ICII>ypmcrwRB|K=O$+Ef z9D^sFGoGGMWPupXAyDg(A{(O{JbQNc=SBH=chKm8Ej@ZqAaLmB>KZ9`kDr_&U3VaA zbk;F@Lg%^@UFM?+`{&iy9lsVX#Pp=}^csqqlzHSVfVND42)JYArcm8H7YDKI%WcSJ zx7^#whk_GF@W7CxN`wCgZ(WKqcM{^%aViI7i$C0VaUJ=abN8A^y2o0v_LI{_ADSyL zs??~Q>>#uhX$gXE77RJ-eS$#Oc_tN|o=%4`jw|`}Ne8+dzO4F^OFAVbCHRWLAkn|s zUoJ<8G>$E(8UwOB%yLIdx^sxd(n%?QAASW$0ElZJK7AtER&w7^4{QDZVFpQt8h7n4 zC#Iz9__$nYx;LQWRny&q`~W&b^}GzM$f_zzo5NWK#3Si4((}SrDCR71FeMRXsMj(N zEllE)NYNP8XX|i3cwJjd(}e@h9l#1gIZuJ~cz*?i22>y4b1L!5mD!0pH^AjyXibr_ zRBl>j@8?GkScfntujSFQw(OhE;D=NbhbsUAwB8h0Tmu}OJC`14L`7tgNqmEYZz21xEgc%#}Tl#d=8p4)k^?6%qDq>7Y z9V7q7?|^fI1hCC+w2cB3Kb+|=H4eLdrf(ywg69Pg=9t$(c+??$h=*uCU_NvhC+gv_ zKlh^>?&lHpldc&P^Onn1m3Y#P?3Vm)lzdy*fyc?2lcUxX|5M2mIuz(A4EPzFu(MeY z*E#LbWR}OX!pC@FTdH9g`TYX&`8W&pZTH8{+gSOd5&8erOI7)OYN((X&?n3?qW}E)({_mq zoCT;8)bp04?5Gx6lbPBM*JdM{gqWLq7u(ebuGaBY&}(n+>>y6ICo^%Tuuac+>#^_Q z_{qM_#!lGD&gomco(etx^|nN*KU^w#A8R6%39b75p&_JhLtAJIrTWX;kW(dCkRCtG z)-@4Z(Ex=wU?!Sj{dL&E>)rm=Lrq}kQ*A>9s=#TYOG#V*{eC$xiwGj1c0{%s8u;X2;ZiTk5C*@f!@v4)EzkMMQ8qMb^Q%nMJxNgnS|d7Gf1?;OrQI zuo5AyInoS*Y=bauvPpgE*JiFwkCX>i!z;|16kw5Xx1ESi4jnJEd?+)Li3r}lcN`oW ziza3bzyYn7ivKsoo+o{}t}W=KqocHlzYXiXfB*h8XvB!x1C9#P_XEqr=ApkWItY&C zGuK{LcbCfUQQ=(?HQ#>6#KV8+nb^&F`LULsu7P`vYgxAqcetCI8$dgie)+R2kICuj z>G5iAmX>*1=ouP>rgLYwkS~UsXGB9kgt!%%LRKB!i40zUzBRHx9feL75%%)`^4*6H zEKhta|Ej5ZOi==zCVFJ#UzV^yxhIIDAjl!>0G9Yjua7IdZRF#ReUtfStwHp=6Y`3x`_Db7juJYKyC$}9ihLcD0cL35^6rY z0uEMRZ*-6ePk(Flh6n&xi{fxqN?O{kJX+1Mn`?!Re!6d}I50@jIX%q| zwjy(HJA~VX3l~1eg<&gFjpWR|SbE$0`bgnhV5=eB{0qz1h(ilEkdsiuWH=dk=X(_1+Jw6o)3UNl2?er(u;uZNQrJi;h|oEt6_K?X`GFLG`qNj1ku~aPEJGa zpc#Uc2D0}|S@{0hvu8cWG71L;r*pFHU|dSAbb4p>mT4ocWZyhbx(1<3r)#wQ=oD|# zcknkwu3aOUtREU4j+~gVKyiq`PD5Ae03vAdJ}#JBAd_xvf>46Y+Q8Qwm^R3S)6Q#e zA-7kc>P;j_c`!Q&*MJa8%_huSNJ1t#!%7oSMGU~$C^5J#3Vb5}ka-1|3W3?DIf&5R z^45I;L{e1TW#Qw2r6RiNOx5vn71FbTM)Uhy<5`6AAk8XFFgOc~!I)M`FGpQ8&ub=K z%b)g)*QqQY(K9|k6;g@Qekul8GZ*A#ymEWcc|nl`*#q($#5~sD6Ln;uFh_`ddlPsi z=iZ-dhp{K?Z0maiVXPp5Mg*+CdLf|Be6DYq#69~NLE0U6u8r%Q;mX3>0?@rcQ-&BS zR#sM2hb>qvN0!tNK-hYZsbo-NVdV%s00*J!%g!EHhzdI!uWZ{=yZ}ulQTZQ$m>Q_; z$Y=v3XtkgKRcr3vhg+vjSHPdf1yD>Omr}vOGJJsZZXm1cVwwVvqBVaymA=6GrGB)j zDFd>4Wb^^q2{4hsVxTdrzIfpRdzx<+rV@Jzw8c$Ou76LpvLTZc6l`)pI4D32`8oPY zUu^ykjEhk?wiHP`q>}*k8ukeMFd%+lnZy)zJkh_cV`@37Du21p6`O{=$@Gq{psWmW zE88hg$4LP1Ndh%ZE8)v)+Zt6c6~i3n0-JP0Vv*;iD-ah0ObYI zq`@#js2jqqpoJv&vv9q0rw0}bo|7o#1|JX7!@$XdB&(&RMX;fY?Rg941>(qq>jb*u z&!61ZA=}0ZFJ~nrB6=fmqm8+m@!BhfRl4q8`*1MmF zSrJhQiI@iusI_!-h~%F8%h69w+lZ#iYMSP;c(Ajz0z0z|%S#ML(i!J6yDkF~~YW~(&2-%z**4tledCclUkijcSFFXce>n@N7$UED9wA=%QffhBn zxiH}1<0HmcfY{{F3a-C?mX+03UiFq#bUW{Q=0&up4&H92i8G zgdqjM0WmQ##2WyEV(rc5C#DDX{A|5Q^w-sa)s2Pphw=oj9$9fP13i6pZ7rUr_PKjG zu`mDvUBuSEfA+Sv?29McE91zt&5b4>5?F@YAt_8<4l+*ECn3HpY!?D%#)l&yAtKUt zwTuQILM07LbY>QZ3IgVmuEOBW=QJ?1B|ynWKnJb@(&lY;^im^5Swjg>5Lk(lhsRp> zmuke#K}MOtO90rC+2}gkPN59i8BTapQ&Zjm_*7uegTAsmloCpd(Sbo^7~@j>Qiu#S zz?c;hE1|z3$sI2vWenKTecVxRwN+ncVu)z43!QC;82VJR{ul$Af-_j8nYlijC~O}T zB(;9Fc!Rp{;#WQTfCNz~5s`3Y17Yf_!cPVm1>=vv1(vil%4$7%);kMRe5Z|-o-y?@ z|B1Nei%&5U(Q1Y<$#c`vQ+pJjo=G!kO&PyU-SSSJv;A)X6nY0_D?FD+L7slx=DJ*F z{F*y_>F|XzKbZ$8s>sAwN^g|PIbZ^m6CS0}*FYVF;p?n=%Gl1V$B&Wdr36*}%9W^^ z8c}HR^Yc2+o$K4V3kh=T)6@2putSG8K&+4qV(8zpxqj(r)RBBxuEhGD>h@ zkr5X+HzjTwU}8qqT^|g@_o=DVyZs#|AA1+yc@KoEa_pJrwR>myq?$3vWq-8uj*bQ+`mH0 zzn{I|5oTnS3F8qW2K5TDeX8X`7}adgK&y}#RG6URQo62MPg?uu`*oWu9Lgee=fKL3 zS4QN07&IcZOvtDsjWOWOnc`pm;)SQ&CYt zfcK%^9fkl9-~grU$wwH)qX8=^VjX1UQe$a$n6E^_w~C%$F910Hf0KQH9FYKrFrAlX z{8X357?KpIx_+IuqxoJ^Wkm(>a=z-(ul%=-K^U9(0%IqdlR`)lXs0Arig&NghdEy; zrSNg2I^ghHXv@uAt_4y|(bn58)R5w?OOeCz^|3@IP z{BAp?2smlLOU)ke3CG`6?ao_;NhYA%;Etw(6(K50jX~c%eeA%j?fQUzjae6r86G z3mFsNRb3+nJYtS(@20cmxlg_;y(GWg&C4C^A&$Oe!S{SnLvJQjgP%ZO**$i#R5E>Q zxQL;upm?fGxJiU_Mkm1Hw%YT=9usG5zS@TeBAnEDiSlI~<`1YYY^a))0|tOn^)7*> z?6WkA|8=Q-=)>spyyDRJvl^eZ4PU&wnpRg)LH}7nyWrjgh1%AA#=iWLlqW*=YH`ck zBMtiZT<(`L^J+Kj$Gu2utSoT>9<%7LwJqPpiuL$VF6E49gq4NHW%1Js$R=)e_8Nyy z_?$ow52%R@_8?Q~Fg(?}(|QtexTq@M0oD_)`Aqrha}^aI>o7l;+e=ciS8{0Pe3E;T zk#6KQ2X)Yj@mHx-k@Yl6rj~E;goX8eF_r^;YvrwukB*ny$+EieTXx?ks0wdQMi_ON zGoaAsyz1mk8qN=#9%69f*=ZcPZ!W3`rKP{urx($U*9~enWGh<(HKzK4rK=r9NU>Ox zLcWx`UIYJ~i}5HLJMK4X3WKsma(c4G7E4mT1Y^;5V7YW+S}X3c(?toSyJcnWI}FPI9^=29_@biNnEv2$rM7hAtZYD!BD& zQ-*f5Qfr@as3lD!)nd6fB2?GqL(xC3@EixtZk6;23ZwM=hdFFC1v$0<={|>oNB#N<0BGJHma^jbJ=BgyRA4-?Z+5O&J73(3u3dBo&jmE#I`A=3lx?Q)Q)h z5L+CoV%^8o>?5p)4Wet_gJt;q=m(!{%TMf!4<((3z}vNoYlD`ALru-u&xp6I@`-9h zc8Pto?F(^oBFx#J$xC4?D!KQoG>N#Bl3QVsIZd)CXsI`9P_P6Zy-D8JM~}-c zlM8w3d|TFC-v91db}vW%a^83~S7Gx=byT*7f}ynfo1xv2FCz^jSL&g4x=|99De zb}y39dmKy2hK$rgqYq>s@k%lEe~q4guKjz!Q(jUK+R)Iak`I-$VTWhlM8OxHQev+v z3RYj*8$QqoA&W+znlQv+>%{HWYcT7F3??C60Ma5jD1^`~e=QU(Zk1=^Vsc~BJo5N9 z?3a`8eTw~O_AozKolJ0Bvie;0W;=1ErqqI`sW|L zccdyNwg@(6GSz+Zwg#JTn0`^?IG9(}s%$m0sTe6ht8pOYZ^v8_) zc$$+@=(^|m>E)tb$%dT8m_}6w@apv01ZaA>yWaahoKT*_TYYQrJ!ij05&i7bxxRhI zr0dkfobq5JgFvKk@7N_+b~}n4o^~pcFl8Uons4H_$4$z`hKi*L+>k1?ST7n^ihM-j zDlO|FR_s$*5z33=SueAJI*Vu_DWO|j2zVmALVc1xV?r|!o1=8JSHLEfu`jA9bUA$| z{ZFUr-ofc3A$OkJlZcCz8>pL~d4E@3SlG%l*ldwdjWglxqXu@e;ng0)&l1>*$R;&* zeKldz<%=XDSo1Wsr^Ei5+IAz?SZLIJQk@1(Mvi_+jjWFnHPP#nb*g0zNj}uemm8Et zM=!ph4fL_{xGGkDZeCPu%GmTsPb4k8_y7b~>gQip)#W83m-7eqvkb2JOrw=R%8C$XF+V>lAByc`>m(8afL^9NG5jOOLJjiZ{?EbRIsE`!+DjNYZ zROC$}O~$DWd1X);^NwqUN&^zM{+3AO+bhN%|J@d2Gp*o4>vJf-FUg3^SrPU%)UGpR z>N`&wojS09Kf`Qnd3|`d>LQ+iyeT>#pDximuP#&2&S1}K_=+vBz@?<~m+o_}hggAZt=kzTb=o7oe9eC4=vL=>Xh3L|f!D72uH)&wFZj@YRu2!YH>$a1tU0f&QJmXm#Tn%)_|6ZrZKOJU5(< z@-yv=roW(cQUMtC=oDR1$yVchbvj&4W~e%@^0xSoS3GoqZFD)jM#;!9uke; z4+gn1@ybF`Bpi_D^fAj3{ z4I-aKbKC!(24JeNX5i)4QNvVZRvH+6BM#q7>8ot;)Akpm2nhDzk2pAC+hl zO3NyIHG0RjTu6pDNho|#W;>qXEQu!#W3t6>C712YH=`XAOM9j6Mr{1_T#9G?gPv?l zZAmPz76+BJ?uT%R;`4O)_$cxU6npE7x>qKOInP~BjYCJ975^3J|GYWk+fub3aNc!> zsz`LS(kkadt;-v*l=>z*E`@w3x_K>gnV6)GnvUK|$vhQXG47MJjFs8H#jj*!mQa?< zomxacq278c=%}`X=6OoGb&B=XBrc?DJJBDDR^R$t$iUO`ben;Zgvv@Ln33E)`dUkc zI?iC?*=54u=Df_ZvS6#FB28h7{qeD4^(CqK62B2U*UyGEpYpkxl=u_-INFsQH1N<2 z%%j#ymT}5^c}aA2V@9)v46crW1>M|DRAsd1M}PHs?+5lNEwIo@p1xu0)~J`euv+ke&S5nUyo zPjc$Sm76f{UsU|D=q7d1u|jiIKH6u+iHsvM+TC$ONWkWMpJ=hf@XMkUV%dB9n{y@~ zg7rdztWW1ZOQ3F#DgP*T*_r(K{mUIIg<$48pBJ83HIJ0tzBlh5sXQHPS8zFwvgz0> z?{e9*li`Dp$aD0ie%1S~cVE9{U+eLEq_EfUO>pgF<@Y6{`j)@a8+L@ecMOO&6vyQ$ zjEaTiJXB?oa(47y_9FTmyeY6)>Hl{>neT1uIZcVnPMrcW%&WgaV-E}}_k=KJn=OB( z{`=$t?}D2hQcW%`Vq?Xp58gh#^nX5xV4GSsC&&O#!BSJeI(VbIZ^fV4KR+KSRg5uZ z5^RO>7^VzrSvd(CGXgWHOXX=U;&mC+DKdOD8tF|KGR5HlpV12 zuDrW^e5;#90IfZOamj8YicF)*z9MwG^bbdIcDrsL)G3!v9xfJo&)?lk9@OSWuQf!g z7rRsn$c?`YuSK1%=}0=OZz#(x;$Lgxr8vm(?ZoI7-b0 z$DmZnG^8AFG#b}5E8GSDCS$VLG!wnd6#|!-X$@Rmrf?BEM*2e9bs3WJ&1rSY7!F%T zyd0mIYfg-nWR^HF9PBe4+sqA~9OP|O;WI&0$z*)8t>!V|c1%<;Gn6gsC)@CgzB5fU zso~)`GPQ;KvV<~fzBsJxGHR>gse+!TvDE0+;HI+p{Ds$8WTUJ9=m>6j_{B6-G|6~1 z+)CeYIR4p6m-Z`{8qjT5$kjSAWVn=gIaKR74F(Oz^lQ8z=?}M zm^Q{?f>#}%kZ+oaqrrr+(vD+6%~6vgp%SMe)#E{W`J)vacKARIDY-YlZ}j)}cO#)e zzWH+I4+FNHi8Jhz1?fq6Y9Hw`8_blPNjg*NaU1PmDUjVPHTYvZ>Q}wVsJK|ZgmG;4 zgw*Kh7{^03JU>Qk0FB>eLV*knxyp35gt8>5v_6@#z2^rijSh@kjDBSFLovM!BAF}X zU#Q>d5jfeQEhK(tOU`a@SEK8NC8Dz*nyxZ*WIkBVP0}~q#0%#zrF4?~FYg)!8v0dA z>1oto$BjYGSnBSIR#Fwn4w8D{dK;~sPd{YFJd-V%|K0-Q z=4RJJ6E`Zsp6wd`OiK~tpumfVDL{2UO7)|48o5sLHhNUNGu4Cu6+L4vAv5xCAeyt< zUcJj;yVTto!xGdcmeNq4D`#?^N{r@Q6d>&1{bXq>q49LJbm z?<40jU+ZA7Xv*WVb0Ce{*||_BekH%$E%S?k9u(8qrN`GkToSSseHj_K!eR7C;gv+R zvpWk~yiTM;^j+#17uCbEfRXFx=$Shio|p(GdvX#==S1F`c$Xe=dnn57i%0>9*${!2 zbb=ntqPllhA7V4j>gS~wqf1C$$(+v z1KvTJO9p=r8b9}`PYF=|59p(tEiiZ}G|xGWVG?s{g`AFa>IzM)GUMB(CHPdugyZ-! zrs%eCI#Mo!v#OHxQMCNZXUVs#!qfPf)9gB;aP4AjRUP7b9#LhS;nT|EIA5boQtuD(NK|8#NQLYvN|b;3|=#I3NLwUD~OL$esANZ^(z17z%ar zrRxdN&Cn)#YVfEHko}8e=m_T^$0$k6#uHdrS|Fp|zkbn+Nr-c>>b6O^qsCu<$RL9U zKm=`F?V0E8sSPv&h7D^J#`(2d`O3ZiM}q#S{Bfn$*!&%%icR1qUn&dZ!ITs)q$`Na zl5}o%7cWTmN%7+jMEO{y|A_Lm3aBKT*(1I|j1CIl!WqD4ChpjLQB_P(xRRgN@8D#I zOZMoIS@ttUxhD~xM{lCj$uB38sR;|RKeC38Q&{&mGQeg>HfUw5KSE0^efvLk@Xyam zI&8alfVAXP(_aVF1uqTKyyw3L|;)zYfOonX$Pu4K5 zhDw^rWraopbHThcE5*>jb1`#y7nsrT_N7j34=I!zaXK%xN0Mnah!mEate*7eyux|uOPcIRk36L=jn z^xp|~{$>7|0cM(>vfz(C6Nx#`s+z}uu7(K6&S9b(*thRPhzuEPr@ba#o+k^Yz7JHZZtdEAn?yK;$J9n5{v%;e({ zp8f9xKRE>2QS@(ms|kPL%2n^=`^o<1@@*ak?Iqlt);7L%2cB~;LTm=!n7gc2yoxlj z{*U!Gjx@Td@XjRa;tq%$a_M=?9jlVqsi`TUnS`b#JvRx{uAFQ0wPj@0f{$xxN-dIc z6s0t5@+1qCY!rMN%sR}64scR?9cK_q*x_w^j;449_s+R_G{s)JSnXpc+RbYL$@ofY z@}n&aXf;$F@tY<3eu{1FrgmgqVIHpN>u8)OogmRK_;84=A%Al0m zE)xjiw(%*oMPtYYyln%V7<0%vFDYdtR$~^b?#GgKdgId7s-q|~a8XOKezoMdxReG` zsn+L+WEeZ9+}>~Yt-qlm2zD!%r&~Ly;6y!d%@8*+NCLTktasYh?Z3}B^QVSWDB|-^ z=_(PKK8II{BU96)7cUoR&=F0{81BSajSI96pOyPYgEdL2lbNTT21D%)j5{OhF_9K_ zHdccnoOndU7LAibHsEW^gcpPBi^?K8Tnbr2H&GNWpxdHcNKtf``)nlVcbvF}8in|= zT^7_$I%fL+)d1;?W)lqFF-3L`hY2NYLEDu>xAHz6^#8@&mq%l{#_b|AnGzBiqL8UV zlFUjX^Gs5yC__ad^AJ*~D5*@DRZdGxmt42~K?_>(~crWFillTw_ zB7AHTlh+1i1Mho`49%gcQ!=}C2C1q;*gke;?8~-HiC0N|Mo|>}_lWN}Z4qS{pwyAv zd9i(S(o4$>vF*&OQe!DKb#xknETn7B*2%VbH*Y({BmBn6ii=sZ^6YNKjB6ETSq_yH z-QG#6es1d?)f5S^+0Sqt@G4iEN~aU2X08u*;E7G5%QF3Q-gb`O^v{uvuJH-~krTk{ z#+T3BlTs2_IMFSc^Dgyc%tl7~1X%6`Cl9Z>k4|%KE9zxQlNSH1&!n-i+DSugTRYVo z$ru#N=6;7mL`0)#(4eV?)ps7!hax|%L!YP$o^l28V>rImhjVB7}2 zwxHn>`hSFYGAV_8y`?AldIdv%`Y{RsccHH$CQCV ziX*kO5)CvBm(96RTY=Qj+vL!3PHJ zU{e1W7YlJC5e{`=s>Y3%bNJ9PmNpfLG&7BGvV&6hE-Dg zYRDljVhiGTo#XNzCWrgh45Dm|VXc!fnPvMkI6~QiitGE%K)?aeY4i;auhXRfbOTaF zK*y|b^ik|ox_fZr*S?$l^Dl$r5QM0>Ohq%)fXPw9SFI zf#}eiF2rnENj{7ZhYzER1l*Z=*Gr}5J|7#bM1du>T#$~-#vri_E#M@|$HHVtzZ)%b z@DzgbD4*KM*y~1ufQD8vez4$ep7F`~kDc@6Q17@{^wBTcT(D4jt|u>uoE!NP3GOkTCx9-Bb#7Ph z`y9P1vOg^+^T$4~Sb4+T!7q@9OTB-1^6q%^r)^e0m}>%i6~WyirF(VLa8r{$ksJ8T z0x;+av>G6-ptY<+>RUJ&V~rmcNL(`%W*;bZbyoq2qnFU^p>P4dB-7&JBA{W_L96Hp z8WIQ>+9N~W8y^4jlea$Iw7L7?aA)IQUM5{lKMy`SEFxQ~se)e{jR1o#FOx*f$Z7_4 zUOHYI-TW?1(Diy#fW8J7 z6<6H+CvFq!LuOVMB}KDNAPghES%BFA|!(y`w)=&^@T?0(t% zTP<*(Fsx z>f#6Gq&RgAbM8!>!CmJ^NPC|k$3gPgKsqZxX`CtHBibWC3lc^*Ko4lT;LQY60O}&> zY__6r_@6$43MEZ-$7w#IczDwi>PCuuEbV)|v;E{o08m(A&P7Ht0Cjx`AMy6+nfG2z zGoOoAcN9Sz4(Ke%JzUk>1fJWW#2>4t3(-z|q;fqaW1jJscU)bywYXZ&9bI;br(p+) zH9x!AJ4=wm>1p&+c;Hd*pL(uWq;4mh@U1sO!?*)+su!P%g<&ij~STDf( zdO^GQ`dLsrHdez*St1p38C$cL5~8mLa1EH-)NuxR4m=>z%+NqV2-=Ncm{k_J0POZ{ zB6(SPgZFp#l@;UR2~55JTFx(@$w)~j`x=GgidyZLeP5h}C(9F~p`LhBGCvwN@T3C3fA!#=dT`c#V0ItCneu;180C>0oz{rWjj$X4C z+$~g%5F~*7>;e+CY83<;1Vf3s1Bu`T@MMH5bs8X2NlD3W!qh$J-M1F*1gw4Fc#jYSb-eBh z%c41Xi4!q+5K=gXM7sc{h;D@C zs9oq8At*%vaB{-gxthQU38MRX*P`@+JBmTjAS6OiIF|5kFu9r_kbv%T?d?%Pjb}K* zVAA57U>2Y?3mpzRvi||nAou#>Py0zg&v`+OA&M97ioPK+xzc-_?psEXl;qv}5;rX| z25k-@wBF$dzdeD32DUQDCIAo0>aW3-6G<)j5<nFGbV2)1{dJ$k9ZP<$!qqt?hz2DLG62v8Qt`p1Y0pN ztLA>qO~mTNYI!qNursi4=!Fol0>*JDM_cP+&t6JwXrk2vKykEyYBZi~_xHEgy?#Ay z8zVsMt27!Cd>=t7I{o9_I^0M%fc1p%2kT3a#|wffrI%hEZamO1K_nRf+9ZHUkSc3H zbRsZEpuQmsLYM(K?0{8P;d_RLhYOsVH;KUTDLsey7FNtl;*JS|c|e-~m3{jUg%v^p zvaRsn&6c=cNP?Q*Ir2d|{so|hyC)kZs9T$g7iLQeF z8gv3KT5HKe7y$r1qWW{|cv4lxoW(LDVYv_)EK`Xvcw8VkKxD$#AdDfm1&c~Z4Iui0 zi!Qr+_v##5R#4=?v)@1*Iiz2L4cW+Q@{ia+0w`j4WznmjAsUPmFQcfQN zPXrYzFYf?x8>osBaU6uG9>R+ie&a99g%PF z_TU-I{xYD_KG75QMuT8TKyx{ewdyLk()btQ5kx$Y8iov>seer1NU1v2g?P|ddJ1fA zqPZklT6gRTQU3x9{!B>3wn9TKxq}|DqPOlR13wyJr`tRu@~8`T7VJl|J8gFdJ#txNy8Mt+2PdT?8BWB z)vYaN7e6#K90BJO$C-eSv7r-h-zM<(oSYoBH_5xsOF!Z=8F+}8J~bT;D)U-sQ79WO}e;eoA?X1kVt zb$uIM8W|m1A$fvmbr#!ufu?-^>nJ2IXsb=QHzF*>{jzC`WIn3$9~Mc-c2#1QU(}-t zr@o!@&FW(sFNeoP>r-+NP|Ek8%9~ML?qBZCU!KbkIk!v>6yeg)4Q6l!#Fd+Fo3fx;sH;A&xs1(1b>;m+CVjrL3ZNV}lhz)irhJQru(zw8j^ zOk~6HhLXg;5@>+n5+E;_6<|&a<17ig0%rvkad1mu>Wh76w?SEjD2x1M$WyKDP-vG> ze38nfcvY6YeR4EGd`wD zcOkglc{?Q1@yQTMqp0iK*6A}WMJWC=Zw>r|LAnElmⅅ>yRNM6B9#rQ)A{|iVJaX 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%0Aasm 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

RQe#&;%E0a9>Mu6J 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 B6e0is From d7d2540c89fa1930c50f99abf092b4d273029d86 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Fri, 13 Mar 2026 21:10:57 +1100 Subject: [PATCH 49/55] Delete images/3.png --- images/3.png | Bin 147539 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 images/3.png diff --git a/images/3.png b/images/3.png deleted file mode 100644 index 909054ca44de60c99aa0ed56c1457616b3046c31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147539 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 P00000NkvXXu0mjfD!#eC From 757677c8f3b79d99bc70b346f95e44aeacea199f Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Fri, 13 Mar 2026 21:11:15 +1100 Subject: [PATCH 50/55] Delete images/4.png --- images/4.png | Bin 146658 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 images/4.png diff --git a/images/4.png b/images/4.png deleted file mode 100644 index 23a2571ff50af74f9a8d0e49476c40926df6e8b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146658 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 z 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 Date: Fri, 13 Mar 2026 21:11:35 +1100 Subject: [PATCH 51/55] Delete README.md --- README.md | 135 ------------------------------------------------------ 1 file changed, 135 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index 42d37a7..0000000 --- a/README.md +++ /dev/null @@ -1,135 +0,0 @@ -> [!IMPORTANT] -> -> **_About this fork_** -> -> The modifications done in my server fork are: -> 1. Provide an on-screen Latin Alphabet / English keyboard so I can do some basic key entries on my 480x480 ESP32 powered touch display. -> 2. Create a Packet #6 that can send back the Current URL displayed on the screen back to the Client. This is safe to run on the server while the client does not have the code to process Packet #6 because there is a soft failsafe in the ESP32 Client code to ignore unknown packets - -# 1. On-screen Latin Alphabet / English keyboard - -There is literally no setup required on this one, I have been lazy and haven't even put together any ENVIRONMENT variables to enable/disable the keyboard. - -All you need to do to trial this is to point your Docker Compose file at this GitHub repo (full example code below from Strange-V's hard work). - -If you find any bugs please let me know. I might be able to fix things, but if you have a fix yourself, please put in a PR. - -```yaml -services: - rwvserver: - #image: strangev/remote-webview-server:latest # use :beta for pre-release - build: https://github.com/SleepinDevil/RemoteWebViewServer.git # this line and commenting out the above line is all you need to do to try this - container_name: remote-webview-server - restart: unless-stopped - #### rest of code is all exactly the same -``` - -Raw Javascript that is being injected for those of you who are curious: https://github.com/SleepinDevil/RemoteWebViewServer/blob/main/unminified-keyboard-for-information-only.js - -Some screenshots of the onscreen keyboard: - - - -# 2. Packet #6 containing URL information to send from server to client - -This modification allows the user to know what webpage URL the display is currently showing. This allows automations to temporarily take over and show a different URL on the display and then revert back to the previous URL the display was on. This is just a nice-ity and nothing more. - -If you build this server code without having my corresponding ESP32 Client code, then your ESP32 Client will show an unknown Packet #6 warning, but this warning can be safely ignored (or you can build your ESP32 device from my Client code too). - -My ESP32 client code is here: https://github.com/SleepinDevil/RemoteWebViewClient - -# Original description from Strange-V below - -[![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct-single.svg)](https://stand-with-ukraine.pp.ua) - -# Remote WebView Server - -Headless browser that renders target web pages (e.g., Home Assistant dashboards) and streams them as image tiles over WebSocket to lightweight [clients](https://github.com/strange-v/RemoteWebViewClient) (ESP32 displays). The server supports multiple simultaneous clients, each with its own screen resolution, orientation, and per-device settings. - -![Remote WebView](/images/tiled_preview.png) - -## Features - -- Renders pages in a headless Chromium environment and streams diffs as tiles over WebSocket. -- Tile merging with change detection to reduce packet count and CPU load -- Full-frame fallback on cadence/threshold or on demand -- Configurable tile size, JPEG quality, WS message size, and min frame interval -- Per-client settings: each connection can supply its own width, height, tileSize, jpegQuality, maxBytesPerMessage, etc. -- Hot reconfigure: reconnecting with new params reconfigures the device session and triggers a full-frame refresh. -- Smarter frame gating: throttling + content-hash dedup (skip identical frames) -- No viewers = no work: frames are ACK’d to keep Chromium streaming, but tiles aren’t encoded/queued when there are no listeners. -- Touch event bridging (down/move/up) — scrolling supported (no gestures yet) -- Client-driven navigation: the client can control which page to open. -- Built-in self-test page to visualize and measure render time -- Health endpoint for container orchestration -- Optional DevTools access via TCP proxy - -## Accessing the server’s tab with Chrome DevTools -1. Make sure your server exposes the DevTools (CDP) port (e.g., 9222). - - If you use a pure Docker container, make sure you have configured and started `debug-proxy` - - If HA OS addon is used, enable `expose_debug_proxy` -1. In Chrome, go to chrome://inspect/#devices → Configure… → add your host: hostname_or_ip:9222. -1. You should see the page the server opened (the one you want to log into, e.g., Home Assistant). Click inspect to open a full DevTools window for that tab. - -## Image Tags & Versioning - -- latest — newest stable release -- beta — newest pre-release (rolling) -- Semantic versions: X.Y.Z, plus convenience tags X.Y, X on stable releases - -You can pin a stable release (`1.4.0`) or track channels (`latest`, `beta`) depending on your deployment strategy. - -## Docker Compose Example - -```yaml -services: - rwvserver: - #image: strangev/remote-webview-server:latest # use :beta for pre-release - build: https://github.com/SleepinDevil/RemoteWebViewServer.git - container_name: remote-webview-server - restart: unless-stopped - environment: - TILE_SIZE: 32 - FULL_FRAME_TILE_COUNT: 4 - FULL_FRAME_AREA_THRESHOLD: 0.5 - FULL_FRAME_EVERY: 50 - EVERY_NTH_FRAME: 1 - MIN_FRAME_INTERVAL_MS: 80 - JPEG_QUALITY: 85 - MAX_BYTES_PER_MESSAGE: 14336 - WS_PORT: 8081 - DEBUG_PORT: 9221 # internal debug port - HEALTH_PORT: 18080 - PREFERS_REDUCED_MOTION: false - USER_DATA_DIR: /pw-data - BROWSER_LOCALE: "en-US" - ports: - - "8081:8081" # WebSocket stream - - "9222:9222" # external DevTools via socat - expose: - - "18080" # health endpoint (internal) - - "9221" # internal DevTools port - volumes: - - /opt/volumes/esp32-rdp/pw-data:/pw-data - shm_size: 1gb - healthcheck: - test: ["CMD-SHELL", "curl -fsS http://localhost:18080 || exit 1"] - interval: 10s - timeout: 3s - retries: 5 - start_period: 10s - - debug-proxy: - image: alpine/socat - container_name: remote-webview-server-debug - restart: unless-stopped - network_mode: "service:rwvserver" - depends_on: - rwvserver: - condition: service_healthy - command: - - "-d" - - "-d" - - "TCP-LISTEN:9222,fork,reuseaddr,keepalive" # external DevTools port - - "TCP:127.0.0.1:9221" -``` From fbd804fab0ecd8abfe6715f5f5979c6ecf89bd88 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Fri, 13 Mar 2026 21:13:36 +1100 Subject: [PATCH 52/55] Add files via upload --- README.md | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..e18fbb1 --- /dev/null +++ b/README.md @@ -0,0 +1,92 @@ +[![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct-single.svg)](https://stand-with-ukraine.pp.ua) + +# Remote WebView Server + +Headless browser that renders target web pages (e.g., Home Assistant dashboards) and streams them as image tiles over WebSocket to lightweight [clients](https://github.com/strange-v/RemoteWebViewClient) (ESP32 displays). The server supports multiple simultaneous clients, each with its own screen resolution, orientation, and per-device settings. + +![Remote WebView](/images/tiled_preview.png) + +## Features + +- Renders pages in a headless Chromium environment and streams diffs as tiles over WebSocket. +- Tile merging with change detection to reduce packet count and CPU load +- Full-frame fallback on cadence/threshold or on demand +- Configurable tile size, JPEG quality, WS message size, and min frame interval +- Per-client settings: each connection can supply its own width, height, tileSize, jpegQuality, maxBytesPerMessage, etc. +- Hot reconfigure: reconnecting with new params reconfigures the device session and triggers a full-frame refresh. +- Smarter frame gating: throttling + content-hash dedup (skip identical frames) +- No viewers = no work: frames are ACK’d to keep Chromium streaming, but tiles aren’t encoded/queued when there are no listeners. +- Touch event bridging (down/move/up) — scrolling supported (no gestures yet) +- Client-driven navigation: the client can control which page to open. +- Built-in self-test page to visualize and measure render time +- Health endpoint for container orchestration +- Optional DevTools access via TCP proxy + +## Accessing the server’s tab with Chrome DevTools +1. Make sure your server exposes the DevTools (CDP) port (e.g., 9222). + - If you use a pure Docker container, make sure you have configured and started `debug-proxy` + - If HA OS addon is used, enable `expose_debug_proxy` +1. In Chrome, go to chrome://inspect/#devices → Configure… → add your host: hostname_or_ip:9222. +1. You should see the page the server opened (the one you want to log into, e.g., Home Assistant). Click inspect to open a full DevTools window for that tab. + +## Image Tags & Versioning + +- latest — newest stable release +- beta — newest pre-release (rolling) +- Semantic versions: X.Y.Z, plus convenience tags X.Y, X on stable releases + +You can pin a stable release (`1.4.0`) or track channels (`latest`, `beta`) depending on your deployment strategy. + +## Docker Compose Example + +```yaml +services: + rwvserver: + image: strangev/remote-webview-server:latest # use :beta for pre-release + container_name: remote-webview-server + restart: unless-stopped + environment: + TILE_SIZE: 32 + FULL_FRAME_TILE_COUNT: 4 + FULL_FRAME_AREA_THRESHOLD: 0.5 + FULL_FRAME_EVERY: 50 + EVERY_NTH_FRAME: 1 + MIN_FRAME_INTERVAL_MS: 80 + JPEG_QUALITY: 85 + MAX_BYTES_PER_MESSAGE: 14336 + WS_PORT: 8081 + DEBUG_PORT: 9221 # internal debug port + HEALTH_PORT: 18080 + PREFERS_REDUCED_MOTION: false + USER_DATA_DIR: /pw-data + BROWSER_LOCALE: "en-US" + ports: + - "8081:8081" # WebSocket stream + - "9222:9222" # external DevTools via socat + expose: + - "18080" # health endpoint (internal) + - "9221" # internal DevTools port + volumes: + - /opt/volumes/esp32-rdp/pw-data:/pw-data + shm_size: 1gb + healthcheck: + test: ["CMD-SHELL", "curl -fsS http://localhost:18080 || exit 1"] + interval: 10s + timeout: 3s + retries: 5 + start_period: 10s + + debug-proxy: + image: alpine/socat + container_name: remote-webview-server-debug + restart: unless-stopped + network_mode: "service:rwvserver" + depends_on: + rwvserver: + condition: service_healthy + command: + - "-d" + - "-d" + - "TCP-LISTEN:9222,fork,reuseaddr,keepalive" # external DevTools port + - "TCP:127.0.0.1:9221" +``` From e75e58d6dd6027c0b9ec794c2b993a4a815c21fd Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Fri, 13 Mar 2026 21:14:43 +1100 Subject: [PATCH 53/55] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5d61513..93bbdca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "remotewebviewserver", - "version": "1.1.3.b1", + "version": "1.1.3.1", "type": "module", "scripts": { "dev": "tsx src/index.ts", From f8119561ab852c4b72ce6c4cb536b2ce6874830f Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Fri, 13 Mar 2026 21:15:06 +1100 Subject: [PATCH 54/55] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 93bbdca..2feebe1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "remotewebviewserver", - "version": "1.1.3.1", + "version": "1.1.3", "type": "module", "scripts": { "dev": "tsx src/index.ts", From bf5187c3a21652f76cbb01e194c52084983bff5a Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Fri, 13 Mar 2026 21:15:55 +1100 Subject: [PATCH 55/55] Update repository.yaml --- repository.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/repository.yaml b/repository.yaml index 3867609..240fdfe 100644 --- a/repository.yaml +++ b/repository.yaml @@ -1,3 +1,3 @@ -name: Remote WebView Add-ons (SleepinDevil Fork) -url: https://github.com/SleepinDevil/RemoteWebViewServer -maintainer: SleepinDevil +name: Remote WebView Add-ons +url: https://github.com/strange-v/RemoteWebViewServer +maintainer: strange_v

RQe#&;%E0a9>Mu6J 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 B6e0is literal 0 HcmV?d00001 diff --git a/images/3.png b/images/3.png new file mode 100644 index 0000000000000000000000000000000000000000..909054ca44de60c99aa0ed56c1457616b3046c31 GIT binary patch literal 147539 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 P00000NkvXXu0mjfD!#eC literal 0 HcmV?d00001 diff --git a/images/4.png b/images/4.png new file mode 100644 index 0000000000000000000000000000000000000000..23a2571ff50af74f9a8d0e49476c40926df6e8b3 GIT binary patch literal 146658 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 z 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 Date: Sat, 7 Mar 2026 00:33:41 +1100 Subject: [PATCH 30/55] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 2dc8f7e..1c2e17b 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,12 @@ services: Raw Javascript that is being injected for those of you who are curious: https://github.com/SleepinDevil/RemoteWebViewServer/blob/main/unminified-keyboard-for-information-only.js +Some screenshots of the onscreen keyboard: +![Onscreen Keyboard](/images/1.png) +![Onscreen Keyboard](/images/2.png) +![Onscreen Keyboard](/images/3.png) +![Onscreen Keyboard](/images/4.png) + # Original description from Strange-V below [![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct-single.svg)](https://stand-with-ukraine.pp.ua) From 6d484ca2dd74f764ef82316fc54607da6d4633d7 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Sat, 7 Mar 2026 00:35:07 +1100 Subject: [PATCH 31/55] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1c2e17b..c59c47e 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,8 @@ services: Raw Javascript that is being injected for those of you who are curious: https://github.com/SleepinDevil/RemoteWebViewServer/blob/main/unminified-keyboard-for-information-only.js Some screenshots of the onscreen keyboard: -![Onscreen Keyboard](/images/1.png) + + ![Onscreen Keyboard](/images/2.png) ![Onscreen Keyboard](/images/3.png) ![Onscreen Keyboard](/images/4.png) From 68a8476afb522f2479723ae6630b2b513ba0fa61 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Sat, 7 Mar 2026 00:35:46 +1100 Subject: [PATCH 32/55] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c59c47e..497949b 100644 --- a/README.md +++ b/README.md @@ -22,10 +22,10 @@ Raw Javascript that is being injected for those of you who are curious: https:// Some screenshots of the onscreen keyboard: - -![Onscreen Keyboard](/images/2.png) -![Onscreen Keyboard](/images/3.png) -![Onscreen Keyboard](/images/4.png) + + + + # Original description from Strange-V below From 2e8a249275ebc1806446992dbec98999dfc18a90 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Sat, 7 Mar 2026 00:36:01 +1100 Subject: [PATCH 33/55] Update README.md --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index 497949b..c912f83 100644 --- a/README.md +++ b/README.md @@ -22,10 +22,7 @@ Raw Javascript that is being injected for those of you who are curious: https:// Some screenshots of the onscreen keyboard: - - - - + # Original description from Strange-V below From 72e6e86f39f64651295ff1a4d4dac096b6b012f3 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Sat, 7 Mar 2026 16:36:33 +1100 Subject: [PATCH 34/55] Update protocol.ts Added header and packet packer into protocol --- src/protocol.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/protocol.ts b/src/protocol.ts index 84a7b64..8644822 100644 --- a/src/protocol.ts +++ b/src/protocol.ts @@ -16,6 +16,8 @@ // Keepalive message: // [type u8=5][ver u8=1] // +// Current URL packet: +// [type u8][ver u8][len u32][url utf8 bytes...] export const PROTOCOL_VERSION = 1 as const; @@ -26,6 +28,7 @@ export enum MsgType { FrameStats = 3, OpenURL = 4, Keepalive = 5, + CurrentURL = 6, // <-- Current URL packet } export enum Encoding { @@ -75,9 +78,21 @@ export const TILE_HEADER_BYTES = 2 + 2 + 2 + 2 + 4; // 12 export const TOUCH_BYTES = 1 + 1 + 1 + 1 + 2 + 2; // 8 export const FRAME_STATS_BYTES = 1 + 1 + 4 + 4; // 10 export const OPENURL_HEADER_BYTES = 1 + 1 + 2 + 4; // 8 +export const CURRENTURL_HEADER_BYTES = 1 + 1 + 4; // 6 bytes: [type u8][ver u8][len u32] - Current URL header const clampU16 = (v: number) => (v < 0 ? 0 : v > 0xffff ? 0xffff : v|0); +// Current URL packet +export function buildCurrentURLPacket(url: string): Buffer { + const urlBuf = Buffer.from(url, "utf8"); + const buf = Buffer.alloc(CURRENTURL_HEADER_BYTES + urlBuf.length); + buf.writeUInt8(MsgType.CurrentURL, 0); + buf.writeUInt8(PROTOCOL_VERSION, 1); + buf.writeUInt32LE(urlBuf.length, 2); + urlBuf.copy(buf, CURRENTURL_HEADER_BYTES); + return buf; +} + export function buildTouchPacket(kind: TouchKind, x: number, y: number, pointerId = 0): Buffer { const buf = Buffer.alloc(TOUCH_BYTES); buf.writeUInt8(MsgType.Touch, 0); From 55173e30a573b5dd6876056a752138fff9e4ccb3 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Sat, 7 Mar 2026 16:39:52 +1100 Subject: [PATCH 35/55] Update broadcaster.ts --- src/broadcaster.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/broadcaster.ts b/src/broadcaster.ts index 32a4f43..a24c526 100644 --- a/src/broadcaster.ts +++ b/src/broadcaster.ts @@ -1,5 +1,5 @@ import { WebSocket } from "ws"; -import { buildFrameStatsPacket, buildFramePackets } from "./protocol.js"; +import { buildFrameStatsPacket, buildFramePackets, buildCurrentURLPacket } from "./protocol.js"; import type { FrameOut } from "./frameProcessor.js"; type OutFrame = { frameId: number; packets: Buffer[] }; @@ -62,6 +62,20 @@ export class DeviceBroadcaster { this._drainAsync(id).catch(() => {}); } + // Send packet with current URL info to connected client: + public sendCurrentURL(id: string, url: string): void { + const peers = this._clients.get(id); + if (!peers || peers.size === 0) return; + + // We use the URL packet packer from protocol.js here + const packet = buildCurrentURLPacket(url); + const st = this._ensureState(id); + + // We use frameId: 0 since this is a control packet, not an image frame + st.queue.push({ frameId: 0, packets: [packet] }); + this._drainAsync(id).catch(() => {}); + } + private _ensureState(id: string): BroadcasterState { let st = this._state.get(id); if (!st) { From beb9f4c650a26bec03866e17a9faa25b0ccc985c Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Sat, 7 Mar 2026 16:42:14 +1100 Subject: [PATCH 36/55] Update deviceManager.ts --- src/deviceManager.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/deviceManager.ts b/src/deviceManager.ts index cf7eef3..2e5fa95 100644 --- a/src/deviceManager.ts +++ b/src/deviceManager.ts @@ -203,6 +203,25 @@ export async function ensureDeviceAsync(id: string, cfg: DeviceConfig): Promise< } }); + // Function to deal with URL changing via either full page refresh or single page # follow + const handleNavigation = (url: string) => { + if (newDevice.url !== url) { + newDevice.url = url; + broadcaster.sendCurrentURL(newDevice.deviceId, url); + console.log(`[device] URL changed to: ${url}`); + } + }; + // Triggered on full page loads + session.on('Page.frameNavigated', (evt: any) => { + if (!evt.frame.parentId) { // Only track the main frame, ignore iframes + handleNavigation(evt.frame.url); + } + }); + // Triggered on Single Page App (SPA) hash or history API changes + session.on('Page.navigatedWithinDocument', (evt: any) => { + handleNavigation(evt.url); + }); + return newDevice; } From f85bf419ad08dc9196dc34e6dbb03dc6cf0b6858 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Sat, 7 Mar 2026 16:58:35 +1100 Subject: [PATCH 37/55] Update README.md --- README.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c912f83..85cd78d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ # About this fork -The modifications done in my fork is simple: provide an on-screen Latin Alphabet / English keyboard so I can do some basic keyentries on my ESP32 powered touch display. +The modifications done in my fork is simple: +1. Provide an on-screen Latin Alphabet / English keyboard so I can do some basic keyentries on my ESP32 powered touch display. +2. Create a Packet #6 that can send back the Current URL displayed on the screen back to the Client. This is safe to run on the server while the client does not have the code to process Packet #6 because there is a soft failsafe in the ESP32 Client code to ignore unknown packets + +# 1. On-screen Latin Alphabet / English keyboard There is literally no setup required on this one, I have been lazy and haven't even put together any ENVIRONMENT variables to enable/disable the keyboard. @@ -24,6 +28,12 @@ Some screenshots of the onscreen keyboard: +# 2. Packet #6 containing URL information to send from server to client + +This modification allows the user to know what webpage URL the display is currently showing. This allows automations to temporarily take over and show a different URL on the display and then revert back to the previous URL the display was on. This is just a nice-ity and nothing more. + +If you build this server code without having my corresponding ESP32 Client code, then your ESP32 Client will show an unknown Packet #6 warning, but this warning can be safely ignored (or you can build your ESP32 device from my Client code too). + # Original description from Strange-V below [![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct-single.svg)](https://stand-with-ukraine.pp.ua) From a972c0a720258cd1add6302380c52544de245f82 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Sun, 8 Mar 2026 14:32:00 +1100 Subject: [PATCH 38/55] Update README.md --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 85cd78d..f12a461 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# About this fork - -The modifications done in my fork is simple: -1. Provide an on-screen Latin Alphabet / English keyboard so I can do some basic keyentries on my ESP32 powered touch display. -2. Create a Packet #6 that can send back the Current URL displayed on the screen back to the Client. This is safe to run on the server while the client does not have the code to process Packet #6 because there is a soft failsafe in the ESP32 Client code to ignore unknown packets +> [!About this fork] +> +> The modifications done in my fork is simple: +> 1. Provide an on-screen Latin Alphabet / English keyboard so I can do some basic keyentries on my ESP32 powered touch display. +> 2. Create a Packet #6 that can send back the Current URL displayed on the screen back to the Client. This is safe to run on the server while the client does not have the code to process Packet #6 because there is a soft failsafe in the ESP32 Client code to ignore unknown packets # 1. On-screen Latin Alphabet / English keyboard From 03d5486868feb47ff65d4428db13aca2bb19c455 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Sun, 8 Mar 2026 14:33:40 +1100 Subject: [PATCH 39/55] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f12a461..a79d188 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ -> [!About this fork] +> [!IMPORTANT] > -> The modifications done in my fork is simple: +> **_About this fork_** +> +> The modifications done in my server fork are: > 1. Provide an on-screen Latin Alphabet / English keyboard so I can do some basic keyentries on my ESP32 powered touch display. > 2. Create a Packet #6 that can send back the Current URL displayed on the screen back to the Client. This is safe to run on the server while the client does not have the code to process Packet #6 because there is a soft failsafe in the ESP32 Client code to ignore unknown packets From 7a170c70f4ae70297b3afe4be1a2deeb03aad059 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Sun, 8 Mar 2026 14:34:06 +1100 Subject: [PATCH 40/55] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a79d188..d2054a7 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ > **_About this fork_** > > The modifications done in my server fork are: -> 1. Provide an on-screen Latin Alphabet / English keyboard so I can do some basic keyentries on my ESP32 powered touch display. +> 1. Provide an on-screen Latin Alphabet / English keyboard so I can do some basic key entries on my 480x480 ESP32 powered touch display. > 2. Create a Packet #6 that can send back the Current URL displayed on the screen back to the Client. This is safe to run on the server while the client does not have the code to process Packet #6 because there is a soft failsafe in the ESP32 Client code to ignore unknown packets # 1. On-screen Latin Alphabet / English keyboard From 78991a8e0755c17501de3c8e5555db9ec1c63730 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Mon, 9 Mar 2026 12:59:09 +1100 Subject: [PATCH 41/55] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index d2054a7..42d37a7 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,8 @@ This modification allows the user to know what webpage URL the display is curren If you build this server code without having my corresponding ESP32 Client code, then your ESP32 Client will show an unknown Packet #6 warning, but this warning can be safely ignored (or you can build your ESP32 device from my Client code too). +My ESP32 client code is here: https://github.com/SleepinDevil/RemoteWebViewClient + # Original description from Strange-V below [![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct-single.svg)](https://stand-with-ukraine.pp.ua) From 368eb8bdbae9c86628b22ca4696dddf165492f9f Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Wed, 11 Mar 2026 03:22:44 +1100 Subject: [PATCH 42/55] Update repository.yaml --- repository.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/repository.yaml b/repository.yaml index 240fdfe..3867609 100644 --- a/repository.yaml +++ b/repository.yaml @@ -1,3 +1,3 @@ -name: Remote WebView Add-ons -url: https://github.com/strange-v/RemoteWebViewServer -maintainer: strange_v +name: Remote WebView Add-ons (SleepinDevil Fork) +url: https://github.com/SleepinDevil/RemoteWebViewServer +maintainer: SleepinDevil From 1a58fa93f04d505fe94ca21f39b0a9387267f3a9 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Wed, 11 Mar 2026 03:23:26 +1100 Subject: [PATCH 43/55] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2feebe1..5d61513 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "remotewebviewserver", - "version": "1.1.3", + "version": "1.1.3.b1", "type": "module", "scripts": { "dev": "tsx src/index.ts", From 9c4a83c5c236a769d668429897bb9b1ef4222622 Mon Sep 17 00:00:00 2001 From: SleepinDevil Date: Wed, 11 Mar 2026 03:37:29 +1100 Subject: [PATCH 44/55] Update unminified-keyboard-for-information-only.js --- unminified-keyboard-for-information-only.js | 59 ++++++++++++--------- 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/unminified-keyboard-for-information-only.js b/unminified-keyboard-for-information-only.js index 55f44d8..9cf6511 100644 --- a/unminified-keyboard-for-information-only.js +++ b/unminified-keyboard-for-information-only.js @@ -2,24 +2,33 @@ * ============================================================================ * KIOSK VIRTUAL KEYBOARD - HOME ASSISTANT / CDP OPTIMIZED * ============================================================================ - * * HISTORY & TRIBULATIONS: + * * HISTORY & TRIBULATIONS (Developer Notes): * This script evolved through a brutal gauntlet of browser edge-cases: * 1. CDP Timing: Script had to be lazy-loaded to survive Single Page App (SPA) body wipes. * 2. Shadow DOM: Home Assistant's hid inputs from standard event targets. * 3. Rich Text / CodeMirror: HA's YAML editor required direct DOM execCommands and focus-kicking. * 4. The #top-layer Bug: HA's