window.my_setup_keyboard=setInterval(function(){ let app=document.querySelector("gradio-app"); app=app.shadowRoot??app; let frame=app.querySelector("#sdinfframe").contentWindow; console.log("Check iframe..."); if(frame.setup_shortcut) { frame.setup_shortcut(json); clearInterval(window.my_setup_keyboard); } }, 1000); var config=JSON.parse(json); var key_map={}; Object.keys(config.shortcut).forEach(k=>{ key_map[config.shortcut[k]]=k; }); document.addEventListener("keydown", e => { if(e.target.tagName!="INPUT"&&e.target.tagName!="GRADIO-APP"&&e.target.tagName!="TEXTAREA") { let key=e.key; if(e.ctrlKey) { key="Ctrl+"+e.key; if(key in key_map) { e.preventDefault(); } } let app=document.querySelector("gradio-app"); app=app.shadowRoot??app; let frame=app.querySelector("#sdinfframe").contentDocument; frame.dispatchEvent( new KeyboardEvent("keydown", {key: e.key, ctrlKey: e.ctrlKey}) ); } })