fix: key stealing, disable Emscripten module, disable colored ANSI for emscripten builds

This commit is contained in:
2023-09-12 13:36:29 -05:00
parent 98d8960c57
commit 0630fc56ec
4 changed files with 12 additions and 7 deletions

View File

@@ -4,6 +4,6 @@ rustflags = [
"-O", "-C", "link-args=-O2 --profiling", "-O", "-C", "link-args=-O2 --profiling",
#"-C", "link-args=-O3 --closure 1", #"-C", "link-args=-O3 --closure 1",
"-C", "link-args=-sASYNCIFY -sALLOW_MEMORY_GROWTH=1", "-C", "link-args=-sASYNCIFY -sALLOW_MEMORY_GROWTH=1",
"-C", "link-args=-sUSE_SDL=2 -sUSE_SDL_IMAGE=2 -sSDL_EMSCRIPTEN_KEYBOARD_ELEMENT -sSDL2_IMAGE_FORMATS=['png']", "-C", "link-args=-sUSE_SDL=2 -sUSE_SDL_IMAGE=2 -sSDL2_IMAGE_FORMATS=['png']",
"-C", "link-args=--preload-file assets/ -lidbfs.js", "-C", "link-args=--preload-file assets/ -lidbfs.js",
] ]

View File

@@ -39,6 +39,13 @@ Luckily though, someone else has done this before, and they fully documented it
This repository has been massively helpful in getting my WebAssembly builds working. This repository has been massively helpful in getting my WebAssembly builds working.
## Key Capturing Extensions in WASM Build
Some extensions I had installed were capturing keys.
The issue presented with some keys never being sent to the application.
To confirm, enter safe mode or switch to a different browser without said extensions.
If the issue disappears, it's because of an extension in your browser stealing keys in a way that is incompatible with the batshit insanity of Emscripten.
[code-review-video]: https://www.youtube.com/watch?v=OKs_JewEeOo [code-review-video]: https://www.youtube.com/watch?v=OKs_JewEeOo
[code-review-thumbnail]: https://img.youtube.com/vi/OKs_JewEeOo/hqdefault.jpg [code-review-thumbnail]: https://img.youtube.com/vi/OKs_JewEeOo/hqdefault.jpg
[fighting-lifetimes-1]: https://devcry.heiho.net/html/2022/20220709-rust-and-sdl2-fighting-with-lifetimes.html [fighting-lifetimes-1]: https://devcry.heiho.net/html/2022/20220709-rust-and-sdl2-fighting-with-lifetimes.html

View File

@@ -1,12 +1,11 @@
#!/bin/sh #!/bin/sh
set -eu # set -eu
echo "Building WASM with Emscripten" echo "Building WASM with Emscripten"
cargo build --target=wasm32-unknown-emscripten --release cargo build --target=wasm32-unknown-emscripten --release
echo "Copying release files to dist/" echo "Copying release files to dist/"
mkdir -p dist mkdir -p dist
output_folder="target/wasm32-unknown-emscripten/release" output_folder="target/wasm32-unknown-emscripten/release"
cp $output_folder/pacman.wasm dist cp $output_folder/pacman.wasm dist
cp $output_folder/pacman.js dist cp $output_folder/pacman.js dist

View File

@@ -17,15 +17,13 @@ mod map;
mod modulation; mod modulation;
mod pacman; mod pacman;
#[cfg(target_os = "emscripten")]
mod emscripten;
pub fn main() { pub fn main() {
let sdl_context = sdl2::init().unwrap(); let sdl_context = sdl2::init().unwrap();
let video_subsystem = sdl_context.video().unwrap(); let video_subsystem = sdl_context.video().unwrap();
// Setup tracing // Setup tracing
let subscriber = tracing_subscriber::fmt() let subscriber = tracing_subscriber::fmt()
.with_ansi(cfg!(not(target_os = "emscripten")))
.with_max_level(tracing::Level::DEBUG) .with_max_level(tracing::Level::DEBUG)
.finish() .finish()
.with(ErrorLayer::default()); .with(ErrorLayer::default());
@@ -77,6 +75,7 @@ pub fn main() {
// TODO: Fix key repeat delay issues by using VecDeque for instant key repeat // TODO: Fix key repeat delay issues by using VecDeque for instant key repeat
for event in event_pump.poll_iter() { for event in event_pump.poll_iter() {
match event { match event {
// Handle quitting keys or window close // Handle quitting keys or window close
Event::Quit { .. } Event::Quit { .. }