const c = document.querySelector(".console") const ps1 = "[fr@website ~]$ " let line = ""; let command = "" function exec(command) { console.log(command) switch (command[0]) { case "help": line = "about
projects
contact
" break; case "author": line = "Filip Rojek, 2023" break case "contact": line = "Filip Rojek <filip@filiprojek.cz>
web: www.filiprojek.cz
telegram: @filiprojek" break case "clear": write("000ctrll") break default: line = "frsh: " + command[0] + ": command not found" break; } l = document.createElement("p").innerHTML = line c.appendChild(l) } function write(key) { console.log("KEY:", key) switch(key) { case "Enter": command = command.split(" "); exec(command) line = document.createElement("p") line.innerHTML += ps1 c.appendChild(line) command = "" break case "000ctrll": c.innerHTML = "" line = document.createElement("p") line.innerHTML += ps1 c.appendChild(line) break case "000backspace": console.log(c.textContent.slice(0, -1)) console.log(ps1 == c.textContent) if(c.lastChild.textContent.slice(0, -1) !== ps1.slice(0, -1)) { c.lastChild.innerHTML = c.lastChild.textContent.slice(0, -1) } break default: c.lastChild.innerHTML += key command += key } } function customCtrlShortcuts(plusKey) { document.addEventListener("keydown", e => { if(e.ctrlKey && e.key == plusKey) { e.preventDefault() write("000ctrl"+plusKey) } }) } // On load init the terminal window.addEventListener("load", () => { write("000ctrll") }) // Capture the keypress window.addEventListener("keypress", e => { e.preventDefault() write(e.key) }) window.addEventListener("keydown", e => { if(e.key == "Backspace") { e.preventDefault() write("000backspace") } }) // Register custom ctrl shortcuts customCtrlShortcuts("l") // ctrl + l customCtrlShortcuts("c") // ctrl + c