keybinding progress

macos-click-through
keith 5 years ago
parent fef5d56106
commit 215b98d971

365
Cargo.lock generated

@ -21,24 +21,6 @@ dependencies = [
"memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "andrew"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"line_drawing 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rusttype 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)",
"walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"xdg 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "android_glue"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "ansi_term"
version = "0.11.0"
@ -52,14 +34,6 @@ name = "anyhow"
version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "approx"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "arc-swap"
version = "0.4.4"
@ -188,16 +162,6 @@ name = "bytes"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "calloop"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)",
"mio-extras 2.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
"nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "cc"
version = "1.0.50"
@ -380,18 +344,6 @@ dependencies = [
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "core-video-sys"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
"core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
"core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "crc32fast"
version = "1.2.0"
@ -508,24 +460,6 @@ dependencies = [
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "dispatch"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "dlib"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "downcast-rs"
version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "dwrote"
version = "0.9.0"
@ -541,6 +475,14 @@ name = "either"
version = "1.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "encoding_rs"
version = "0.8.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "env_logger"
version = "0.7.1"
@ -863,11 +805,6 @@ dependencies = [
"adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "instant"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "iovec"
version = "0.1.4"
@ -934,14 +871,6 @@ dependencies = [
"vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "line_drawing"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "lock_api"
version = "0.3.3"
@ -997,25 +926,11 @@ dependencies = [
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "maybe-uninit"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "memchr"
version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "memmap"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "memoffset"
version = "0.5.3"
@ -1064,17 +979,6 @@ dependencies = [
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "mio-extras"
version = "2.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)",
"slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "mio-named-pipes"
version = "0.1.6"
@ -1135,7 +1039,7 @@ dependencies = [
"rmpv 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
"rust-embed 5.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"skribo 0.0.1 (git+https://github.com/linebender/skribo)",
"skulpin 0.6.0 (git+https://github.com/kethku/skulpin?branch=winit_20)",
"skulpin 0.5.2",
"tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"winres 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1151,18 +1055,6 @@ dependencies = [
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "nix"
version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)",
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "nodrop"
version = "0.1.14"
@ -1281,14 +1173,6 @@ dependencies = [
"vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "ordered-float"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "parking_lot"
version = "0.10.0"
@ -1316,11 +1200,6 @@ name = "peeking_take_while"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "percent-encoding"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "pin-project"
version = "0.4.8"
@ -1552,25 +1431,6 @@ dependencies = [
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rusttype"
version = "0.7.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"rusttype 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "rusttype"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"approx 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"ordered-float 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"stb_truetype 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "ryu"
version = "1.0.2"
@ -1603,6 +1463,31 @@ name = "scopeguard"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "sdl2"
version = "0.33.0"
source = "git+https://github.com/Rust-SDL2/rust-sdl2#4ff7e9ce79c42360bf02f716818cdb3bfd057370"
dependencies = [
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"sdl2-sys 0.33.0 (git+https://github.com/Rust-SDL2/rust-sdl2)",
]
[[package]]
name = "sdl2-sys"
version = "0.33.0"
source = "git+https://github.com/Rust-SDL2/rust-sdl2#4ff7e9ce79c42360bf02f716818cdb3bfd057370"
dependencies = [
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
"cmake 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
"flate2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)",
"unidiff 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "semver"
version = "0.9.0"
@ -1723,8 +1608,7 @@ dependencies = [
[[package]]
name = "skulpin"
version = "0.6.0"
source = "git+https://github.com/kethku/skulpin?branch=winit_20#2fda3cdc71903ddf756dc86f9c16bd42a7ef4959"
version = "0.5.2"
dependencies = [
"ash 0.29.0 (registry+https://github.com/rust-lang/crates.io-index)",
"cocoa 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1732,9 +1616,9 @@ dependencies = [
"metal 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)",
"objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
"raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"sdl2 0.33.0 (git+https://github.com/Rust-SDL2/rust-sdl2)",
"skia-safe 0.26.1 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
"winit 0.20.0 (git+https://github.com/filnet/winit?branch=fix-panic-at-redraw-event-in-non-redraw-phase)",
]
[[package]]
@ -1747,21 +1631,6 @@ name = "smallvec"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "smithay-client-toolkit"
version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"andrew 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"dlib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)",
"wayland-client 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)",
"wayland-protocols 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "socket2"
version = "0.3.11"
@ -1773,14 +1642,6 @@ dependencies = [
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "stb_truetype"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "strsim"
version = "0.8.0"
@ -1940,6 +1801,16 @@ name = "unicode-xid"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "unidiff"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"encoding_rs 0.8.22 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "vcpkg"
version = "0.2.8"
@ -1955,11 +1826,6 @@ name = "version_check"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "void"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "walkdir"
version = "2.3.1"
@ -1975,61 +1841,6 @@ name = "wasi"
version = "0.9.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "wayland-client"
version = "0.23.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"calloop 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
"downcast-rs 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)",
"nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)",
"wayland-commons 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)",
"wayland-scanner 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)",
"wayland-sys 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "wayland-commons"
version = "0.23.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)",
"wayland-sys 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "wayland-protocols"
version = "0.23.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"wayland-client 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)",
"wayland-commons 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)",
"wayland-scanner 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "wayland-scanner"
version = "0.23.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
"xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "wayland-sys"
version = "0.23.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"dlib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "which"
version = "3.1.0"
@ -2075,34 +1886,6 @@ name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "winit"
version = "0.20.0"
source = "git+https://github.com/filnet/winit?branch=fix-panic-at-redraw-event-in-non-redraw-phase#277e3527fe21d975b7fa8adf7b26040a2201ed27"
dependencies = [
"android_glue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"cocoa 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)",
"core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
"core-graphics 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)",
"core-video-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"dispatch 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"instant 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)",
"mio-extras 2.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
"objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
"percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"smithay-client-toolkit 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
"wayland-client 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
"x11-dl 2.18.5 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "winres"
version = "0.1.11"
@ -2120,17 +1903,6 @@ dependencies = [
"winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "x11-dl"
version = "2.18.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "xattr"
version = "0.2.2"
@ -2139,25 +1911,12 @@ dependencies = [
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "xdg"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "xml-rs"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[metadata]
"checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2"
"checksum ahash 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "6f33b5018f120946c1dcf279194f238a9f146725593ead1c08fa47ff22b0b5d3"
"checksum aho-corasick 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)" = "743ad5a418686aad3b87fd14c43badd828cf26e214a00f92a384291cf22e1811"
"checksum andrew 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9b7f09f89872c2b6b29e319377b1fbe91c6f5947df19a25596e121cf19a7b35e"
"checksum android_glue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "000444226fcff248f2bc4c7625be32c63caccfecc2723a2b9f78a7487a49c407"
"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
"checksum anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)" = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c"
"checksum approx 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f0e60b75072ecd4168020818c0107f2857bb6c4e64252d8d3983f6263b40a5c3"
"checksum arc-swap 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d7b8a9123b8027467bce0099fe556c628a53c8d83df0507084c31e9ba2e39aff"
"checksum arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544"
"checksum arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9"
@ -2175,7 +1934,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c"
"checksum bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1"
"checksum calloop 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7aa2097be53a00de9e8fc349fea6d76221f398f5c4fa550d420669906962d160"
"checksum cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)" = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd"
"checksum cexpr 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "fce5b5fb86b0c57c20c834c1b412fd09c77c8a59b9473f86272709e78874cd1d"
"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
@ -2197,7 +1955,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum core-graphics 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "59e78b2e0aaf43f08e7ae0d6bc96895ef72ff0921c7d4ff4762201b2dba376dd"
"checksum core-text 13.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "db84654ad95211c082cf9795f6f83dc17d0ae6c985ac1b906369dc7384ed346d"
"checksum core-text 15.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "131b3fd1f8bd5db9f2b398fa4fdb6008c64afc04d447c306ac2c7e98fba2a61d"
"checksum core-video-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8dc065219542086f72d1e9f7aadbbab0989e980263695d129d502082d063a9d0"
"checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1"
"checksum crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3aa945d63861bfe624b55d153a39684da1e8c0bc8fba932f7ee3a3c16cea3ca"
"checksum crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5064ebdbf05ce3cb95e45c8b086f72263f4166b29b97f6baff7ef7fe047b55ac"
@ -2209,11 +1966,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum derive-new 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)" = "71f31892cd5c62e414316f2963c5689242c43d8e7bbcaaeca97e5e28c95d91d9"
"checksum dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3"
"checksum dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "afa0b23de8fd801745c471deffa6e12d248f962c9fd4b4c33787b055599bde7b"
"checksum dispatch 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
"checksum dlib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "77e51249a9d823a4cb79e3eca6dcd756153e8ed0157b6c04775d04bf1b13b76a"
"checksum downcast-rs 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "52ba6eb47c2131e784a38b726eb54c1e1484904f013e576a25354d0124161af6"
"checksum dwrote 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0bd1369e02db5e9b842a9b67bce8a2fcc043beafb2ae8a799dd482d46ea1ff0d"
"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3"
"checksum encoding_rs 0.8.22 (registry+https://github.com/rust-lang/crates.io-index)" = "cd8d03faa7fe0c1431609dfad7bbe827af30f82e1e2ae6f7ee4fca6bd764bc28"
"checksum env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36"
"checksum euclid 0.20.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3f852d320142e1cceb15dccef32ed72a9970b83109d8a4e24b1ab04d579f485d"
"checksum expat-sys 2.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "658f19728920138342f68408b7cf7644d90d4784353d8ebc32e7e8663dbe45fa"
@ -2249,7 +2004,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
"checksum image 0.22.4 (registry+https://github.com/rust-lang/crates.io-index)" = "53cb19c4e35102e5c6fb9ade5e0e236c5588424dc171a849af3141bf0b47768a"
"checksum inflate 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1cdb29978cc5797bd8dcc8e5bf7de604891df2a8dc576973d71a281e916db2ff"
"checksum instant 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6c346c299e3fe8ef94dc10c2c0253d858a69aac1245157a3bf4125915d528caf"
"checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e"
"checksum itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e"
"checksum jpeg-decoder 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "0256f0aec7352539102a9efbcb75543227b7ab1117e0f95450023af730128451"
@ -2259,7 +2013,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558"
"checksum libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753"
"checksum libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe"
"checksum line_drawing 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5cc7ad3d82c845bdb5dde34ffdcc7a5fb4d2996e1e1ee0f19c33bc80e15196b9"
"checksum lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "79b2de95ecb4691949fea4716ca53cdbcfccb2c612e19644a8bad05edcf9f47b"
"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
"checksum lru 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0609345ddee5badacf857d4f547e0e5a2e987db77085c24cd887f73573a04237"
@ -2267,20 +2020,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum lyon_path 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0bcb57ac24a5428539e2c7c0592766d5933c937d703f430990c669c00de96862"
"checksum lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7d947cbb889ed21c2a84be6ffbaebf5b4e0f4340638cba0444907e38b56be084"
"checksum malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
"checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
"checksum memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3197e20c7edb283f87c071ddfc7a2cca8f8e0b888c242959846a6fce03c72223"
"checksum memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b"
"checksum memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9"
"checksum metal 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f83c7dcc2038e12f68493fa3de44235df27b2497178e257185b4b5b5d028a1e4"
"checksum miniz_oxide 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aa679ff6578b1cddee93d7e82e263b94a575e0bfced07284eb0c037c1d2416a5"
"checksum mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)" = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f"
"checksum mio-extras 2.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19"
"checksum mio-named-pipes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f5e374eff525ce1c5b7687c4cef63943e7686524a387933ad27ca7ec43779cb3"
"checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125"
"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
"checksum miow 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "396aa0f2003d7df8395cb93e09871561ccc3e785f0acb369170e8cc74ddf9226"
"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88"
"checksum nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6c722bee1037d430d0f8e687bbdbf222f27cc6e4e68d5caf630857bb2b6dbdce"
"checksum nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
"checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6"
"checksum num-derive 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "eafd0b45c5537c3ba526f79d3e75120036502bebacbb3f3220914067ce39dbf2"
@ -2294,11 +2043,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum objc_exception 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4"
"checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de"
"checksum openssl-sys 0.9.54 (registry+https://github.com/rust-lang/crates.io-index)" = "1024c0a59774200a555087a6da3f253a9095a5f344e353b212ac4c8b8e450986"
"checksum ordered-float 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "18869315e81473c951eb56ad5558bbc56978562d3ecfb87abb7a1e944cea4518"
"checksum parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "92e98c49ab0b7ce5b222f2cc9193fc4efe11c6d0bd4f648e374684a6857b1cfc"
"checksum parking_lot_core 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7582838484df45743c8434fbff785e8edf260c28748353d44bc0da32e0ceabf1"
"checksum peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
"checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
"checksum pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7804a463a8d9572f13453c516a5faea534a2403d7ced2f0c7e100eeff072772c"
"checksum pin-project-internal 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "385322a45f2ecf3410c68d2a549a4a2685e8051d0f278e39743ff4e451cb9b3f"
"checksum pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "237844750cfbb86f67afe27eee600dfbbcb6188d734139b534cbfbf4f96792ae"
@ -2327,13 +2074,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum rust-embed-utils 5.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97655158074ccb2d2cfb1ccb4c956ef0f4054e43a2c1e71146d4991e6961e105"
"checksum rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7540fc8b0c49f096ee9c961cda096467dce8084bec6bdca2fc83895fd9b28cb8"
"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
"checksum rusttype 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)" = "310942406a39981bed7e12b09182a221a29e0990f3e7e0c971f131922ed135d5"
"checksum rusttype 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "14a911032fb5791ccbeec9f28fdcb9bf0983b81f227bafdfd227c658d0731c8a"
"checksum ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8"
"checksum same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
"checksum schannel 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "507a9e6e8ffe0a4e0ebb9a10293e62fdf7657c06f1b8bb07a8fcf697d2abf295"
"checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8"
"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d"
"checksum sdl2 0.33.0 (git+https://github.com/Rust-SDL2/rust-sdl2)" = "<none>"
"checksum sdl2-sys 0.33.0 (git+https://github.com/Rust-SDL2/rust-sdl2)" = "<none>"
"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
"checksum serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449"
@ -2347,12 +2094,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum skia-bindings 0.26.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3a38d82d2d3021c59e4a21f799f894bb59c8bf4161836896338ef50f8fe3cbc"
"checksum skia-safe 0.26.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3c02fb631f02d1a0a1e94c6ddd5a7200b7ef8b348c758e171da558fd72321015"
"checksum skribo 0.0.1 (git+https://github.com/linebender/skribo)" = "<none>"
"checksum skulpin 0.6.0 (git+https://github.com/kethku/skulpin?branch=winit_20)" = "<none>"
"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
"checksum smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5c2fb2ec9bcd216a5b0d0ccf31ab17b5ed1d627960edff65bbe95d3ce221cefc"
"checksum smithay-client-toolkit 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "93960e8975909fcb14cc755de93af2149d8b8f4eb368315537d40cfd0f324054"
"checksum socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "e8b74de517221a2cb01a53349cf54182acdc31a074727d3079068448c0676d85"
"checksum stb_truetype 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f77b6b07e862c66a9f3e62a07588fee67cd90a9135a2b942409f195507b4fb51"
"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
"checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5"
"checksum syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "af6f3550d8dff9ef7dc34d384ac6f107e5d31c8f57d9f28e0081503f547ac8f5"
@ -2371,17 +2115,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479"
"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
"checksum unidiff 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3c152966fd1e11a44da1063caf6ca3c615cf5760603223015441df29a9653ae9"
"checksum vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168"
"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd"
"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
"checksum walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d"
"checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
"checksum wayland-client 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)" = "af1080ebe0efabcf12aef2132152f616038f2d7dcbbccf7b2d8c5270fe14bcda"
"checksum wayland-commons 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)" = "bb66b0d1a27c39bbce712b6372131c6e25149f03ffb0cd017cf8f7de8d66dbdb"
"checksum wayland-protocols 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)" = "6cc286643656742777d55dc8e70d144fa4699e426ca8e9d4ef454f4bf15ffcf9"
"checksum wayland-scanner 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)" = "93b02247366f395b9258054f964fe293ddd019c3237afba9be2ccbe9e1651c3d"
"checksum wayland-sys 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d94e89a86e6d6d7c7c9b19ebf48a03afaac4af6bc22ae570e9a24124b75358f4"
"checksum which 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5475d47078209a02e60614f7ba5e645ef3ed60f771920ac1906d7c1cc65024c8"
"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6"
@ -2389,10 +2128,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
"checksum winapi-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4ccfbf554c6ad11084fb7517daca16cfdcaccbdadba4fc336f032a8b12c2ad80"
"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
"checksum winit 0.20.0 (git+https://github.com/filnet/winit?branch=fix-panic-at-redraw-event-in-non-redraw-phase)" = "<none>"
"checksum winres 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ff4fb510bbfe5b8992ff15f77a2e6fe6cf062878f0eda00c0f44963a807ca5dc"
"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
"checksum x11-dl 2.18.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2bf981e3a5b3301209754218f962052d4d9ee97e478f4d26d4a6eced34c1fef8"
"checksum xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c"
"checksum xdg 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57"
"checksum xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "541b12c998c5b56aa2b4e6f18f03664eef9a4fd0a246a55594efae6cc2d964b5"

@ -11,7 +11,7 @@ euclid = "0.20.7"
font-kit = "0.5.0"
skribo = { git = "https://github.com/linebender/skribo" }
lru = "0.4.3"
skulpin = { git = "https://github.com/kethku/skulpin", branch = "winit_20" }
skulpin = { path = "../skulpin" }
derive-new = "0.5"
rmpv = "0.4.4"
rust-embed = { version = "5.2.0", features = ["debug-embed"] }

@ -1,7 +1,8 @@
use log::trace;
use skulpin::winit::event::{ElementState, KeyboardInput, ModifiersState, VirtualKeyCode};
// use skulpin::winit::event::{ElementState, KeyboardInput, ModifiersState, VirtualKeyCode};
use skulpin::sdl2::keyboard::{Keycode, Mod};
fn parse_keycode(keycode: VirtualKeyCode) -> Option<(&'static str, bool)> {
fn parse_keycode(keycode: Keycode) -> Option<(&'static str, bool)> {
macro_rules! unsupported_key {
($name: ident) => {{
if cfg!(debug_assertions) {
@ -11,228 +12,262 @@ fn parse_keycode(keycode: VirtualKeyCode) -> Option<(&'static str, bool)> {
}};
}
// Documentation: https://www.libsdl.org/release/SDL-1.2.15/docs/html/sdlkey.html
match keycode {
VirtualKeyCode::Key1 => Some(("1", false)),
VirtualKeyCode::Key2 => Some(("2", false)),
VirtualKeyCode::Key3 => Some(("3", false)),
VirtualKeyCode::Key4 => Some(("4", false)),
VirtualKeyCode::Key5 => Some(("5", false)),
VirtualKeyCode::Key6 => Some(("6", false)),
VirtualKeyCode::Key7 => Some(("7", false)),
VirtualKeyCode::Key8 => Some(("8", false)),
VirtualKeyCode::Key9 => Some(("9", false)),
VirtualKeyCode::Key0 => Some(("0", false)),
VirtualKeyCode::A => Some(("a", false)),
VirtualKeyCode::B => Some(("b", false)),
VirtualKeyCode::C => Some(("c", false)),
VirtualKeyCode::D => Some(("d", false)),
VirtualKeyCode::E => Some(("e", false)),
VirtualKeyCode::F => Some(("f", false)),
VirtualKeyCode::G => Some(("g", false)),
VirtualKeyCode::H => Some(("h", false)),
VirtualKeyCode::I => Some(("i", false)),
VirtualKeyCode::J => Some(("j", false)),
VirtualKeyCode::K => Some(("k", false)),
VirtualKeyCode::L => Some(("l", false)),
VirtualKeyCode::M => Some(("m", false)),
VirtualKeyCode::N => Some(("n", false)),
VirtualKeyCode::O => Some(("o", false)),
VirtualKeyCode::P => Some(("p", false)),
VirtualKeyCode::Q => Some(("q", false)),
VirtualKeyCode::R => Some(("r", false)),
VirtualKeyCode::S => Some(("s", false)),
VirtualKeyCode::T => Some(("t", false)),
VirtualKeyCode::U => Some(("u", false)),
VirtualKeyCode::V => Some(("v", false)),
VirtualKeyCode::W => Some(("w", false)),
VirtualKeyCode::X => Some(("x", false)),
VirtualKeyCode::Y => Some(("y", false)),
VirtualKeyCode::Z => Some(("z", false)),
VirtualKeyCode::Escape => Some(("ESC", true)),
VirtualKeyCode::F1 => Some(("F1", true)),
VirtualKeyCode::F2 => Some(("F2", true)),
VirtualKeyCode::F3 => Some(("F3", true)),
VirtualKeyCode::F4 => Some(("F4", true)),
VirtualKeyCode::F5 => Some(("F5", true)),
VirtualKeyCode::F6 => Some(("F6", true)),
VirtualKeyCode::F7 => Some(("F7", true)),
VirtualKeyCode::F8 => Some(("F8", true)),
VirtualKeyCode::F9 => Some(("F9", true)),
VirtualKeyCode::F10 => Some(("F10", true)),
VirtualKeyCode::F11 => Some(("F11", true)),
VirtualKeyCode::F12 => Some(("F12", true)),
VirtualKeyCode::F13 => Some(("F13", true)),
VirtualKeyCode::F14 => Some(("F14", true)),
VirtualKeyCode::F15 => Some(("F15", true)),
VirtualKeyCode::F16 => Some(("F16", true)),
VirtualKeyCode::F17 => Some(("F17", true)),
VirtualKeyCode::F18 => Some(("F18", true)),
VirtualKeyCode::F19 => Some(("F19", true)),
VirtualKeyCode::F20 => Some(("F20", true)),
VirtualKeyCode::F21 => Some(("F21", true)),
VirtualKeyCode::F22 => Some(("F22", true)),
VirtualKeyCode::F23 => Some(("F23", true)),
VirtualKeyCode::F24 => Some(("F24", true)),
VirtualKeyCode::Snapshot => unsupported_key!(Snapshot),
VirtualKeyCode::Scroll => unsupported_key!(Scroll),
VirtualKeyCode::Pause => unsupported_key!(Pause),
VirtualKeyCode::Insert => Some(("Insert", true)),
VirtualKeyCode::Home => Some(("Home", true)),
VirtualKeyCode::Delete => Some(("Delete", true)),
VirtualKeyCode::End => Some(("End", true)),
VirtualKeyCode::PageDown => Some(("PageDown", true)),
VirtualKeyCode::PageUp => Some(("PageUp", true)),
VirtualKeyCode::Left => Some(("Left", true)),
VirtualKeyCode::Up => Some(("Up", true)),
VirtualKeyCode::Right => Some(("Right", true)),
VirtualKeyCode::Down => Some(("Down", true)),
VirtualKeyCode::Back => Some(("BS", true)),
VirtualKeyCode::Return => Some(("Enter", true)),
VirtualKeyCode::Space => Some(("Space", true)),
VirtualKeyCode::Compose => unsupported_key!(Compose),
VirtualKeyCode::Caret => Some(("^", false)),
VirtualKeyCode::Numlock => unsupported_key!(Numlock),
VirtualKeyCode::Numpad0 => Some(("0", false)),
VirtualKeyCode::Numpad1 => Some(("1", false)),
VirtualKeyCode::Numpad2 => Some(("2", false)),
VirtualKeyCode::Numpad3 => Some(("3", false)),
VirtualKeyCode::Numpad4 => Some(("4", false)),
VirtualKeyCode::Numpad5 => Some(("5", false)),
VirtualKeyCode::Numpad6 => Some(("6", false)),
VirtualKeyCode::Numpad7 => Some(("7", false)),
VirtualKeyCode::Numpad8 => Some(("8", false)),
VirtualKeyCode::Numpad9 => Some(("9", false)),
// These next two are for Brazillian keyboards according to
// https://hg.mozilla.org/integration/mozilla-inbound/rev/28039c359ce8#l2.31
// Mapping both to the same thing as firefox
VirtualKeyCode::AbntC1 => Some(("/", false)),
VirtualKeyCode::AbntC2 => Some((".", false)),
VirtualKeyCode::Add => Some(("+", true)),
VirtualKeyCode::Apostrophe => Some(("'", false)),
VirtualKeyCode::Apps => unsupported_key!(Apps),
VirtualKeyCode::At => Some(("@", false)),
VirtualKeyCode::Ax => unsupported_key!(Ax),
VirtualKeyCode::Backslash => Some(("Bslash", true)),
VirtualKeyCode::Calculator => unsupported_key!(Calculator),
VirtualKeyCode::Capital => unsupported_key!(Capital),
VirtualKeyCode::Colon => Some((":", false)),
VirtualKeyCode::Comma => Some((",", false)),
VirtualKeyCode::Convert => unsupported_key!(Convert),
VirtualKeyCode::Decimal => Some((".", false)),
VirtualKeyCode::Divide => Some(("/", false)),
VirtualKeyCode::Equals => Some(("=", false)),
VirtualKeyCode::Grave => Some(("`", false)),
VirtualKeyCode::Kana => unsupported_key!(Kana),
VirtualKeyCode::Kanji => unsupported_key!(Kanji),
VirtualKeyCode::LAlt => None, // Regular modifier key
VirtualKeyCode::LBracket => Some(("[", false)),
VirtualKeyCode::LControl => None, // Regular modifier key
VirtualKeyCode::LShift => None, // Regular modifier key
VirtualKeyCode::LWin => unsupported_key!(LWin),
VirtualKeyCode::Mail => unsupported_key!(Mail),
VirtualKeyCode::MediaSelect => unsupported_key!(MediaSelect),
VirtualKeyCode::MediaStop => unsupported_key!(MediaStop),
VirtualKeyCode::Minus => Some(("-", false)),
VirtualKeyCode::Multiply => Some(("*", false)),
VirtualKeyCode::Mute => unsupported_key!(Mute),
VirtualKeyCode::MyComputer => unsupported_key!(MyComputer),
VirtualKeyCode::NavigateForward => unsupported_key!(NavigateForward),
VirtualKeyCode::NavigateBackward => unsupported_key!(NavigateBackward),
VirtualKeyCode::NextTrack => unsupported_key!(NextTrack),
VirtualKeyCode::NoConvert => unsupported_key!(NoConvert),
VirtualKeyCode::NumpadComma => Some((",", false)),
VirtualKeyCode::NumpadEnter => Some(("Enter", true)),
VirtualKeyCode::NumpadEquals => Some(("=", false)),
VirtualKeyCode::OEM102 => unsupported_key!(OEM102),
VirtualKeyCode::Period => Some((".", false)),
VirtualKeyCode::PlayPause => unsupported_key!(PlayPause),
VirtualKeyCode::Power => unsupported_key!(Power),
VirtualKeyCode::PrevTrack => unsupported_key!(PrevTrack),
VirtualKeyCode::RAlt => None, // Regular modifier key
VirtualKeyCode::RBracket => Some(("]", false)),
VirtualKeyCode::RControl => None, // Regular modifier key
VirtualKeyCode::RShift => None, // Regular modifier key
VirtualKeyCode::RWin => unsupported_key!(RWin),
VirtualKeyCode::Semicolon => Some((";", false)),
VirtualKeyCode::Slash => Some(("/", false)),
VirtualKeyCode::Sleep => unsupported_key!(Sleep),
VirtualKeyCode::Stop => unsupported_key!(Stop),
VirtualKeyCode::Subtract => Some(("-", false)),
VirtualKeyCode::Sysrq => unsupported_key!(Sysrq),
VirtualKeyCode::Tab => Some(("Tab", true)),
VirtualKeyCode::Underline => unsupported_key!(Underline),
VirtualKeyCode::Unlabeled => unsupported_key!(Unlabeled),
VirtualKeyCode::VolumeDown => unsupported_key!(VolumeDown),
VirtualKeyCode::VolumeUp => unsupported_key!(VolumeUp),
VirtualKeyCode::Wake => unsupported_key!(Wake),
VirtualKeyCode::WebBack => unsupported_key!(WebBack),
VirtualKeyCode::WebFavorites => unsupported_key!(WebFavorites),
VirtualKeyCode::WebForward => unsupported_key!(WebForward),
VirtualKeyCode::WebHome => unsupported_key!(WebHome),
VirtualKeyCode::WebRefresh => unsupported_key!(WebRefresh),
VirtualKeyCode::WebSearch => unsupported_key!(WebSearch),
VirtualKeyCode::WebStop => unsupported_key!(WebStop),
VirtualKeyCode::Yen => Some(("¥", false)),
VirtualKeyCode::Copy => unsupported_key!(Copy),
VirtualKeyCode::Paste => unsupported_key!(Paste),
VirtualKeyCode::Cut => unsupported_key!(Cut),
Keycode::Backspace => Some(("BS", true)),
Keycode::Tab => Some((" ", false)),
Keycode::Return => Some(("\n", false)),
Keycode::Escape => Some(("ESC", true)),
Keycode::Space => Some((" ", true)),
Keycode::Exclaim => Some(("!", false)),
Keycode::Quotedbl => Some(("\"", false)),
Keycode::Hash => Some(("#", false)),
Keycode::Dollar => Some(("$", false)),
Keycode::Ampersand => Some(("&", false)),
Keycode::Quote => Some(("'", false)),
Keycode::LeftParen => Some(("(", false)),
Keycode::RightParen => Some((")", false)),
Keycode::Asterisk => Some(("*", false)),
Keycode::Plus => Some(("+", false)),
Keycode::Comma => Some((",", false)),
Keycode::Minus => Some(("-", false)),
Keycode::Period => Some((".", false)),
Keycode::Slash => Some(("/", false)),
Keycode::Num0 => Some(("0", false)),
Keycode::Num1 => Some(("1", false)),
Keycode::Num2 => Some(("2", false)),
Keycode::Num3 => Some(("3", false)),
Keycode::Num4 => Some(("4", false)),
Keycode::Num5 => Some(("5", false)),
Keycode::Num6 => Some(("6", false)),
Keycode::Num7 => Some(("7", false)),
Keycode::Num8 => Some(("8", false)),
Keycode::Num9 => Some(("9", false)),
Keycode::Colon => Some((":", false)),
Keycode::Semicolon => Some((";", false)),
Keycode::Less => Some(("lt", true)),
Keycode::Equals => Some(("=", false)),
Keycode::Greater => Some(("gt", true)),
Keycode::Question => Some(("?", false)),
Keycode::At => Some(("@", false)),
Keycode::LeftBracket => Some(("[", false)),
Keycode::Backslash => Some(("\\", false)),
Keycode::RightBracket => Some(("]", false)),
Keycode::Caret => Some(("^", false)),
Keycode::Underscore => Some(("_", false)),
Keycode::Backquote => Some(("`", false)),
Keycode::A => Some(("a", false)),
Keycode::B => Some(("b", false)),
Keycode::C => Some(("c", false)),
Keycode::D => Some(("d", false)),
Keycode::E => Some(("e", false)),
Keycode::F => Some(("f", false)),
Keycode::G => Some(("g", false)),
Keycode::H => Some(("h", false)),
Keycode::I => Some(("i", false)),
Keycode::J => Some(("j", false)),
Keycode::K => Some(("k", false)),
Keycode::L => Some(("l", false)),
Keycode::M => Some(("m", false)),
Keycode::N => Some(("n", false)),
Keycode::O => Some(("o", false)),
Keycode::P => Some(("p", false)),
Keycode::Q => Some(("q", false)),
Keycode::R => Some(("r", false)),
Keycode::S => Some(("s", false)),
Keycode::T => Some(("t", false)),
Keycode::U => Some(("u", false)),
Keycode::V => Some(("v", false)),
Keycode::W => Some(("w", false)),
Keycode::X => Some(("x", false)),
Keycode::Y => Some(("y", false)),
Keycode::Z => Some(("z", false)),
Keycode::Delete => Some(("Delete", true)),
Keycode::CapsLock => unsupported_key!(CapsLock),
Keycode::F1 => Some(("F1", true)),
Keycode::F2 => Some(("F2", true)),
Keycode::F3 => Some(("F3", true)),
Keycode::F4 => Some(("F4", true)),
Keycode::F5 => Some(("F5", true)),
Keycode::F6 => Some(("F6", true)),
Keycode::F7 => Some(("F7", true)),
Keycode::F8 => Some(("F8", true)),
Keycode::F9 => Some(("F9", true)),
Keycode::F10 => Some(("F10", true)),
Keycode::F11 => Some(("F11", true)),
Keycode::F12 => Some(("F12", true)),
Keycode::PrintScreen => unsupported_key!(PrintScreen),
Keycode::ScrollLock => unsupported_key!(ScrollLock),
Keycode::Pause => unsupported_key!(Pause),
Keycode::Insert => Some(("Insert", true)),
Keycode::Home => Some(("Home", true)),
Keycode::PageUp => Some(("PageUp", true)),
Keycode::End => Some(("End", true)),
Keycode::PageDown => Some(("PageDown", true)),
Keycode::Right => Some(("Right", true)),
Keycode::Left => Some(("Left", true)),
Keycode::Down => Some(("Down", true)),
Keycode::Up => Some(("Up", true)),
Keycode::NumLockClear => unsupported_key!(NumLockClear),
Keycode::KpDivide => Some(("/", true)),
Keycode::KpMultiply => Some(("*", true)),
Keycode::KpMinus => Some(("-", true)),
Keycode::KpPlus => Some(("+", true)),
Keycode::KpEnter => Some(("\n", true)),
Keycode::Kp0 => Some(("0", false)),
Keycode::Kp1 => Some(("1", false)),
Keycode::Kp2 => Some(("2", false)),
Keycode::Kp3 => Some(("3", false)),
Keycode::Kp4 => Some(("4", false)),
Keycode::Kp5 => Some(("5", false)),
Keycode::Kp6 => Some(("6", false)),
Keycode::Kp7 => Some(("7", false)),
Keycode::Kp8 => Some(("8", false)),
Keycode::Kp9 => Some(("9", false)),
Keycode::KpPeriod => Some((".", false)),
Keycode::Application => unsupported_key!(Application),
Keycode::Power => unsupported_key!(Power),
Keycode::KpEquals => Some(("=", false)),
Keycode::F13 => Some(("F13", true)),
Keycode::F14 => Some(("F14", true)),
Keycode::F15 => Some(("F15", true)),
Keycode::F16 => Some(("F16", true)),
Keycode::F17 => Some(("F17", true)),
Keycode::F18 => Some(("F18", true)),
Keycode::F19 => Some(("F19", true)),
Keycode::F20 => Some(("F20", true)),
Keycode::F21 => Some(("F21", true)),
Keycode::F22 => Some(("F22", true)),
Keycode::F23 => Some(("F23", true)),
Keycode::F24 => Some(("F24", true)),
Keycode::Execute => unsupported_key!(Execute),
Keycode::Help => unsupported_key!(Help),
Keycode::Menu => unsupported_key!(Menu),
Keycode::Select => unsupported_key!(Select),
Keycode::Stop => unsupported_key!(Stop),
Keycode::Again => unsupported_key!(Again),
Keycode::Undo => unsupported_key!(Undo),
Keycode::Cut => unsupported_key!(Cut),
Keycode::Copy => unsupported_key!(Copy),
Keycode::Paste => unsupported_key!(Paste),
Keycode::Find => unsupported_key!(Find),
Keycode::Mute => unsupported_key!(Mute),
Keycode::VolumeUp => unsupported_key!(VolumeUp),
Keycode::VolumeDown => unsupported_key!(VolumeDown),
Keycode::KpComma => unsupported_key!(KpComma),
Keycode::KpEqualsAS400 => unsupported_key!(KpEqualsAS400),
Keycode::AltErase => unsupported_key!(AltErase),
Keycode::Sysreq => unsupported_key!(Sysreq),
Keycode::Cancel => unsupported_key!(Cancel),
Keycode::Clear => unsupported_key!(Clear),
Keycode::Prior => unsupported_key!(Prior),
Keycode::Return2 => unsupported_key!(Return2),
Keycode::Separator => unsupported_key!(Separator),
Keycode::Out => unsupported_key!(Out),
Keycode::Oper => unsupported_key!(Oper),
Keycode::ClearAgain => unsupported_key!(ClearAgain),
Keycode::CrSel => unsupported_key!(CrSel),
Keycode::ExSel => unsupported_key!(ExSel),
Keycode::Kp00 => unsupported_key!(Kp00),
Keycode::Kp000 => unsupported_key!(Kp000),
Keycode::ThousandsSeparator => unsupported_key!(ThousandsSeparator),
Keycode::DecimalSeparator => unsupported_key!(DecimalSeparator),
Keycode::CurrencyUnit => unsupported_key!(CurrencyUnit),
Keycode::CurrencySubUnit => unsupported_key!(CurrencySubUnit),
Keycode::KpLeftParen => Some(("(", false)),
Keycode::KpRightParen => Some((")", false)),
Keycode::KpLeftBrace => Some(("[", false)),
Keycode::KpRightBrace => Some(("]", false)),
Keycode::KpTab => Some((" ", false)),
Keycode::KpBackspace => Some(("BS", true)),
Keycode::KpA => Some(("A", false)),
Keycode::KpB => Some(("B", false)),
Keycode::KpC => Some(("C", false)),
Keycode::KpD => Some(("D", false)),
Keycode::KpE => Some(("E", false)),
Keycode::KpF => Some(("F", false)),
Keycode::KpXor => unsupported_key!(KpXor),
Keycode::KpPower => Some(("^", false)),
Keycode::KpPercent => Some(("%", false)),
Keycode::KpLess => Some(("lt", true)),
Keycode::KpGreater => Some(("gt", true)),
Keycode::KpAmpersand => Some(("&", false)),
Keycode::KpDblAmpersand => unsupported_key!(KpDblAmpersand),
Keycode::KpVerticalBar => Some(("|", false)),
Keycode::KpDblVerticalBar => unsupported_key!(KpDblVerticalBar),
Keycode::KpColon => Some((":", false)),
Keycode::KpHash => Some(("#", false)),
Keycode::KpSpace => Some((" ", false)),
Keycode::KpAt => Some(("@", false)),
Keycode::KpExclam => Some(("!", false)),
Keycode::KpMemStore => unsupported_key!(KpMemStore),
Keycode::KpMemRecall => unsupported_key!(KpMemRecall),
Keycode::KpMemClear => unsupported_key!(KpMemClear),
Keycode::KpMemAdd => unsupported_key!(KpMemAdd),
Keycode::KpMemSubtract => unsupported_key!(KpMemSubtract),
Keycode::KpMemMultiply => unsupported_key!(KpMemMultiply),
Keycode::KpMemDivide => unsupported_key!(KpMemDivide),
Keycode::KpPlusMinus => unsupported_key!(KpPlusMinus),
Keycode::KpClear => unsupported_key!(KpClear),
Keycode::KpClearEntry => unsupported_key!(KpClearEntry),
Keycode::KpBinary => unsupported_key!(KpBinary),
Keycode::KpOctal => unsupported_key!(KpOctal),
Keycode::KpDecimal => unsupported_key!(KpDecimal),
Keycode::KpHexadecimal => unsupported_key!(KpHexadecimal),
Keycode::LCtrl => None,
Keycode::LShift => None,
Keycode::LAlt => None,
Keycode::LGui => None,
Keycode::RCtrl => None,
Keycode::RShift => None,
Keycode::RAlt => None,
Keycode::RGui => None,
Keycode::Mode => unsupported_key!(Mode),
Keycode::AudioNext => unsupported_key!(AudioNext),
Keycode::AudioPrev => unsupported_key!(AudioPrev),
Keycode::AudioStop => unsupported_key!(AudioStop),
Keycode::AudioPlay => unsupported_key!(AudioPlay),
Keycode::AudioMute => unsupported_key!(AudioMute),
Keycode::MediaSelect => unsupported_key!(MediaSelect),
Keycode::Www => unsupported_key!(Www),
Keycode::Mail => unsupported_key!(Mail),
Keycode::Calculator => unsupported_key!(Calculator),
Keycode::Computer => unsupported_key!(Computer),
Keycode::AcSearch => unsupported_key!(AcSearch),
Keycode::AcHome => unsupported_key!(AcHome),
Keycode::AcBack => unsupported_key!(AcBack),
Keycode::AcForward => unsupported_key!(AcForward),
Keycode::AcStop => unsupported_key!(AcStop),
Keycode::AcRefresh => unsupported_key!(AcRefresh),
Keycode::AcBookmarks => unsupported_key!(AcBookmarks),
Keycode::BrightnessDown => unsupported_key!(BrightnessDown),
Keycode::BrightnessUp => unsupported_key!(BrightnessUp),
Keycode::DisplaySwitch => unsupported_key!(DisplaySwitch),
Keycode::KbdIllumToggle =>unsupported_key!(KbdIllumToggle),
Keycode::KbdIllumDown => unsupported_key!(KbdIllumDown),
Keycode::KbdIllumUp => unsupported_key!(KbdIllumUp),
Keycode::Eject => unsupported_key!(Eject),
Keycode::Sleep => unsupported_key!(Sleep),
}
}
pub fn append_modifiers(modifiers: ModifiersState, keycode_text: &str, special: bool) -> String {
pub fn append_modifiers(modifiers: Mod, keycode_text: &str, special: bool) -> String {
let mut result = keycode_text.to_string();
let mut special = special;
if modifiers.shift() {
result = match result.as_ref() {
"1" => "!".to_string(),
"2" => "@".to_string(),
"3" => "#".to_string(),
"4" => "$".to_string(),
"5" => "%".to_string(),
"6" => "^".to_string(),
"7" => "&".to_string(),
"8" => "*".to_string(),
"9" => "(".to_string(),
"0" => ")".to_string(),
"'" => "\"".to_string(),
"Bslash" => {
special = false;
"|".to_string()
},
"," => {
special = true;
"lt".to_string()
},
"=" => "+".to_string(),
"`" => "~".to_string(),
"[" => "{".to_string(),
"-" => "_".to_string(),
"." => ">".to_string(),
"]" => "}".to_string(),
";" => ":".to_string(),
"/" => "?".to_string(),
other => {
special = true;
format!("S-{}", other)
}
};
}
if result == "<" {
if modifiers.contains(Mod::LSHIFTMOD) || modifiers.contains(Mod::RSHIFTMOD) {
special = true;
result = "lt".to_string();
result = format!("S-{}", result);
}
if modifiers.ctrl() {
if modifiers.contains(Mod::LCTRLMOD) || modifiers.contains(Mod::RCTRLMOD) {
special = true;
result = format!("C-{}", result);
}
if modifiers.alt() {
if modifiers.contains(Mod::LALTMOD) || modifiers.contains(Mod::RALTMOD) {
special = true;
result = format!("M-{}", result);
}
if modifiers.logo() {
if modifiers.contains(Mod::LGUIMOD) || modifiers.contains(Mod::RGUIMOD) {
special = true;
result = format!("D-{}", result);
}
@ -244,20 +279,10 @@ pub fn append_modifiers(modifiers: ModifiersState, keycode_text: &str, special:
result
}
pub fn construct_keybinding_string(input: KeyboardInput) -> Option<String> {
match input {
KeyboardInput {
state: ElementState::Pressed,
virtual_keycode: Some(keycode),
modifiers,
..
} => {
if let Some((keycode_text, special)) = parse_keycode(keycode) {
Some(append_modifiers(modifiers, keycode_text, special))
} else {
None
}
},
_ => None
pub fn construct_keybinding_string(input: Keycode, modifiers: Mod) -> Option<String> {
if let Some((keycode_text, special)) = parse_keycode(input) {
Some(append_modifiers(modifiers, keycode_text, special))
} else {
None
}
}

@ -1,10 +1,11 @@
use std::sync::Arc;
use std::sync::atomic::Ordering;
use std::time::{Duration, Instant};
use std::thread::sleep;
use image::{load_from_memory, GenericImageView, Pixel};
use log::{info, debug, trace, error};
use skulpin::LogicalSize;
use skulpin::sdl2;
use skulpin::sdl2::EventPump;
use skulpin::{RendererBuilder, PresentMode, CoordinateSystem};
use crate::bridge::{construct_keybinding_string, BRIDGE, UiCommand};
use crate::renderer::Renderer;
@ -17,7 +18,7 @@ use crate::INITIAL_DIMENSIONS;
#[folder = "assets/"]
struct Asset;
fn handle_new_grid_size(new_size: LogicalSize<f32>, renderer: &Renderer) {
fn handle_new_grid_size(new_size: LogicalSize, renderer: &Renderer) {
if new_size.width > 0.0 && new_size.height > 0.0 {
let new_width = ((new_size.width + 1.0) / renderer.font_width) as i64;
let new_height = ((new_size.height + 1.0) / renderer.font_height) as i64;
@ -27,14 +28,11 @@ fn handle_new_grid_size(new_size: LogicalSize<f32>, renderer: &Renderer) {
}
pub fn ui_loop() {
let sdl_context = sdl2::init()?;
let video_subsystem = sdl_context.video()?;
let sdl_context = sdl2::init().expect("Failed to initialize sdl2");
let video_subsystem = sdl_context.video().expect("Failed to create sdl video subsystem");
let (width, height) = INITIAL_DIMENSIONS;
let event_loop = EventLoop::<()>::with_user_event();
let mut renderer = Renderer::new();
let logical_size = LogicalSize::new(
(width as f32 * renderer.font_width) as f64,
@ -72,11 +70,13 @@ pub fn ui_loop() {
let mut mouse_down = false;
let mut mouse_pos = (0, 0);
let mut allow_next_char = false;
let mut next_char_modifiers = ModifiersState::empty();
// let mut allow_next_char = false;
// let mut next_char_modifiers = ModifiersState::empty();
let mut title = "Neovide".to_string();
info!("Starting window event loop");
let mut event_pump = sdl_context.event_pump()?;
let mut event_pump = sdl_context.event_pump().expect("Could not create sdl event pump");
loop {
let frame_start = Instant::now();
@ -94,152 +94,151 @@ pub fn ui_loop() {
}
}).is_err() {
error!("Render failed. Closing");
*control_flow = ControlFlow::Exit;
return;
break;
}
}
let elapsed = frame_start.since();
let elapsed = frame_start.elapsed();
let frame_length = Duration::from_secs_f32(1.0 / 60.0);
if elapsed < frame_length {
sleep(frame_length - elapsed);
}
}
event_loop.run(move |event, _window_target, control_flow| {
trace!("Window Event: {:?}", event);
match event {
Event::NewEvents(StartCause::Init) |
Event::NewEvents(StartCause::ResumeTimeReached { .. }) => {
window.request_redraw()
},
Event::WindowEvent {
event: WindowEvent::CloseRequested,
..
} => *control_flow = ControlFlow::Exit,
Event::WindowEvent {
event: WindowEvent::Resized(new_size),
..
} => {
handle_new_grid_size(new_size.to_logical(window.scale_factor()), &renderer)
},
Event::WindowEvent {
event: WindowEvent::KeyboardInput {
input,
..
},
..
} => {
// Only interpret 'char' events when we get a previous event without a virtual
// keycode (which we ignore for KeyboardInput events).
// This is a hack so we don't lose a bunch of input events on Linux
if input.virtual_keycode == None {
allow_next_char = true;
}else {
allow_next_char = false;
}
next_char_modifiers = input.modifiers;
if let Some(keybinding_string) = construct_keybinding_string(input)
.map(UiCommand::Keyboard) {
BRIDGE.queue_command(keybinding_string);
}
},
Event::WindowEvent {
event: WindowEvent::ReceivedCharacter(c),
..
} => {
if allow_next_char {
next_char_modifiers.remove(ModifiersState::SHIFT);
let keybinding = super::bridge::append_modifiers(next_char_modifiers, &c.to_string(), false);
BRIDGE.queue_command(UiCommand::Keyboard(keybinding));
}
},
Event::WindowEvent {
event: WindowEvent::CursorMoved {
position,
..
},
..
} => {
let position: LogicalPosition<f64> = position.to_logical(window.scale_factor());
let grid_y = (position.x / renderer.font_width as f64) as i64;
let grid_x = (position.y / renderer.font_height as f64) as i64;
let (old_x, old_y) = mouse_pos;
mouse_pos = (grid_x, grid_y);
if mouse_down && (old_x != grid_x || old_y != grid_y) {
BRIDGE.queue_command(UiCommand::Drag(grid_x, grid_y));
}
}
Event::WindowEvent {
event: WindowEvent::MouseInput {
state,
..
},
..
} => {
let input_type = match (state, mouse_down) {
(ElementState::Pressed, false) => {
mouse_down = true;
Some("press")
},
(ElementState::Released, true) => {
mouse_down = false;
Some("release")
},
_ => None
};
if let Some(input_type) = input_type {
let (grid_x, grid_y) = mouse_pos;
BRIDGE.queue_command(UiCommand::MouseButton { action: input_type.to_string(), position: (grid_x, grid_y) });
}
}
Event::WindowEvent {
event: WindowEvent::MouseWheel {
delta: MouseScrollDelta::LineDelta(horizontal, vertical),
..
},
..
} => {
let vertical_input_type = if vertical > 0.0 {
Some("up")
} else if vertical < 0.0 {
Some("down")
} else {
None
};
if let Some(input_type) = vertical_input_type {
BRIDGE.queue_command(UiCommand::Scroll { direction: input_type.to_string(), position: mouse_pos });
}
let horizontal_input_type = if horizontal > 0.0 {
Some("right")
} else if horizontal < 0.0 {
Some("left")
} else {
None
};
if let Some(input_type) = horizontal_input_type {
BRIDGE.queue_command(UiCommand::Scroll { direction: input_type.to_string(), position: mouse_pos });
}
}
Event::RedrawRequested { .. } => {
*control_flow = ControlFlow::WaitUntil(frame_start + Duration::from_secs_f32(1.0 / 60.0));
},
_ => {}
}
})
// event_loop.run(move |event, _window_target, control_flow| {
// trace!("Window Event: {:?}", event);
// match event {
// Event::NewEvents(StartCause::Init) |
// Event::NewEvents(StartCause::ResumeTimeReached { .. }) => {
// window.request_redraw()
// },
// Event::WindowEvent {
// event: WindowEvent::CloseRequested,
// ..
// } => *control_flow = ControlFlow::Exit,
// Event::WindowEvent {
// event: WindowEvent::Resized(new_size),
// ..
// } => {
// handle_new_grid_size(new_size.to_logical(window.scale_factor()), &renderer)
// },
// Event::WindowEvent {
// event: WindowEvent::KeyboardInput {
// input,
// ..
// },
// ..
// } => {
// // Only interpret 'char' events when we get a previous event without a virtual
// // keycode (which we ignore for KeyboardInput events).
// // This is a hack so we don't lose a bunch of input events on Linux
// if input.virtual_keycode == None {
// allow_next_char = true;
// }else {
// allow_next_char = false;
// }
// next_char_modifiers = input.modifiers;
// if let Some(keybinding_string) = construct_keybinding_string(input)
// .map(UiCommand::Keyboard) {
// BRIDGE.queue_command(keybinding_string);
// }
// },
// Event::WindowEvent {
// event: WindowEvent::ReceivedCharacter(c),
// ..
// } => {
// if allow_next_char {
// next_char_modifiers.remove(ModifiersState::SHIFT);
// let keybinding = super::bridge::append_modifiers(next_char_modifiers, &c.to_string(), false);
// BRIDGE.queue_command(UiCommand::Keyboard(keybinding));
// }
// },
// Event::WindowEvent {
// event: WindowEvent::CursorMoved {
// position,
// ..
// },
// ..
// } => {
// let position: LogicalPosition<f64> = position.to_logical(window.scale_factor());
// let grid_y = (position.x / renderer.font_width as f64) as i64;
// let grid_x = (position.y / renderer.font_height as f64) as i64;
// let (old_x, old_y) = mouse_pos;
// mouse_pos = (grid_x, grid_y);
// if mouse_down && (old_x != grid_x || old_y != grid_y) {
// BRIDGE.queue_command(UiCommand::Drag(grid_x, grid_y));
// }
// }
// Event::WindowEvent {
// event: WindowEvent::MouseInput {
// state,
// ..
// },
// ..
// } => {
// let input_type = match (state, mouse_down) {
// (ElementState::Pressed, false) => {
// mouse_down = true;
// Some("press")
// },
// (ElementState::Released, true) => {
// mouse_down = false;
// Some("release")
// },
// _ => None
// };
// if let Some(input_type) = input_type {
// let (grid_x, grid_y) = mouse_pos;
// BRIDGE.queue_command(UiCommand::MouseButton { action: input_type.to_string(), position: (grid_x, grid_y) });
// }
// }
// Event::WindowEvent {
// event: WindowEvent::MouseWheel {
// delta: MouseScrollDelta::LineDelta(horizontal, vertical),
// ..
// },
// ..
// } => {
// let vertical_input_type = if vertical > 0.0 {
// Some("up")
// } else if vertical < 0.0 {
// Some("down")
// } else {
// None
// };
// if let Some(input_type) = vertical_input_type {
// BRIDGE.queue_command(UiCommand::Scroll { direction: input_type.to_string(), position: mouse_pos });
// }
// let horizontal_input_type = if horizontal > 0.0 {
// Some("right")
// } else if horizontal < 0.0 {
// Some("left")
// } else {
// None
// };
// if let Some(input_type) = horizontal_input_type {
// BRIDGE.queue_command(UiCommand::Scroll { direction: input_type.to_string(), position: mouse_pos });
// }
// }
// Event::RedrawRequested { .. } => {
// *control_flow = ControlFlow::WaitUntil(frame_start + Duration::from_secs_f32(1.0 / 60.0));
// },
// _ => {}
// }
// })
}

Loading…
Cancel
Save