ime for text input

This commit is contained in:
Mona Mayrhofer 2026-03-03 14:11:50 +01:00
parent a2b086a779
commit 5f89601ef2
WARNING! Although there is a key with this ID in the database it does not verify this commit! This commit is SUSPICIOUS.
GPG key ID: 374AB152BDEBA1AE
10 changed files with 784 additions and 48 deletions

View file

@ -1 +0,0 @@
/nix/store/jh41lavwqi3qdwypiv713yipf3dxi3nx-source

View file

@ -1 +0,0 @@
/nix/store/npfcdcbsyzm1cnh0jqqn3jf2wx49hgwp-source

View file

@ -0,0 +1 @@
/nix/store/pg23i5nvj8wg12bb657b2r4s5kixjqic-source

View file

@ -0,0 +1 @@
/nix/store/zgbjmrhgvd8a42nyi1jck6v98gzvvql0-source

View file

@ -1 +1 @@
/nix/store/mq0i12vdknm9wx5w5n7md59xn1z15ag3-my-project-env
/nix/store/xa13w7i8cjcs7bhc21lczj9qyi40ay3s-my-project-env

View file

@ -18,7 +18,7 @@ DEVENV_DOTFILE='/home/nionidh/projects/rust-tomfoolery/cursor-mover-app/.devenv'
export DEVENV_DOTFILE
DEVENV_FLAKE_SHELL='default'
export DEVENV_FLAKE_SHELL
DEVENV_PROFILE='/nix/store/7wyfm3pdjlbl7747ghfqlvz2rfsf013l-devenv-profile'
DEVENV_PROFILE='/nix/store/3niz0g2hddnbba4bcql8s8arc6mmna5m-devenv-profile'
export DEVENV_PROFILE
DEVENV_ROOT='/home/nionidh/projects/rust-tomfoolery/cursor-mover-app'
export DEVENV_ROOT
@ -31,7 +31,7 @@ export DEVENV_TASKS
DEVENV_TASK_FILE='/nix/store/r04g3f96h64qk8xzpm7z0vd17w5b494d-tasks.json'
export DEVENV_TASK_FILE
HOSTTYPE='x86_64'
HOST_PATH='/nix/store/idl8schy78hxa05jyndj4nmb4wzgcln2-compiler-rt-libc-21.1.8/bin:/nix/store/i2vmgx46q9hd3z6rigaiman3wl3i2gc4-coreutils-9.9/bin:/nix/store/16wfacfgap3chf7mcjnd8dwi85dj4qqi-findutils-4.10.0/bin:/nix/store/3p87h6dn5i87i3iq9364imzbqgwvkg2p-diffutils-3.12/bin:/nix/store/ryz8kcrm2bxpccllfqlb7qldsfnqp5c2-gnused-4.9/bin:/nix/store/02vv0r262agf9j5n2y1gmbjvdf12zkl0-gnugrep-3.12/bin:/nix/store/2xq9rayckw8zq26k274xxlikn77jn60j-gawk-5.3.2/bin:/nix/store/qyg62bc2xnpwz0fa9prqxvvk00zj4g9q-gnutar-1.35/bin:/nix/store/84yyzmxs7mb8nhkvcfv9n1l9irpb6mnq-gzip-1.14/bin:/nix/store/90yw24gqmwph4xjp4mqhpx1y1gcrvqla-bzip2-1.0.8-bin/bin:/nix/store/vbah5c4rzy1q1hbqhginyxjhj8d4dj8j-gnumake-4.4.1/bin:/nix/store/f15k3dpilmiyv6zgpib289rnjykgr1r4-bash-5.3p9/bin:/nix/store/wwij6563c6wbg4kzgjhng7vlhf7api19-patch-2.8/bin:/nix/store/zys6d102zp171wpwcs08g632886w2qxs-xz-5.8.2-bin/bin:/nix/store/nyy0bvgjwd98x7ih8pl6pr79qjljgsf7-file-5.45/bin'
HOST_PATH='/nix/store/i2vmgx46q9hd3z6rigaiman3wl3i2gc4-coreutils-9.9/bin:/nix/store/16wfacfgap3chf7mcjnd8dwi85dj4qqi-findutils-4.10.0/bin:/nix/store/3p87h6dn5i87i3iq9364imzbqgwvkg2p-diffutils-3.12/bin:/nix/store/ryz8kcrm2bxpccllfqlb7qldsfnqp5c2-gnused-4.9/bin:/nix/store/02vv0r262agf9j5n2y1gmbjvdf12zkl0-gnugrep-3.12/bin:/nix/store/2xq9rayckw8zq26k274xxlikn77jn60j-gawk-5.3.2/bin:/nix/store/qyg62bc2xnpwz0fa9prqxvvk00zj4g9q-gnutar-1.35/bin:/nix/store/84yyzmxs7mb8nhkvcfv9n1l9irpb6mnq-gzip-1.14/bin:/nix/store/90yw24gqmwph4xjp4mqhpx1y1gcrvqla-bzip2-1.0.8-bin/bin:/nix/store/vbah5c4rzy1q1hbqhginyxjhj8d4dj8j-gnumake-4.4.1/bin:/nix/store/f15k3dpilmiyv6zgpib289rnjykgr1r4-bash-5.3p9/bin:/nix/store/wwij6563c6wbg4kzgjhng7vlhf7api19-patch-2.8/bin:/nix/store/zys6d102zp171wpwcs08g632886w2qxs-xz-5.8.2-bin/bin:/nix/store/nyy0bvgjwd98x7ih8pl6pr79qjljgsf7-file-5.45/bin'
export HOST_PATH
IFS='
'
@ -53,13 +53,13 @@ NIX_CC='/nix/store/a245z3cvf9x9sn0xlk6k8j9xhxbhda1z-gcc-wrapper-15.2.0'
export NIX_CC
NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1'
export NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu
NIX_CFLAGS_COMPILE=' -frandom-seed=mq0i12vdkn -isystem /nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125/include -isystem /nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125/include -isystem /nix/store/vi6gkki39fqlm3fhvrgkgfpb2b4f4x89-libxkbcommon-1.11.0-dev/include -isystem /nix/store/vi6gkki39fqlm3fhvrgkgfpb2b4f4x89-libxkbcommon-1.11.0-dev/include -isystem /nix/store/rszqwjpka3yy6x72d4n3j12a3gxkqbpn-clang-21.1.8-dev/include -isystem /nix/store/rszqwjpka3yy6x72d4n3j12a3gxkqbpn-clang-21.1.8-dev/include -isystem /nix/store/i5vppnbl2qnrvm4h5azwq83rr9gm7sdy-compiler-rt-libc-21.1.8-dev/include -isystem /nix/store/i5vppnbl2qnrvm4h5azwq83rr9gm7sdy-compiler-rt-libc-21.1.8-dev/include -isystem /nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125/include -isystem /nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125/include -isystem /nix/store/vi6gkki39fqlm3fhvrgkgfpb2b4f4x89-libxkbcommon-1.11.0-dev/include -isystem /nix/store/vi6gkki39fqlm3fhvrgkgfpb2b4f4x89-libxkbcommon-1.11.0-dev/include -isystem /nix/store/rszqwjpka3yy6x72d4n3j12a3gxkqbpn-clang-21.1.8-dev/include -isystem /nix/store/rszqwjpka3yy6x72d4n3j12a3gxkqbpn-clang-21.1.8-dev/include -isystem /nix/store/i5vppnbl2qnrvm4h5azwq83rr9gm7sdy-compiler-rt-libc-21.1.8-dev/include -isystem /nix/store/i5vppnbl2qnrvm4h5azwq83rr9gm7sdy-compiler-rt-libc-21.1.8-dev/include'
NIX_CFLAGS_COMPILE=' -frandom-seed=xa13w7i8cj -isystem /nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125/include -isystem /nix/store/vi6gkki39fqlm3fhvrgkgfpb2b4f4x89-libxkbcommon-1.11.0-dev/include -isystem /nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125/include -isystem /nix/store/vi6gkki39fqlm3fhvrgkgfpb2b4f4x89-libxkbcommon-1.11.0-dev/include'
export NIX_CFLAGS_COMPILE
NIX_ENFORCE_NO_NATIVE='1'
export NIX_ENFORCE_NO_NATIVE
NIX_HARDENING_ENABLE='bindnow format fortify fortify3 libcxxhardeningextensive libcxxhardeningfast pic relro stackclashprotection stackprotector strictoverflow zerocallusedregs'
export NIX_HARDENING_ENABLE
NIX_LDFLAGS='-rpath /home/nionidh/projects/rust-tomfoolery/cursor-mover-app/outputs/out/lib -L/nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125/lib -L/nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125/lib -L/nix/store/fwhb4yynphdqiqb48mlh0v5wlwz50s22-rust-mixed/lib -L/nix/store/fwhb4yynphdqiqb48mlh0v5wlwz50s22-rust-mixed/lib -L/nix/store/ni6pwnn5cg4mwm2fkmqrm2bzjvj16b64-libxkbcommon-1.11.0/lib -L/nix/store/ni6pwnn5cg4mwm2fkmqrm2bzjvj16b64-libxkbcommon-1.11.0/lib -L/nix/store/xibf2ayyaljj1r7wgjf4n7n4vg5z8n2v-clang-21.1.8-lib/lib -L/nix/store/xibf2ayyaljj1r7wgjf4n7n4vg5z8n2v-clang-21.1.8-lib/lib -L/nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125/lib -L/nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125/lib -L/nix/store/fwhb4yynphdqiqb48mlh0v5wlwz50s22-rust-mixed/lib -L/nix/store/fwhb4yynphdqiqb48mlh0v5wlwz50s22-rust-mixed/lib -L/nix/store/ni6pwnn5cg4mwm2fkmqrm2bzjvj16b64-libxkbcommon-1.11.0/lib -L/nix/store/ni6pwnn5cg4mwm2fkmqrm2bzjvj16b64-libxkbcommon-1.11.0/lib -L/nix/store/xibf2ayyaljj1r7wgjf4n7n4vg5z8n2v-clang-21.1.8-lib/lib -L/nix/store/xibf2ayyaljj1r7wgjf4n7n4vg5z8n2v-clang-21.1.8-lib/lib'
NIX_LDFLAGS='-rpath /home/nionidh/projects/rust-tomfoolery/cursor-mover-app/outputs/out/lib -L/nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125/lib -L/nix/store/fwhb4yynphdqiqb48mlh0v5wlwz50s22-rust-mixed/lib -L/nix/store/ni6pwnn5cg4mwm2fkmqrm2bzjvj16b64-libxkbcommon-1.11.0/lib -L/nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125/lib -L/nix/store/fwhb4yynphdqiqb48mlh0v5wlwz50s22-rust-mixed/lib -L/nix/store/ni6pwnn5cg4mwm2fkmqrm2bzjvj16b64-libxkbcommon-1.11.0/lib'
export NIX_LDFLAGS
NIX_NO_SELF_RPATH='1'
NIX_PKG_CONFIG_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1'
@ -76,7 +76,7 @@ OLDPWD=''
export OLDPWD
OPTERR='1'
OSTYPE='linux-gnu'
PATH='/nix/store/xgixy092whsar7fwm9lmcn4mv9kqn983-process-compose-1.87.0/bin:/nix/store/f53d7gw5jh2yc1rv62kp670gnqq3vwwz-checkall/bin:/nix/store/py79xv22ipf2ycg4qks55wwai9g4w2qg-dioxus-cli-0.7.3/bin:/nix/store/9dpg06rzbppmxi5q8rms8zyybz56sa6r-cargo-expand-1.0.119/bin:/nix/store/fl02yv3ax1qf1xkq64ik8qz5bjxyyd71-cargo-deny-0.19.0/bin:/nix/store/hadf76x1xknx2w6ydp05gzl2w3j40hqy-cargo-nextest-0.9.124/bin:/nix/store/s4rgqv7brrcq2jm8m00dyair22knq10s-typos-1.42.3/bin:/nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125/bin:/nix/store/fwhb4yynphdqiqb48mlh0v5wlwz50s22-rust-mixed/bin:/nix/store/m05d7wi0zxg35937jbp6rp7zsvbb5qv4-rust-analyzer-nightly-a96b6a9b887008bae01839543f9ca8e1f67f4ebe/bin:/nix/store/8njkmn9yfcka8yid251wk109n7a6sz1y-wasm-bindgen-cli-0.2.114/bin:/nix/store/ni6pwnn5cg4mwm2fkmqrm2bzjvj16b64-libxkbcommon-1.11.0/bin:/nix/store/6n5r46icm0bl55s9p5z2zgcv93m39r5l-clang-wrapper-21.1.8/bin:/nix/store/rm8isfm4fd14is3fv3h4m459rbiy91bx-clang-21.1.8/bin:/nix/store/0bdqq2z98kg2hfn3k60if6pb5fd5p10h-glibc-2.42-47-bin/bin:/nix/store/i2vmgx46q9hd3z6rigaiman3wl3i2gc4-coreutils-9.9/bin:/nix/store/m0rbbdfsbkdqpr6bs621jwi21ra1br4g-binutils-wrapper-2.44/bin:/nix/store/47mn80zqpygykqailwzw8zlag4cgl75q-binutils-2.44/bin:/nix/store/rszqwjpka3yy6x72d4n3j12a3gxkqbpn-clang-21.1.8-dev/bin:/nix/store/rvp7qlpf5jqvdckjy1afjb6aha6j8dxg-pkg-config-wrapper-0.29.2/bin:/nix/store/c2p7haf4zzkbrir9zs662r68c5dmylbq-patchelf-0.15.2/bin:/nix/store/a245z3cvf9x9sn0xlk6k8j9xhxbhda1z-gcc-wrapper-15.2.0/bin:/nix/store/mjf8jlq9grydcdvyw6hb063x5c34g5gf-gcc-15.2.0/bin:/nix/store/i6ppbrlpp6yki8qvka7nyv091xa8dchx-binutils-wrapper-2.44/bin:/nix/store/idl8schy78hxa05jyndj4nmb4wzgcln2-compiler-rt-libc-21.1.8/bin:/nix/store/i2vmgx46q9hd3z6rigaiman3wl3i2gc4-coreutils-9.9/bin:/nix/store/16wfacfgap3chf7mcjnd8dwi85dj4qqi-findutils-4.10.0/bin:/nix/store/3p87h6dn5i87i3iq9364imzbqgwvkg2p-diffutils-3.12/bin:/nix/store/ryz8kcrm2bxpccllfqlb7qldsfnqp5c2-gnused-4.9/bin:/nix/store/02vv0r262agf9j5n2y1gmbjvdf12zkl0-gnugrep-3.12/bin:/nix/store/2xq9rayckw8zq26k274xxlikn77jn60j-gawk-5.3.2/bin:/nix/store/qyg62bc2xnpwz0fa9prqxvvk00zj4g9q-gnutar-1.35/bin:/nix/store/84yyzmxs7mb8nhkvcfv9n1l9irpb6mnq-gzip-1.14/bin:/nix/store/90yw24gqmwph4xjp4mqhpx1y1gcrvqla-bzip2-1.0.8-bin/bin:/nix/store/vbah5c4rzy1q1hbqhginyxjhj8d4dj8j-gnumake-4.4.1/bin:/nix/store/f15k3dpilmiyv6zgpib289rnjykgr1r4-bash-5.3p9/bin:/nix/store/wwij6563c6wbg4kzgjhng7vlhf7api19-patch-2.8/bin:/nix/store/zys6d102zp171wpwcs08g632886w2qxs-xz-5.8.2-bin/bin:/nix/store/nyy0bvgjwd98x7ih8pl6pr79qjljgsf7-file-5.45/bin'
PATH='/nix/store/xgixy092whsar7fwm9lmcn4mv9kqn983-process-compose-1.87.0/bin:/nix/store/f53d7gw5jh2yc1rv62kp670gnqq3vwwz-checkall/bin:/nix/store/py79xv22ipf2ycg4qks55wwai9g4w2qg-dioxus-cli-0.7.3/bin:/nix/store/9dpg06rzbppmxi5q8rms8zyybz56sa6r-cargo-expand-1.0.119/bin:/nix/store/fl02yv3ax1qf1xkq64ik8qz5bjxyyd71-cargo-deny-0.19.0/bin:/nix/store/hadf76x1xknx2w6ydp05gzl2w3j40hqy-cargo-nextest-0.9.124/bin:/nix/store/s4rgqv7brrcq2jm8m00dyair22knq10s-typos-1.42.3/bin:/nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125/bin:/nix/store/fwhb4yynphdqiqb48mlh0v5wlwz50s22-rust-mixed/bin:/nix/store/m05d7wi0zxg35937jbp6rp7zsvbb5qv4-rust-analyzer-nightly-a96b6a9b887008bae01839543f9ca8e1f67f4ebe/bin:/nix/store/8njkmn9yfcka8yid251wk109n7a6sz1y-wasm-bindgen-cli-0.2.114/bin:/nix/store/ni6pwnn5cg4mwm2fkmqrm2bzjvj16b64-libxkbcommon-1.11.0/bin:/nix/store/rvp7qlpf5jqvdckjy1afjb6aha6j8dxg-pkg-config-wrapper-0.29.2/bin:/nix/store/c2p7haf4zzkbrir9zs662r68c5dmylbq-patchelf-0.15.2/bin:/nix/store/a245z3cvf9x9sn0xlk6k8j9xhxbhda1z-gcc-wrapper-15.2.0/bin:/nix/store/mjf8jlq9grydcdvyw6hb063x5c34g5gf-gcc-15.2.0/bin:/nix/store/0bdqq2z98kg2hfn3k60if6pb5fd5p10h-glibc-2.42-47-bin/bin:/nix/store/i2vmgx46q9hd3z6rigaiman3wl3i2gc4-coreutils-9.9/bin:/nix/store/i6ppbrlpp6yki8qvka7nyv091xa8dchx-binutils-wrapper-2.44/bin:/nix/store/47mn80zqpygykqailwzw8zlag4cgl75q-binutils-2.44/bin:/nix/store/i2vmgx46q9hd3z6rigaiman3wl3i2gc4-coreutils-9.9/bin:/nix/store/16wfacfgap3chf7mcjnd8dwi85dj4qqi-findutils-4.10.0/bin:/nix/store/3p87h6dn5i87i3iq9364imzbqgwvkg2p-diffutils-3.12/bin:/nix/store/ryz8kcrm2bxpccllfqlb7qldsfnqp5c2-gnused-4.9/bin:/nix/store/02vv0r262agf9j5n2y1gmbjvdf12zkl0-gnugrep-3.12/bin:/nix/store/2xq9rayckw8zq26k274xxlikn77jn60j-gawk-5.3.2/bin:/nix/store/qyg62bc2xnpwz0fa9prqxvvk00zj4g9q-gnutar-1.35/bin:/nix/store/84yyzmxs7mb8nhkvcfv9n1l9irpb6mnq-gzip-1.14/bin:/nix/store/90yw24gqmwph4xjp4mqhpx1y1gcrvqla-bzip2-1.0.8-bin/bin:/nix/store/vbah5c4rzy1q1hbqhginyxjhj8d4dj8j-gnumake-4.4.1/bin:/nix/store/f15k3dpilmiyv6zgpib289rnjykgr1r4-bash-5.3p9/bin:/nix/store/wwij6563c6wbg4kzgjhng7vlhf7api19-patch-2.8/bin:/nix/store/zys6d102zp171wpwcs08g632886w2qxs-xz-5.8.2-bin/bin:/nix/store/nyy0bvgjwd98x7ih8pl6pr79qjljgsf7-file-5.45/bin'
export PATH
PC_CONFIG_FILES='/nix/store/f90qf91rzv18zpk3y4yf5saigawqw9nm-process-compose.yaml'
export PC_CONFIG_FILES
@ -101,7 +101,7 @@ STRINGS='strings'
export STRINGS
STRIP='strip'
export STRIP
XDG_DATA_DIRS='/nix/store/xgixy092whsar7fwm9lmcn4mv9kqn983-process-compose-1.87.0/share:/nix/store/fwhb4yynphdqiqb48mlh0v5wlwz50s22-rust-mixed/share:/nix/store/ni6pwnn5cg4mwm2fkmqrm2bzjvj16b64-libxkbcommon-1.11.0/share:/nix/store/rm8isfm4fd14is3fv3h4m459rbiy91bx-clang-21.1.8/share:/nix/store/rvp7qlpf5jqvdckjy1afjb6aha6j8dxg-pkg-config-wrapper-0.29.2/share:/nix/store/c2p7haf4zzkbrir9zs662r68c5dmylbq-patchelf-0.15.2/share'
XDG_DATA_DIRS='/nix/store/xgixy092whsar7fwm9lmcn4mv9kqn983-process-compose-1.87.0/share:/nix/store/fwhb4yynphdqiqb48mlh0v5wlwz50s22-rust-mixed/share:/nix/store/ni6pwnn5cg4mwm2fkmqrm2bzjvj16b64-libxkbcommon-1.11.0/share:/nix/store/rvp7qlpf5jqvdckjy1afjb6aha6j8dxg-pkg-config-wrapper-0.29.2/share:/nix/store/c2p7haf4zzkbrir9zs662r68c5dmylbq-patchelf-0.15.2/share'
export XDG_DATA_DIRS
__structuredAttrs=''
export __structuredAttrs
@ -151,8 +151,8 @@ export dontAddDisableDepTrack
declare -a envBuildBuildHooks=()
declare -a envBuildHostHooks=()
declare -a envBuildTargetHooks=()
declare -a envHostHostHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' 'pkgConfigWrapper_addPkgConfigPath' 'ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' )
declare -a envHostTargetHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' 'pkgConfigWrapper_addPkgConfigPath' 'ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' )
declare -a envHostHostHooks=('pkgConfigWrapper_addPkgConfigPath' 'ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' )
declare -a envHostTargetHooks=('pkgConfigWrapper_addPkgConfigPath' 'ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' )
declare -a envTargetTargetHooks=()
declare -a fixupOutputHooks=('if [ -z "${dontPatchELF-}" ]; then patchELF "$prefix"; fi' 'if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi' 'if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi' '_moveLib64' '_moveSbin' '_moveSystemdUserUnits' 'patchShebangsAuto' '_pruneLibtoolFiles' '_doStrip' )
hardeningDisable=''
@ -162,7 +162,7 @@ mesonFlags=''
export mesonFlags
name='my-project-env'
export name
nativeBuildInputs='/nix/store/xgixy092whsar7fwm9lmcn4mv9kqn983-process-compose-1.87.0 /nix/store/f53d7gw5jh2yc1rv62kp670gnqq3vwwz-checkall /nix/store/py79xv22ipf2ycg4qks55wwai9g4w2qg-dioxus-cli-0.7.3 /nix/store/9dpg06rzbppmxi5q8rms8zyybz56sa6r-cargo-expand-1.0.119 /nix/store/fl02yv3ax1qf1xkq64ik8qz5bjxyyd71-cargo-deny-0.19.0 /nix/store/hadf76x1xknx2w6ydp05gzl2w3j40hqy-cargo-nextest-0.9.124 /nix/store/s4rgqv7brrcq2jm8m00dyair22knq10s-typos-1.42.3 /nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125 /nix/store/fwhb4yynphdqiqb48mlh0v5wlwz50s22-rust-mixed /nix/store/m05d7wi0zxg35937jbp6rp7zsvbb5qv4-rust-analyzer-nightly-a96b6a9b887008bae01839543f9ca8e1f67f4ebe /nix/store/8njkmn9yfcka8yid251wk109n7a6sz1y-wasm-bindgen-cli-0.2.114 /nix/store/vi6gkki39fqlm3fhvrgkgfpb2b4f4x89-libxkbcommon-1.11.0-dev /nix/store/6n5r46icm0bl55s9p5z2zgcv93m39r5l-clang-wrapper-21.1.8 /nix/store/rszqwjpka3yy6x72d4n3j12a3gxkqbpn-clang-21.1.8-dev /nix/store/rvp7qlpf5jqvdckjy1afjb6aha6j8dxg-pkg-config-wrapper-0.29.2'
nativeBuildInputs='/nix/store/xgixy092whsar7fwm9lmcn4mv9kqn983-process-compose-1.87.0 /nix/store/f53d7gw5jh2yc1rv62kp670gnqq3vwwz-checkall /nix/store/py79xv22ipf2ycg4qks55wwai9g4w2qg-dioxus-cli-0.7.3 /nix/store/9dpg06rzbppmxi5q8rms8zyybz56sa6r-cargo-expand-1.0.119 /nix/store/fl02yv3ax1qf1xkq64ik8qz5bjxyyd71-cargo-deny-0.19.0 /nix/store/hadf76x1xknx2w6ydp05gzl2w3j40hqy-cargo-nextest-0.9.124 /nix/store/s4rgqv7brrcq2jm8m00dyair22knq10s-typos-1.42.3 /nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125 /nix/store/fwhb4yynphdqiqb48mlh0v5wlwz50s22-rust-mixed /nix/store/m05d7wi0zxg35937jbp6rp7zsvbb5qv4-rust-analyzer-nightly-a96b6a9b887008bae01839543f9ca8e1f67f4ebe /nix/store/8njkmn9yfcka8yid251wk109n7a6sz1y-wasm-bindgen-cli-0.2.114 /nix/store/vi6gkki39fqlm3fhvrgkgfpb2b4f4x89-libxkbcommon-1.11.0-dev /nix/store/rvp7qlpf5jqvdckjy1afjb6aha6j8dxg-pkg-config-wrapper-0.29.2'
export nativeBuildInputs
out='/home/nionidh/projects/rust-tomfoolery/cursor-mover-app/outputs/out'
export out
@ -183,9 +183,9 @@ phases='buildPhase'
export phases
pkg='/nix/store/a245z3cvf9x9sn0xlk6k8j9xhxbhda1z-gcc-wrapper-15.2.0'
declare -a pkgsBuildBuild=()
declare -a pkgsBuildHost=('/nix/store/xgixy092whsar7fwm9lmcn4mv9kqn983-process-compose-1.87.0' '/nix/store/f53d7gw5jh2yc1rv62kp670gnqq3vwwz-checkall' '/nix/store/py79xv22ipf2ycg4qks55wwai9g4w2qg-dioxus-cli-0.7.3' '/nix/store/9dpg06rzbppmxi5q8rms8zyybz56sa6r-cargo-expand-1.0.119' '/nix/store/fl02yv3ax1qf1xkq64ik8qz5bjxyyd71-cargo-deny-0.19.0' '/nix/store/hadf76x1xknx2w6ydp05gzl2w3j40hqy-cargo-nextest-0.9.124' '/nix/store/s4rgqv7brrcq2jm8m00dyair22knq10s-typos-1.42.3' '/nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125' '/nix/store/fwhb4yynphdqiqb48mlh0v5wlwz50s22-rust-mixed' '/nix/store/m05d7wi0zxg35937jbp6rp7zsvbb5qv4-rust-analyzer-nightly-a96b6a9b887008bae01839543f9ca8e1f67f4ebe' '/nix/store/8njkmn9yfcka8yid251wk109n7a6sz1y-wasm-bindgen-cli-0.2.114' '/nix/store/vi6gkki39fqlm3fhvrgkgfpb2b4f4x89-libxkbcommon-1.11.0-dev' '/nix/store/ni6pwnn5cg4mwm2fkmqrm2bzjvj16b64-libxkbcommon-1.11.0' '/nix/store/6n5r46icm0bl55s9p5z2zgcv93m39r5l-clang-wrapper-21.1.8' '/nix/store/m0rbbdfsbkdqpr6bs621jwi21ra1br4g-binutils-wrapper-2.44' '/nix/store/rszqwjpka3yy6x72d4n3j12a3gxkqbpn-clang-21.1.8-dev' '/nix/store/xibf2ayyaljj1r7wgjf4n7n4vg5z8n2v-clang-21.1.8-lib' '/nix/store/rm8isfm4fd14is3fv3h4m459rbiy91bx-clang-21.1.8' '/nix/store/rvp7qlpf5jqvdckjy1afjb6aha6j8dxg-pkg-config-wrapper-0.29.2' '/nix/store/c2p7haf4zzkbrir9zs662r68c5dmylbq-patchelf-0.15.2' '/nix/store/y03z7y8cgdck7vk8qpim30vps4d22gzv-update-autotools-gnu-config-scripts-hook' '/nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh' '/nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh' '/nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh' '/nix/store/p3l1a5y7nllfyrjn2krlwgcc3z0cd3fq-make-symlinks-relative.sh' '/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh' '/nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh' '/nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh' '/nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh' '/nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh' '/nix/store/a245z3cvf9x9sn0xlk6k8j9xhxbhda1z-gcc-wrapper-15.2.0' '/nix/store/i6ppbrlpp6yki8qvka7nyv091xa8dchx-binutils-wrapper-2.44' )
declare -a pkgsBuildHost=('/nix/store/xgixy092whsar7fwm9lmcn4mv9kqn983-process-compose-1.87.0' '/nix/store/f53d7gw5jh2yc1rv62kp670gnqq3vwwz-checkall' '/nix/store/py79xv22ipf2ycg4qks55wwai9g4w2qg-dioxus-cli-0.7.3' '/nix/store/9dpg06rzbppmxi5q8rms8zyybz56sa6r-cargo-expand-1.0.119' '/nix/store/fl02yv3ax1qf1xkq64ik8qz5bjxyyd71-cargo-deny-0.19.0' '/nix/store/hadf76x1xknx2w6ydp05gzl2w3j40hqy-cargo-nextest-0.9.124' '/nix/store/s4rgqv7brrcq2jm8m00dyair22knq10s-typos-1.42.3' '/nix/store/4jp1vkr9gj5n3zbpp2xvkp8n3g56lpv0-binaryen-125' '/nix/store/fwhb4yynphdqiqb48mlh0v5wlwz50s22-rust-mixed' '/nix/store/m05d7wi0zxg35937jbp6rp7zsvbb5qv4-rust-analyzer-nightly-a96b6a9b887008bae01839543f9ca8e1f67f4ebe' '/nix/store/8njkmn9yfcka8yid251wk109n7a6sz1y-wasm-bindgen-cli-0.2.114' '/nix/store/vi6gkki39fqlm3fhvrgkgfpb2b4f4x89-libxkbcommon-1.11.0-dev' '/nix/store/ni6pwnn5cg4mwm2fkmqrm2bzjvj16b64-libxkbcommon-1.11.0' '/nix/store/rvp7qlpf5jqvdckjy1afjb6aha6j8dxg-pkg-config-wrapper-0.29.2' '/nix/store/c2p7haf4zzkbrir9zs662r68c5dmylbq-patchelf-0.15.2' '/nix/store/y03z7y8cgdck7vk8qpim30vps4d22gzv-update-autotools-gnu-config-scripts-hook' '/nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh' '/nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh' '/nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh' '/nix/store/p3l1a5y7nllfyrjn2krlwgcc3z0cd3fq-make-symlinks-relative.sh' '/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh' '/nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh' '/nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh' '/nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh' '/nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh' '/nix/store/a245z3cvf9x9sn0xlk6k8j9xhxbhda1z-gcc-wrapper-15.2.0' '/nix/store/i6ppbrlpp6yki8qvka7nyv091xa8dchx-binutils-wrapper-2.44' )
declare -a pkgsBuildTarget=()
declare -a pkgsHostHost=('/nix/store/i5vppnbl2qnrvm4h5azwq83rr9gm7sdy-compiler-rt-libc-21.1.8-dev' '/nix/store/idl8schy78hxa05jyndj4nmb4wzgcln2-compiler-rt-libc-21.1.8' )
declare -a pkgsHostHost=()
declare -a pkgsHostTarget=()
declare -a pkgsTargetTarget=()
declare -a postFixupHooks=('noBrokenSymlinksInAllOutputs' '_makeSymlinksRelative' '_multioutPropagateDev' )
@ -231,9 +231,9 @@ if [ ! type -p direnv &>/dev/null && -f .envrc ]; then
fi
mkdir -p "$DEVENV_STATE"
if [ ! -L "$DEVENV_DOTFILE/profile" ] || [ "$(/nix/store/i2vmgx46q9hd3z6rigaiman3wl3i2gc4-coreutils-9.9/bin/readlink $DEVENV_DOTFILE/profile)" != "/nix/store/7wyfm3pdjlbl7747ghfqlvz2rfsf013l-devenv-profile" ]
if [ ! -L "$DEVENV_DOTFILE/profile" ] || [ "$(/nix/store/i2vmgx46q9hd3z6rigaiman3wl3i2gc4-coreutils-9.9/bin/readlink $DEVENV_DOTFILE/profile)" != "/nix/store/3niz0g2hddnbba4bcql8s8arc6mmna5m-devenv-profile" ]
then
ln -snf /nix/store/7wyfm3pdjlbl7747ghfqlvz2rfsf013l-devenv-profile "$DEVENV_DOTFILE/profile"
ln -snf /nix/store/3niz0g2hddnbba4bcql8s8arc6mmna5m-devenv-profile "$DEVENV_DOTFILE/profile"
fi
unset HOST_PATH NIX_BUILD_CORES __structuredAttrs buildInputs buildPhase builder depsBuildBuild depsBuildBuildPropagated depsBuildTarget depsBuildTargetPropagated depsHostHost depsHostHostPropagated depsTargetTarget depsTargetTargetPropagated dontAddDisableDepTrack doCheck doInstallCheck nativeBuildInputs out outputs patches phases preferLocalBuild propagatedBuildInputs propagatedNativeBuildInputs shell shellHook stdenv strictDeps
@ -241,10 +241,10 @@ mkdir -p /tmp/devenv-b51d30d
ln -snf /tmp/devenv-b51d30d /home/nionidh/projects/rust-tomfoolery/cursor-mover-app/.devenv/run
export PATH=/nix/store/c0xxs40qc5szabj2yiimh0cziknji84q-devenv-flake-compat/bin:$PATH
export PATH=/nix/store/qgm0a9f2cxfsf6v0d4b5riy5x54w3zib-devenv-flake-compat/bin:$PATH
if [ -z "${DEVENV_SKIP_TASKS:-}" ]; then
/nix/store/vjc136ikp6is5m8jv4r5s24gwcfl2naf-devenv-tasks-2.0.0/bin/devenv-tasks run devenv:enterShell --mode all --cache-dir /home/nionidh/projects/rust-tomfoolery/cursor-mover-app/.devenv --runtime-dir /tmp/devenv-b51d30d || exit $?
/nix/store/bkl9r14hgr0qy850wkdj1bgs8884i46r-devenv-tasks-2.0.0/bin/devenv-tasks run devenv:enterShell --mode all --cache-dir /home/nionidh/projects/rust-tomfoolery/cursor-mover-app/.devenv --runtime-dir /tmp/devenv-b51d30d || exit $?
if [ -f "$DEVENV_DOTFILE/load-exports" ]; then
source "$DEVENV_DOTFILE/load-exports"
fi

View file

@ -64,7 +64,6 @@ pub fn MouseArea() -> Element {
});
let key_down_handler = use_callback(move |evt: Event<KeyboardData>| {
tracing::info!("Keydown");
spawn(async move {
_ = socket
.send(ClientEvent::KeyEvent {
@ -75,12 +74,49 @@ pub fn MouseArea() -> Element {
});
});
let key_up_handler = use_callback(move |evt: Event<KeyboardData>| {
// let key_up_handler = use_callback(move |evt: Event<KeyboardData>| {
// spawn(async move {
// _ = socket
// .send(ClientEvent::KeyEvent {
// key: evt.key().to_string(),
// is_pressed: false,
// })
// .await;
// });
// });
let mut input_state = use_signal(String::new);
let input_handler = use_callback(move |evt: Event<FormData>| {
let v = evt.value();
input_state.set(v.clone());
spawn(async move {
_ = socket.send(ClientEvent::TextInputEvent { text: v }).await;
});
});
let key_press_handler = use_callback(move |evt: Event<KeyboardData>| {
if evt.key() == Key::Enter {
spawn(async move {
_ = socket
.send(ClientEvent::TextInputDoneEvent {
text: input_state.replace(String::new()),
})
.await;
});
}
});
let input_focus_handler = use_callback(move |evt: Event<FocusData>| {
input_state.set(String::new());
spawn(async move {
_ = socket.send(ClientEvent::TextInputStartEvent).await;
});
});
let input_blur_handler = use_callback(move |evt: Event<FocusData>| {
spawn(async move {
_ = socket
.send(ClientEvent::KeyEvent {
key: evt.key().to_string(),
is_pressed: false,
.send(ClientEvent::TextInputDoneEvent {
text: input_state.replace(String::new()),
})
.await;
});
@ -88,7 +124,12 @@ pub fn MouseArea() -> Element {
rsx! {
div {
input { onkeydown: key_down_handler, onkeyup: key_up_handler}
input {
oninput: input_handler,
value: input_state,
onkeypress: key_press_handler,
onfocus: input_focus_handler,
onblur: input_blur_handler }
div {
class: Styles::mouse_area,
@ -105,6 +146,9 @@ enum ClientEvent {
MouseMove { dx: f64, dy: f64 },
Click,
KeyEvent { key: String, is_pressed: bool },
TextInputStartEvent,
TextInputEvent { text: String },
TextInputDoneEvent { text: String },
}
#[derive(Serialize, Deserialize, Debug)]
@ -131,6 +175,15 @@ async fn mouse_move(
ClientEvent::KeyEvent { key, is_pressed } => {
mouse_service.key_event(key, is_pressed).await;
},
ClientEvent::TextInputEvent { text } => {
mouse_service.text_input(text).await;
},
ClientEvent::TextInputStartEvent => {
mouse_service.text_input_start().await;
},
ClientEvent::TextInputDoneEvent { text } => {
mouse_service.text_input_end(text).await;
},
}
}
}))

View file

@ -1,8 +1,7 @@
use std::{io::Write, str::FromStr, sync::Arc, time::Duration};
use std::{io::Write, sync::Arc, time::Duration};
use dioxus::{
fullstack::{FullstackContext, extract::FromRef},
html::Key,
logger::tracing,
};
use memfile::MemFile;
@ -16,9 +15,14 @@ use wayland_client::{
wl_seat::{self, WlSeat},
},
};
use wayland_protocols_misc::zwp_virtual_keyboard_v1::client::{
zwp_virtual_keyboard_manager_v1::ZwpVirtualKeyboardManagerV1,
zwp_virtual_keyboard_v1::ZwpVirtualKeyboardV1,
use wayland_protocols_misc::{
zwp_input_method_v2::client::{
zwp_input_method_manager_v2::ZwpInputMethodManagerV2, zwp_input_method_v2::ZwpInputMethodV2,
},
zwp_virtual_keyboard_v1::client::{
zwp_virtual_keyboard_manager_v1::ZwpVirtualKeyboardManagerV1,
zwp_virtual_keyboard_v1::ZwpVirtualKeyboardV1,
},
};
use wayland_protocols_wlr::virtual_pointer::v1::client::{
zwlr_virtual_pointer_manager_v1::ZwlrVirtualPointerManagerV1,
@ -93,14 +97,49 @@ impl InputProxyService {
key: String,
is_pressed: bool,
) {
let guard = self.input_proxy_service_state.lock().await;
if let Some(keyboard) = &guard.state.virtual_keyboard() {
let time = get_wayland_timestamp();
todo!();
}
let key = Key::from_str(key.as_str()).unwrap().legacy_charcode();
pub async fn text_input_start(&self) {
let mut guard = self.input_proxy_service_state.lock().await;
keyboard.key(time, key, if is_pressed { 1 } else { 0 });
if let Some(keyboard) = guard.state.input_method_mut() {
keyboard.input_method_state += 1;
tracing::info!("Text Input Start");
keyboard.input_method.delete_surrounding_text(4, 4);
keyboard.input_method.commit(keyboard.input_method_state);
guard.event_queue.flush().unwrap();
}
}
pub async fn text_input(
&self,
key: String,
) {
let mut guard = self.input_proxy_service_state.lock().await;
if let Some(keyboard) = guard.state.input_method_mut() {
keyboard.input_method_state += 1;
tracing::info!("Text Input {key}");
keyboard.input_method.set_preedit_string(key, 0, 0);
keyboard.input_method.commit(keyboard.input_method_state);
guard.event_queue.flush().unwrap();
}
}
pub async fn text_input_end(
&self,
text: String,
) {
let mut guard = self.input_proxy_service_state.lock().await;
if let Some(keyboard) = guard.state.input_method_mut() {
keyboard.input_method_state += 1;
tracing::info!("Text Input End");
keyboard.input_method.commit_string(text);
keyboard.input_method.commit(keyboard.input_method_state);
guard.event_queue.flush().unwrap();
}
}
@ -143,12 +182,18 @@ struct Keymap {
size: u32,
}
struct InputMethod {
input_method: ZwpInputMethodV2,
input_method_state: u32,
}
enum InputProxyServiceState {
Incomplete {
queue_handle: QueueHandle<Self>,
seat: Option<WlSeat>,
virtual_pointer_manager: Option<ZwlrVirtualPointerManagerV1>,
virtual_keyboard_manager: Option<ZwpVirtualKeyboardManagerV1>,
input_method_manager: Option<ZwpInputMethodManagerV2>,
keymap: Keymap,
},
Running {
@ -158,6 +203,8 @@ enum InputProxyServiceState {
virtual_pointer: ZwlrVirtualPointerV1,
virtual_keyboard: ZwpVirtualKeyboardV1,
input_method: InputMethod,
},
}
impl InputProxyServiceState {
@ -177,6 +224,7 @@ impl InputProxyServiceState {
seat: None,
virtual_pointer_manager: None,
virtual_keyboard_manager: None,
input_method_manager: None,
}
}
@ -198,6 +246,13 @@ impl InputProxyServiceState {
}
}
fn input_method_mut(&mut self) -> Option<&mut InputMethod> {
match self {
Self::Running { input_method, .. } => Some(input_method),
Self::Incomplete { .. } => None,
}
}
pub fn set_seat(
&mut self,
seat: WlSeat,
@ -249,35 +304,63 @@ impl InputProxyServiceState {
}
}
pub fn set_input_method_manager(
&mut self,
input_method_manager: ZwpInputMethodManagerV2,
) {
if let Self::Incomplete {
input_method_manager: existing @ None,
..
} = self
{
*existing = Some(input_method_manager);
tracing::info!("Obtained Input Method Manager!");
self.try_upgrade();
} else {
tracing::info!("Received duplicate ZwpInputMethodManagerV2");
}
}
pub fn try_upgrade(&mut self) {
if let Self::Incomplete {
queue_handle,
keymap,
seat: oseat @ Some(..),
virtual_pointer_manager: ovpm @ Some(..),
virtual_keyboard_manager: ovkm @ Some(..),
seat: seat @ Some(..),
virtual_pointer_manager: vpm @ Some(..),
virtual_keyboard_manager: vkm @ Some(..),
input_method_manager: imm @ Some(..),
} = self
{
let virtual_keyboard = ovkm.as_ref().unwrap().create_virtual_keyboard(
oseat.as_ref().unwrap(),
let virtual_keyboard = vkm.as_ref().unwrap().create_virtual_keyboard(
seat.as_ref().unwrap(),
queue_handle,
(),
);
virtual_keyboard.keymap(XKB_V1, keymap.file.as_fd(), keymap.size);
let virtual_pointer = ovpm.as_ref().unwrap().create_virtual_pointer(
Some(oseat.as_ref().unwrap()),
let virtual_pointer = vpm.as_ref().unwrap().create_virtual_pointer(
Some(seat.as_ref().unwrap()),
queue_handle,
(),
);
let input_method =
imm.as_ref()
.unwrap()
.get_input_method(seat.as_ref().unwrap(), queue_handle, ());
tracing::info!("InputProxyServiceState upgraded to running");
*self = Self::Running {
seat: oseat.take().unwrap(),
virtual_pointer_manager: ovpm.take().unwrap(),
virtual_keyboard_manager: ovkm.take().unwrap(),
seat: seat.take().unwrap(),
virtual_pointer_manager: vpm.take().unwrap(),
virtual_keyboard_manager: vkm.take().unwrap(),
virtual_pointer,
virtual_keyboard,
input_method: InputMethod {
input_method,
input_method_state: 0,
},
};
}
}
@ -339,6 +422,33 @@ impl Dispatch<ZwpVirtualKeyboardManagerV1, ()> for InputProxyServiceState {
}
}
impl Dispatch<ZwpInputMethodManagerV2, ()> for InputProxyServiceState {
fn event(
_state: &mut Self,
_proxy: &ZwpInputMethodManagerV2,
_event: <ZwpInputMethodManagerV2 as Proxy>::Event,
_data: &(),
_conn: &Connection,
_qhandle: &QueueHandle<Self>,
) {
tracing::warn!("Unknown event received from ZwpInputMethodManagerV2");
}
}
impl Dispatch<ZwpInputMethodV2, ()> for InputProxyServiceState {
fn event(
_state: &mut Self,
_proxy: &ZwpInputMethodV2,
_event: <ZwpInputMethodV2 as Proxy>::Event,
_data: &(),
_conn: &Connection,
_qhandle: &QueueHandle<Self>,
) {
panic!();
tracing::warn!("Unknown event received from ZwpInputMethodV2");
}
}
impl Dispatch<WlSeat, ()> for InputProxyServiceState {
fn event(
_state: &mut Self,
@ -399,6 +509,15 @@ impl Dispatch<WlRegistry, ()> for InputProxyServiceState {
);
app_data.set_virtual_keyboard_manager(manager);
},
"zwp_input_method_manager_v2" => {
let manager = registry.bind::<ZwpInputMethodManagerV2, _, _>(
name,
version,
queue_handle,
(),
);
app_data.set_input_method_manager(manager);
},
_ => {},
},
Event::GlobalRemove { .. } => todo!(),

View file

@ -1,3 +1,571 @@
fn is_key_string(s: &str) -> bool {
s.chars().all(|c| !c.is_control()) && s.chars().skip(1).all(|c| !c.is_ascii())
}
pub fn web_key_to_linux_keycode(s: &str) -> Option<u32> {
match s {
//s if is_key_string(s) => Ok(Character(s.to_string())),
"Unidentified" => todo!(),
"Alt" => Some(KEY_LEFTALT),
"AltGraph" => Some(KEY_RIGHTALT),
"CapsLock" => todo!(),
"Control" => todo!(),
"Fn" => todo!(),
"FnLock" => todo!(),
"Meta" => todo!(),
"NumLock" => todo!(),
"ScrollLock" => todo!(),
"Shift" => todo!(),
"Symbol" => todo!(),
"SymbolLock" => todo!(),
"Hyper" => todo!(),
"Super" => todo!(),
"Enter" => todo!(),
"Tab" => todo!(),
"ArrowDown" => todo!(),
"ArrowLeft" => todo!(),
"ArrowRight" => todo!(),
"ArrowUp" => todo!(),
"End" => todo!(),
"Home" => todo!(),
"PageDown" => todo!(),
"PageUp" => todo!(),
"Backspace" => todo!(),
"Clear" => todo!(),
"Copy" => todo!(),
"CrSel" => todo!(),
"Cut" => todo!(),
"Delete" => todo!(),
"EraseEof" => todo!(),
"ExSel" => todo!(),
"Insert" => todo!(),
"Paste" => todo!(),
"Redo" => todo!(),
"Undo" => todo!(),
"Accept" => todo!(),
"Again" => todo!(),
"Attn" => todo!(),
"Cancel" => todo!(),
"ContextMenu" => todo!(),
"Escape" => todo!(),
"Execute" => todo!(),
"Find" => todo!(),
"Help" => todo!(),
"Pause" => todo!(),
"Play" => todo!(),
"Props" => todo!(),
"Select" => todo!(),
"ZoomIn" => todo!(),
"ZoomOut" => todo!(),
"BrightnessDown" => todo!(),
"BrightnessUp" => todo!(),
"Eject" => todo!(),
"LogOff" => todo!(),
"Power" => todo!(),
"PowerOff" => todo!(),
"PrintScreen" => todo!(),
"Hibernate" => todo!(),
"Standby" => todo!(),
"WakeUp" => todo!(),
"AllCandidates" => todo!(),
"Alphanumeric" => todo!(),
"CodeInput" => todo!(),
"Compose" => todo!(),
"Convert" => todo!(),
"Dead" => todo!(),
"FinalMode" => todo!(),
"GroupFirst" => todo!(),
"GroupLast" => todo!(),
"GroupNext" => todo!(),
"GroupPrevious" => todo!(),
"ModeChange" => todo!(),
"NextCandidate" => todo!(),
"NonConvert" => todo!(),
"PreviousCandidate" => todo!(),
"Process" => todo!(),
"SingleCandidate" => todo!(),
"HangulMode" => todo!(),
"HanjaMode" => todo!(),
"JunjaMode" => todo!(),
"Eisu" => todo!(),
"Hankaku" => todo!(),
"Hiragana" => todo!(),
"HiraganaKatakana" => todo!(),
"KanaMode" => todo!(),
"KanjiMode" => todo!(),
"Katakana" => todo!(),
"Romaji" => todo!(),
"Zenkaku" => todo!(),
"ZenkakuHankaku" => todo!(),
"Soft1" => todo!(),
"Soft2" => todo!(),
"Soft3" => todo!(),
"Soft4" => todo!(),
"ChannelDown" => todo!(),
"ChannelUp" => todo!(),
"Close" => todo!(),
"MailForward" => todo!(),
"MailReply" => todo!(),
"MailSend" => todo!(),
"MediaClose" => todo!(),
"MediaFastForward" => todo!(),
"MediaPause" => todo!(),
"MediaPlay" => todo!(),
"MediaPlayPause" => todo!(),
"MediaRecord" => todo!(),
"MediaRewind" => todo!(),
"MediaStop" => todo!(),
"MediaTrackNext" => todo!(),
"MediaTrackPrevious" => todo!(),
"New" => todo!(),
"Open" => todo!(),
"Print" => todo!(),
"Save" => todo!(),
"SpellCheck" => todo!(),
"Key11" => todo!(),
"Key12" => todo!(),
"AudioBalanceLeft" => todo!(),
"AudioBalanceRight" => todo!(),
"AudioBassBoostDown" => todo!(),
"AudioBassBoostToggle" => todo!(),
"AudioBassBoostUp" => todo!(),
"AudioFaderFront" => todo!(),
"AudioFaderRear" => todo!(),
"AudioSurroundModeNext" => todo!(),
"AudioTrebleDown" => todo!(),
"AudioTrebleUp" => todo!(),
"AudioVolumeDown" => todo!(),
"AudioVolumeUp" => todo!(),
"AudioVolumeMute" => todo!(),
"MicrophoneToggle" => todo!(),
"MicrophoneVolumeDown" => todo!(),
"MicrophoneVolumeUp" => todo!(),
"MicrophoneVolumeMute" => todo!(),
"SpeechCorrectionList" => todo!(),
"SpeechInputToggle" => todo!(),
"LaunchApplication1" => todo!(),
"LaunchApplication2" => todo!(),
"LaunchCalendar" => todo!(),
"LaunchContacts" => todo!(),
"LaunchMail" => todo!(),
"LaunchMediaPlayer" => todo!(),
"LaunchMusicPlayer" => todo!(),
"LaunchPhone" => todo!(),
"LaunchScreenSaver" => todo!(),
"LaunchSpreadsheet" => todo!(),
"LaunchWebBrowser" => todo!(),
"LaunchWebCam" => todo!(),
"LaunchWordProcessor" => todo!(),
"BrowserBack" => todo!(),
"BrowserFavorites" => todo!(),
"BrowserForward" => todo!(),
"BrowserHome" => todo!(),
"BrowserRefresh" => todo!(),
"BrowserSearch" => todo!(),
"BrowserStop" => todo!(),
"AppSwitch" => todo!(),
"Call" => todo!(),
"Camera" => todo!(),
"CameraFocus" => todo!(),
"EndCall" => todo!(),
"GoBack" => todo!(),
"GoHome" => todo!(),
"HeadsetHook" => todo!(),
"LastNumberRedial" => todo!(),
"Notification" => todo!(),
"MannerMode" => todo!(),
"VoiceDial" => todo!(),
"TV" => todo!(),
"TV3DMode" => todo!(),
"TVAntennaCable" => todo!(),
"TVAudioDescription" => todo!(),
"TVAudioDescriptionMixDown" => todo!(),
"TVAudioDescriptionMixUp" => todo!(),
"TVContentsMenu" => todo!(),
"TVDataService" => todo!(),
"TVInput" => todo!(),
"TVInputComponent1" => todo!(),
"TVInputComponent2" => todo!(),
"TVInputComposite1" => todo!(),
"TVInputComposite2" => todo!(),
"TVInputHDMI1" => todo!(),
"TVInputHDMI2" => todo!(),
"TVInputHDMI3" => todo!(),
"TVInputHDMI4" => todo!(),
"TVInputVGA1" => todo!(),
"TVMediaContext" => todo!(),
"TVNetwork" => todo!(),
"TVNumberEntry" => todo!(),
"TVPower" => todo!(),
"TVRadioService" => todo!(),
"TVSatellite" => todo!(),
"TVSatelliteBS" => todo!(),
"TVSatelliteCS" => todo!(),
"TVSatelliteToggle" => todo!(),
"TVTerrestrialAnalog" => todo!(),
"TVTerrestrialDigital" => todo!(),
"TVTimer" => todo!(),
"AVRInput" => todo!(),
"AVRPower" => todo!(),
"ColorF0Red" => todo!(),
"ColorF1Green" => todo!(),
"ColorF2Yellow" => todo!(),
"ColorF3Blue" => todo!(),
"ColorF4Grey" => todo!(),
"ColorF5Brown" => todo!(),
"ClosedCaptionToggle" => todo!(),
"Dimmer" => todo!(),
"DisplaySwap" => todo!(),
"DVR" => todo!(),
"Exit" => todo!(),
"FavoriteClear0" => todo!(),
"FavoriteClear1" => todo!(),
"FavoriteClear2" => todo!(),
"FavoriteClear3" => todo!(),
"FavoriteRecall0" => todo!(),
"FavoriteRecall1" => todo!(),
"FavoriteRecall2" => todo!(),
"FavoriteRecall3" => todo!(),
"FavoriteStore0" => todo!(),
"FavoriteStore1" => todo!(),
"FavoriteStore2" => todo!(),
"FavoriteStore3" => todo!(),
"Guide" => todo!(),
"GuideNextDay" => todo!(),
"GuidePreviousDay" => todo!(),
"Info" => todo!(),
"InstantReplay" => todo!(),
"Link" => todo!(),
"ListProgram" => todo!(),
"LiveContent" => todo!(),
"Lock" => todo!(),
"MediaApps" => todo!(),
"MediaAudioTrack" => todo!(),
"MediaLast" => todo!(),
"MediaSkipBackward" => todo!(),
"MediaSkipForward" => todo!(),
"MediaStepBackward" => todo!(),
"MediaStepForward" => todo!(),
"MediaTopMenu" => todo!(),
"NavigateIn" => todo!(),
"NavigateNext" => todo!(),
"NavigateOut" => todo!(),
"NavigatePrevious" => todo!(),
"NextFavoriteChannel" => todo!(),
"NextUserProfile" => todo!(),
"OnDemand" => todo!(),
"Pairing" => todo!(),
"PinPDown" => todo!(),
"PinPMove" => todo!(),
"PinPToggle" => todo!(),
"PinPUp" => todo!(),
"PlaySpeedDown" => todo!(),
"PlaySpeedReset" => todo!(),
"PlaySpeedUp" => todo!(),
"RandomToggle" => todo!(),
"RcLowBattery" => todo!(),
"RecordSpeedNext" => todo!(),
"RfBypass" => todo!(),
"ScanChannelsToggle" => todo!(),
"ScreenModeNext" => todo!(),
"Settings" => todo!(),
"SplitScreenToggle" => todo!(),
"STBInput" => todo!(),
"STBPower" => todo!(),
"Subtitle" => todo!(),
"Teletext" => todo!(),
"VideoModeNext" => todo!(),
"Wink" => todo!(),
"ZoomToggle" => todo!(),
"F1" => todo!(),
"F2" => todo!(),
"F3" => todo!(),
"F4" => todo!(),
"F5" => todo!(),
"F6" => todo!(),
"F7" => todo!(),
"F8" => todo!(),
"F9" => todo!(),
"F10" => todo!(),
"F11" => todo!(),
"F12" => todo!(),
"F13" => todo!(),
"F14" => todo!(),
"F15" => todo!(),
"F16" => todo!(),
"F17" => todo!(),
"F18" => todo!(),
"F19" => todo!(),
"F20" => todo!(),
"F21" => todo!(),
"F22" => todo!(),
"F23" => todo!(),
"F24" => todo!(),
"F25" => todo!(),
"F26" => todo!(),
"F27" => todo!(),
"F28" => todo!(),
"F29" => todo!(),
"F30" => todo!(),
"F31" => todo!(),
"F32" => todo!(),
"F33" => todo!(),
"F34" => todo!(),
"F35" => todo!(),
_ => todo!(),
}
}
const KEY_RESERVED: u32 = 0;
const KEY_ESC: u32 = 1;
const KEY_1: u32 = 2;
const KEY_2: u32 = 3;
const KEY_3: u32 = 4;
const KEY_4: u32 = 5;
const KEY_5: u32 = 6;
const KEY_6: u32 = 7;
const KEY_7: u32 = 8;
const KEY_8: u32 = 9;
const KEY_9: u32 = 10;
const KEY_0: u32 = 11;
const KEY_MINUS: u32 = 12;
const KEY_EQUAL: u32 = 13;
const KEY_BACKSPACE: u32 = 14;
const KEY_TAB: u32 = 15;
const KEY_Q: u32 = 16;
const KEY_W: u32 = 17;
const KEY_E: u32 = 18;
const KEY_R: u32 = 19;
const KEY_T: u32 = 20;
const KEY_Y: u32 = 21;
const KEY_U: u32 = 22;
const KEY_I: u32 = 23;
const KEY_O: u32 = 24;
const KEY_P: u32 = 25;
const KEY_LEFTBRACE: u32 = 26;
const KEY_RIGHTBRACE: u32 = 27;
const KEY_ENTER: u32 = 28;
const KEY_LEFTCTRL: u32 = 29;
const KEY_A: u32 = 30;
const KEY_S: u32 = 31;
const KEY_D: u32 = 32;
const KEY_F: u32 = 33;
const KEY_G: u32 = 34;
const KEY_H: u32 = 35;
const KEY_J: u32 = 36;
const KEY_K: u32 = 37;
const KEY_L: u32 = 38;
const KEY_SEMICOLON: u32 = 39;
const KEY_APOSTROPHE: u32 = 40;
const KEY_GRAVE: u32 = 41;
const KEY_LEFTSHIFT: u32 = 42;
const KEY_BACKSLASH: u32 = 43;
const KEY_Z: u32 = 44;
const KEY_X: u32 = 45;
const KEY_C: u32 = 46;
const KEY_V: u32 = 47;
const KEY_B: u32 = 48;
const KEY_N: u32 = 49;
const KEY_M: u32 = 50;
const KEY_COMMA: u32 = 51;
const KEY_DOT: u32 = 52;
const KEY_SLASH: u32 = 53;
const KEY_RIGHTSHIFT: u32 = 54;
const KEY_KPASTERISK: u32 = 55;
const KEY_LEFTALT: u32 = 56;
const KEY_SPACE: u32 = 57;
const KEY_CAPSLOCK: u32 = 58;
const KEY_F1: u32 = 59;
const KEY_F2: u32 = 60;
const KEY_F3: u32 = 61;
const KEY_F4: u32 = 62;
const KEY_F5: u32 = 63;
const KEY_F6: u32 = 64;
const KEY_F7: u32 = 65;
const KEY_F8: u32 = 66;
const KEY_F9: u32 = 67;
const KEY_F10: u32 = 68;
const KEY_NUMLOCK: u32 = 69;
const KEY_SCROLLLOCK: u32 = 70;
const KEY_KP7: u32 = 71;
const KEY_KP8: u32 = 72;
const KEY_KP9: u32 = 73;
const KEY_KPMINUS: u32 = 74;
const KEY_KP4: u32 = 75;
const KEY_KP5: u32 = 76;
const KEY_KP6: u32 = 77;
const KEY_KPPLUS: u32 = 78;
const KEY_KP1: u32 = 79;
const KEY_KP2: u32 = 80;
const KEY_KP3: u32 = 81;
const KEY_KP0: u32 = 82;
const KEY_KPDOT: u32 = 83;
const KEY_ZENKAKUHANKAKU: u32 = 85;
const KEY_102ND: u32 = 86;
const KEY_F11: u32 = 87;
const KEY_F12: u32 = 88;
const KEY_RO: u32 = 89;
const KEY_KATAKANA: u32 = 90;
const KEY_HIRAGANA: u32 = 91;
const KEY_HENKAN: u32 = 92;
const KEY_KATAKANAHIRAGANA: u32 = 93;
const KEY_MUHENKAN: u32 = 94;
const KEY_KPJPCOMMA: u32 = 95;
const KEY_KPENTER: u32 = 96;
const KEY_RIGHTCTRL: u32 = 97;
const KEY_KPSLASH: u32 = 98;
const KEY_SYSRQ: u32 = 99;
const KEY_RIGHTALT: u32 = 100;
const KEY_LINEFEED: u32 = 101;
const KEY_HOME: u32 = 102;
const KEY_UP: u32 = 103;
const KEY_PAGEUP: u32 = 104;
const KEY_LEFT: u32 = 105;
const KEY_RIGHT: u32 = 106;
const KEY_END: u32 = 107;
const KEY_DOWN: u32 = 108;
const KEY_PAGEDOWN: u32 = 109;
const KEY_INSERT: u32 = 110;
const KEY_DELETE: u32 = 111;
const KEY_MACRO: u32 = 112;
const KEY_MUTE: u32 = 113;
const KEY_VOLUMEDOWN: u32 = 114;
const KEY_VOLUMEUP: u32 = 115;
const KEY_POWER : u32 = 116 /* SC System Power Down */;
const KEY_KPEQUAL: u32 = 117;
const KEY_KPPLUSMINUS: u32 = 118;
const KEY_PAUSE: u32 = 119;
const KEY_SCALE : u32 = 120 /* AL Compiz Scale (Expose) */;
const KEY_KPCOMMA: u32 = 121;
const KEY_HANGEUL: u32 = 122;
const KEY_HANGUEL: u32 = KEY_HANGEUL;
const KEY_HANJA: u32 = 123;
const KEY_YEN: u32 = 124;
const KEY_LEFTMETA: u32 = 125;
const KEY_RIGHTMETA: u32 = 126;
const KEY_COMPOSE: u32 = 127;
const KEY_STOP : u32 = 128 /* AC Stop */;
const KEY_AGAIN: u32 = 129;
const KEY_PROPS : u32 = 130 /* AC Properties */;
const KEY_UNDO : u32 = 131 /* AC Undo */;
const KEY_FRONT: u32 = 132;
const KEY_COPY : u32 = 133 /* AC Copy */;
const KEY_OPEN : u32 = 134 /* AC Open */;
const KEY_PASTE : u32 = 135 /* AC Paste */;
const KEY_FIND : u32 = 136 /* AC Search */;
const KEY_CUT : u32 = 137 /* AC Cut */;
const KEY_HELP : u32 = 138 /* AL Integrated Help Center */;
const KEY_MENU : u32 = 139 /* Menu (show menu) */;
const KEY_CALC : u32 = 140 /* AL Calculator */;
const KEY_SETUP: u32 = 141;
const KEY_SLEEP : u32 = 142 /* SC System Sleep */;
const KEY_WAKEUP : u32 = 143 /* System Wake Up */;
const KEY_FILE : u32 = 144 /* AL Local Machine Browser */;
const KEY_SENDFILE: u32 = 145;
const KEY_DELETEFILE: u32 = 146;
const KEY_XFER: u32 = 147;
const KEY_PROG1: u32 = 148;
const KEY_PROG2: u32 = 149;
const KEY_WWW : u32 = 150 /* AL Internet Browser */;
const KEY_MSDOS: u32 = 151;
const KEY_COFFEE : u32 = 152 /* AL Terminal Lock/Screensaver */;
const KEY_SCREENLOCK: u32 = KEY_COFFEE;
const KEY_ROTATE_DISPLAY : u32 = 153 /* Display orientation for e.g. tablets */;
const KEY_DIRECTION: u32 = KEY_ROTATE_DISPLAY;
const KEY_CYCLEWINDOWS: u32 = 154;
const KEY_MAIL: u32 = 155;
const KEY_BOOKMARKS : u32 = 156 /* AC Bookmarks */;
const KEY_COMPUTER: u32 = 157;
const KEY_BACK : u32 = 158 /* AC Back */;
const KEY_FORWARD : u32 = 159 /* AC Forward */;
const KEY_CLOSECD: u32 = 160;
const KEY_EJECTCD: u32 = 161;
const KEY_EJECTCLOSECD: u32 = 162;
const KEY_NEXTSONG: u32 = 163;
const KEY_PLAYPAUSE: u32 = 164;
const KEY_PREVIOUSSONG: u32 = 165;
const KEY_STOPCD: u32 = 166;
const KEY_RECORD: u32 = 167;
const KEY_REWIND: u32 = 168;
const KEY_PHONE : u32 = 169 /* Media Select Telephone */;
const KEY_ISO: u32 = 170;
const KEY_CONFIG : u32 = 171 /* AL Consumer Control Configuration */;
const KEY_HOMEPAGE : u32 = 172 /* AC Home */;
const KEY_REFRESH : u32 = 173 /* AC Refresh */;
const KEY_EXIT : u32 = 174 /* AC Exit */;
const KEY_MOVE: u32 = 175;
const KEY_EDIT: u32 = 176;
const KEY_SCROLLUP: u32 = 177;
const KEY_SCROLLDOWN: u32 = 178;
const KEY_KPLEFTPAREN: u32 = 179;
const KEY_KPRIGHTPAREN: u32 = 180;
const KEY_NEW : u32 = 181 /* AC New */;
const KEY_REDO : u32 = 182 /* AC Redo/Repeat */;
const KEY_F13: u32 = 183;
const KEY_F14: u32 = 184;
const KEY_F15: u32 = 185;
const KEY_F16: u32 = 186;
const KEY_F17: u32 = 187;
const KEY_F18: u32 = 188;
const KEY_F19: u32 = 189;
const KEY_F20: u32 = 190;
const KEY_F21: u32 = 191;
const KEY_F22: u32 = 192;
const KEY_F23: u32 = 193;
const KEY_F24: u32 = 194;
const KEY_PLAYCD: u32 = 200;
const KEY_PAUSECD: u32 = 201;
const KEY_PROG3: u32 = 202;
const KEY_PROG4: u32 = 203;
const KEY_ALL_APPLICATIONS : u32 = 204 /* AC Desktop Show All Applications */;
const KEY_DASHBOARD: u32 = KEY_ALL_APPLICATIONS;
const KEY_SUSPEND: u32 = 205;
const KEY_CLOSE : u32 = 206 /* AC Close */;
const KEY_PLAY: u32 = 207;
const KEY_FASTFORWARD: u32 = 208;
const KEY_BASSBOOST: u32 = 209;
const KEY_PRINT : u32 = 210 /* AC Print */;
const KEY_HP: u32 = 211;
const KEY_CAMERA: u32 = 212;
const KEY_SOUND: u32 = 213;
const KEY_QUESTION: u32 = 214;
const KEY_EMAIL: u32 = 215;
const KEY_CHAT: u32 = 216;
const KEY_SEARCH: u32 = 217;
const KEY_CONNECT: u32 = 218;
const KEY_FINANCE : u32 = 219 /* AL Checkbook/Finance */;
const KEY_SPORT: u32 = 220;
const KEY_SHOP: u32 = 221;
const KEY_ALTERASE: u32 = 222;
const KEY_CANCEL : u32 = 223 /* AC Cancel */;
const KEY_BRIGHTNESSDOWN: u32 = 224;
const KEY_BRIGHTNESSUP: u32 = 225;
const KEY_MEDIA: u32 = 226;
const KEY_SWITCHVIDEOMODE : u32 = 227 /* Cycle between available video outputs (Monitor/LCD/TV-out/etc) */;
const KEY_KBDILLUMTOGGLE: u32 = 228;
const KEY_KBDILLUMDOWN: u32 = 229;
const KEY_KBDILLUMUP: u32 = 230;
const KEY_SEND : u32 = 231 /* AC Send */;
const KEY_REPLY : u32 = 232 /* AC Reply */;
const KEY_FORWARDMAIL : u32 = 233 /* AC Forward Msg */;
const KEY_SAVE : u32 = 234 /* AC Save */;
const KEY_DOCUMENTS: u32 = 235;
const KEY_BATTERY: u32 = 236;
const KEY_BLUETOOTH: u32 = 237;
const KEY_WLAN: u32 = 238;
const KEY_UWB: u32 = 239;
const KEY_UNKNOWN: u32 = 240;
const KEY_VIDEO_NEXT : u32 = 241 /* drive next video source */;
const KEY_VIDEO_PREV : u32 = 242 /* drive previous video source */;
const KEY_BRIGHTNESS_CYCLE : u32 = 243 /* brightness up, after max is min */;
const KEY_BRIGHTNESS_AUTO : u32 = 244 /* Set Auto Brightness: manual brightness control is off, rely on ambient */;
const KEY_BRIGHTNESS_ZERO: u32 = KEY_BRIGHTNESS_AUTO;
const KEY_DISPLAY_OFF : u32 = 245 /* display device to off state */;
const KEY_WWAN : u32 = 246 /* Wireless WAN (LTE, UMTS, GSM, etc.) */;
const KEY_WIMAX: u32 = KEY_WWAN;
const KEY_RFKILL : u32 = 247 /* Key that controls all radios */;
const KEY_MICMUTE : u32 = 248 /* Mute / unmute the microphone */;
pub const KEYMAP: &str = "xkb_keymap {}";
pub const KEYMAP_: &str = "xkb_keymap {\

View file

@ -117,10 +117,6 @@
wasmBindgen
pkgs.libxkbcommon
pkgs.clang
pkgs.llvmPackages.libclang
];
scripts.checkall.exec = ''