prevent from constantly pressing the escape key when user quits or reloads the web browser so that the menu wont toggle each time ingame

This commit is contained in:
jenz 2026-07-05 00:11:22 +01:00
parent 277062cdb6
commit 28d78f0f0e
2 changed files with 15 additions and 5 deletions

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Google tag (gtag.js) -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-18299227566"></script>
<script>
window.dataLayer = window.dataLayer || [];
@ -10,7 +10,6 @@
gtag('config', 'AW-18299227566');
</script>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>CSS Stream</title>
@ -598,7 +597,11 @@
if (e.key === '"') { e.preventDefault(); return; }
if (e.key === 'F11') { e.preventDefault(); return; }
if (e.key === 'Escape') {
if (isControlling) {
// If pointer is locked, Escape releases pointer lock — don't also
// forward it to the game or it opens the in-game escape menu.
// Only forward Escape when pointer is already unlocked (user is
// navigating the in-game menu with mouse released).
if (isControlling && !pointerLocked) {
sendInput({ type: 'key_down', key: 'Escape' });
sendInput({ type: 'key_up', key: 'Escape' });
}

View File

@ -90,8 +90,9 @@ def release_all_keys():
except Exception:
pass
_held_keys.clear()
# Reset X11 modifier state (clears stuck shift/ctrl/alt etc.)
xdotool('key', '--clearmodifiers', 'Escape')
# Reset X11 modifier state using a neutral key that has no in-game effect
# Escape was previously used here but it toggles the in-game menu
xdotool('key', '--clearmodifiers', 'ctrl')
def handle_input(event):
t = event.get('type')
@ -106,10 +107,16 @@ def handle_input(event):
xdotool('mouseup', str(event.get('button', 1)))
elif t == 'key_down':
key = event.get('key', '')
# Block characters that can be used for console command injection
# via chat. ";" splits commands and '"' opens/closes command strings.
if key in (';', 'semicolon', '"', 'quotedbl', 'quote'):
return
_held_keys.add(key)
xdotool('keydown', key)
elif t == 'key_up':
key = event.get('key', '')
if key in (';', 'semicolon', '"', 'quotedbl', 'quote'):
return
_held_keys.discard(key)
xdotool('keyup', key)
elif t == 'mouse_wheel':