Skip to content

Instantly share code, notes, and snippets.

@undefined06855
Created November 12, 2023 14:58
Show Gist options
  • Select an option

  • Save undefined06855/e03dbad762dd2ed50e5f7568894bb861 to your computer and use it in GitHub Desktop.

Select an option

Save undefined06855/e03dbad762dd2ed50e5f7568894bb861 to your computer and use it in GitHub Desktop.
SSM Keybinds (unminified)
let dropWrapBlockSelection = 0
let currentlySelectingSubblock = false
let currentlyUsingBlock
function escapeFromDropwrap()
{
// stop everything and escape from the dropwrap
let dropWrapChildren = currentlyUsingBlock.parentElement.children
dropWrapChildren[dropWrapBlockSelection].style.backgroundColor = ""
dropWrapBlockSelection = 0
currentlySelectingSubblock = false
currentlyUsingBlock.parentElement.dispatchEvent(nme("mouseout"))
document.querySelector(".using").style.backgroundColor = ""
}
function nme(eventName)
{
// creates a new mouse event and returns it
return new MouseEvent(eventName, {
"view": window,
"bubbles": true,
"cancelable": true
})
}
function getDWC()
{
// returns the dropwrap's children
return currentlyUsingBlock.parentElement.querySelector(".drop").children
}
document.addEventListener("keydown", event => {
if (event.code == "KeyE") document.querySelector(".erase").click()
else if (event.code.startsWith("Digit"))
{
// click on specified block in palette
let number = Number(event.code.replace("Digit", ""))
let bElems = document.querySelector(".building-elements")
let element = bElems.children[number]
try {
element.click()
element.querySelector("a").click()
} catch(_) {}
}
else if (event.code == "ArrowDown" && !currentlySelectingSubblock)
{
// open sub-blocks in the dropwrap by simulating a mouseOver
currentlyUsingBlock = document.querySelector(".using")
if (currentlyUsingBlock.parentElement.classList.contains("drop-wrap"))
{
currentlyUsingBlock.parentElement.dispatchEvent(nme("mouseover"));
currentlySelectingSubblock = true
getDWC()[dropWrapBlockSelection].style.backgroundColor = "red"
}
}
else if (currentlySelectingSubblock && (event.code == "ArrowDown" || event.code == "ArrowUp"))
{
let prevSelection = dropWrapBlockSelection
// scroll up or down in the dropwrap
if (event.code == "ArrowDown") dropWrapBlockSelection++
else dropWrapBlockSelection--
// update
let dropWrapChildren = getDWC()
if (!dropWrapChildren[dropWrapBlockSelection])
{
// oopsies, scrolled past the end, or before the start of the list
if (event.code == "ArrowDown") dropWrapBlockSelection--
else dropWrapBlockSelection++
return
}
let mouseover = nme("mouseover")
let mouseout = nme("mouseout")
dropWrapChildren[prevSelection].dispatchEvent(mouseout)
dropWrapChildren[dropWrapBlockSelection].dispatchEvent(mouseover)
dropWrapChildren[prevSelection].style.backgroundColor = ""
dropWrapChildren[dropWrapBlockSelection].style.backgroundColor = "red"
}
else if (currentlySelectingSubblock && event.code == "Enter")
{
// yay, finally selected a block in the dropwrap
getDWC()[dropWrapBlockSelection].click()
escapeFromDropwrap()
}
else if (event.code == "Escape")
{
escapeFromDropwrap()
}
})
@undefined06855

Copy link
Copy Markdown
Author

Minified code:
(()=>{let e=0,r=!1,o;function t(){o.parentElement.children[e].style.backgroundColor="",e=0,r=!1,o.parentElement.dispatchEvent(c("mouseout")),document.querySelector(".using").style.backgroundColor=""}function c(e){return new MouseEvent(e,{view:window,bubbles:!0,cancelable:!0})}function n(){return o.parentElement.querySelector(".drop").children}document.addEventListener("keydown",l=>{if("KeyE"==l.code)document.querySelector(".erase").click();else if(l.code.startsWith("Digit")){let i=Number(l.code.replace("Digit","")),d=document.querySelector(".building-elements").children[i];try{d.click(),d.querySelector("a").click()}catch(s){}}else if("ArrowDown"!=l.code||r){if(r&&("ArrowDown"==l.code||"ArrowUp"==l.code)){let u=e;"ArrowDown"==l.code?e++:e--;let a=n();if(!a[e]){"ArrowDown"==l.code?e--:e++;return}let p=c("mouseover"),y=c("mouseout");a[u].dispatchEvent(y),a[e].dispatchEvent(p),a[u].style.backgroundColor="",a[e].style.backgroundColor="red"}else r&&"Enter"==l.code?(n()[e].click(),t()):"Escape"==l.code&&t()}else(o=document.querySelector(".using")).parentElement.classList.contains("drop-wrap")&&(o.parentElement.dispatchEvent(c("mouseover")),r=!0,n()[e].style.backgroundColor="red")})})();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment