[refactor] Replace glob with evdev::enumerate.

main
Shinyzenith 2 years ago
parent 6ccce2792c
commit c8dcd0dd0c
No known key found for this signature in database
GPG Key ID: A3DFCDC66E9E2950

@ -6,7 +6,6 @@ authors = ["Shinyzenith <aakashsensharma@gmail.com>"]
[dependencies]
evdev = "0.11.3"
glob = "0.3.0"
log = "0.4.0"
env_logger = "0.8.4"
nix = "0.23.1"

@ -25,7 +25,7 @@ run:
check:
@cargo test
@cargo fmt -- --check
@cargo fmt
@cargo check --target=x86_64-unknown-linux-musl
clean:

@ -1,6 +1,5 @@
use clap::{arg, App};
use evdev::{Device, Key};
use glob::glob;
use nix::unistd;
use std::env;
use std::path::Path;
@ -63,13 +62,8 @@ pub fn main() {
log::debug!("Using config file path: {:#?}", config_file_path);
log::trace!("Attempting to find all keyboard file descriptors.");
for entry in glob("/dev/input/event*").expect("Failed to read /dev/input/event*.") {
match entry {
Ok(path) => {
check_keyboard(path.into_os_string().into_string().unwrap());
}
Err(error) => log::error!("Unexpected error occured: {}", error),
}
for (_, device) in evdev::enumerate().enumerate() {
check_keyboard(device);
}
}
@ -79,7 +73,6 @@ pub fn permission_check() -> bool {
return false;
}
log::trace!("Checking if invoking user is in input group.");
let groups = unistd::getgroups();
for (_, groups) in groups.iter().enumerate() {
for group in groups {
@ -94,22 +87,21 @@ pub fn permission_check() -> bool {
return false;
}
pub fn check_keyboard(input_path: String) -> bool {
/* Try to open the device fd. */
let device = Device::open(&input_path);
match &device {
Ok(_) => (),
Err(error) => {
log::error!("Failed to open device {}: {}", input_path, error);
}
}
pub fn check_keyboard(device: Device) -> bool {
/* Check for the presence of enter key. */
if device.unwrap().supported_keys().map_or(false, |keys| keys.contains(Key::KEY_ENTER)) {
log::debug!("{} is a keyboard.", input_path);
if device.supported_keys().map_or(false, |keys| keys.contains(Key::KEY_ENTER)) {
log::debug!(
"{} ({}) is a keyboard.",
device.name().unwrap(),
device.physical_path().unwrap()
);
return true;
} else {
log::debug!("{} is not a keyboard.", input_path);
log::trace!(
"{} ({}) is not a keyboard.",
device.name().unwrap(),
device.physical_path().unwrap()
);
return false;
}
}

Loading…
Cancel
Save