From 7ca791a8ef3105feaddf6000ef1f93027de3a38f Mon Sep 17 00:00:00 2001 From: Colbster937 Date: Sun, 2 Jun 2024 15:50:17 -0500 Subject: [PATCH] added keyboard toggling --- eaglermobile.user.js | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/eaglermobile.user.js b/eaglermobile.user.js index 146bf8c..4caba01 100644 --- a/eaglermobile.user.js +++ b/eaglermobile.user.js @@ -23,6 +23,7 @@ function isMobile() { if(!isMobile()) { alert("WARNING: This script was created for mobile, and may break functionality in non-mobile browsers!"); } +window.keyboardEnabled = false; window.crouchLock = false; window.sprintLock = false; // Used for changing touchmove events to mousemove events @@ -105,7 +106,7 @@ document.exitFullscreen = function() { } // FILE UPLOADING -// Safari doesn't recognize the element.click() used to display the file uplaoder as an action performed by the user, so it ignores it. +// Safari doesn't recognize the element.click() used to display the file uploader as an action performed by the user, so it ignores it. // This hijacks the element.createElement() function to add the file upload to the DOM, so the user can manually press the button again. var oldCreate = document.createElement; document.createElement = function(type, ignore) { @@ -173,6 +174,17 @@ function createTouchButton(buttonClass, buttonDisplay, elementName) { return touchButton; } +function toggleKeyboard() { + const keyboardInput = document.getElementById('hiddenInput'); + if (window.keyboardEnabled) { + window.keyboardEnabled = false; + keyboardInput.blur(); + } else { + window.keyboardEnabled = true; + keyboardInput.select(); + } +} + waitForElm('canvas').then(() => {insertCanvasElements()}); function insertCanvasElements() { // Translates touchmove events to mousemove events when inGame, and touchmove events to wheele events when inMenu @@ -311,15 +323,13 @@ function insertCanvasElements() { document.body.appendChild(exitButton); // input for keyboard button let hiddenInput = document.createElement('input', true); - hiddenInput.type = "text" hiddenInput.id = "hiddenInput" - // hiding behind button for opacity issues - hiddenInput.style.cssText = "z-index: -999; top: 0vh; margin: auto; left: 8vh; right:0vh; width: 8vh; height: 8vh;"; + hiddenInput.style.cssText = "opacity:0;z-index:-99999"; document.body.appendChild(hiddenInput); let keyboardButton = createTouchButton("keyboardButton", "inMenu"); keyboardButton.style.cssText = "top: 0vh; margin: auto; left: 8vh; right:0vh; width: 8vh; height: 8vh;" keyboardButton.addEventListener("touchstart", function(e){e.preventDefault();hiddenInput.blur()}, false); - keyboardButton.addEventListener("touchend", function(e){hiddenInput.select()}, false); + keyboardButton.addEventListener("touchend", function(e){e.preventDefault();toggleKeyboard()}, false); document.body.appendChild(keyboardButton); let placeButton = createTouchButton("placeButton", "inGame"); placeButton.style.cssText = "right:0vh;bottom:20vh;"