From c8046399ff1a1bf6f13820dc60334c80530fa476 Mon Sep 17 00:00:00 2001 From: rrr-marble Date: Mon, 11 Oct 2021 18:12:07 +0300 Subject: [PATCH] add: grab device for exclusive use --- Cargo.lock | 34 ++++++++++++++++++++++++++-------- Cargo.toml | 4 ++-- src/main.rs | 4 +++- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 495e63c..14baa71 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,10 +1,18 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + +[[package]] +name = "autocfg" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" + [[package]] name = "bitflags" -version = "1.2.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitvec" @@ -40,9 +48,9 @@ dependencies = [ [[package]] name = "evdev" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a9fbd0d18faa6e194945a35d8f57b504502835a4a82a622723b8184818e72a" +checksum = "aa286e4837bcc689c362ac54f4c036758d625a50b3784b548d946da506d48446" dependencies = [ "bitvec", "libc", @@ -63,20 +71,30 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.97" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b8adadd720df158f4d70dfe7ccc6adb0472d7c55ca83445f6a5ab3e36f8fb6" +checksum = "dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6" + +[[package]] +name = "memoffset" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" +dependencies = [ + "autocfg", +] [[package]] name = "nix" -version = "0.20.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa9b4819da1bc61c0ea48b63b7bc8604064dd43013e7cc325df098d49cd7c18a" +checksum = "f305c2c2e4c39a82f7bf0bf65fb557f9070ce06781d4f2454295cc34b1c43188" dependencies = [ "bitflags", "cc", "cfg-if", "libc", + "memoffset", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 2496fac..295578a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,5 +7,5 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -evdev = "0.11.0" -lazy_static = "1.4.0" \ No newline at end of file +evdev = "0.11.1" +lazy_static = "1.4.0" diff --git a/src/main.rs b/src/main.rs index 9b7613c..ff43332 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,7 +32,9 @@ fn main() -> () { // to share between threads lazy_static! { static ref INPUT_DEVICE: evdev::Device = { - let d = pick_device(); + let mut d = pick_device(); + d.grab() + .unwrap_or_else(|_| eprintln!("Cannot grab device!")); d }; }