Created
November 12, 2023 14:58
-
-
Save undefined06855/e03dbad762dd2ed50e5f7568894bb861 to your computer and use it in GitHub Desktop.
SSM Keybinds (unminified)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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() | |
| } | |
| }) |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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")})})();