s/evdev::Key/Key/g again

pull/51/head
Takashi Kokubun 2 years ago
parent 47768f8ca7
commit 320b602789
No known key found for this signature in database
GPG Key ID: 6FFC433B12EE23DD

@ -1,17 +1,18 @@
use evdev::Key;
use serde::de::Visitor;
use serde::Deserializer;
use std::error::Error;
use std::fmt;
use std::str::FromStr;
pub fn deserialize_key<'de, D>(deserializer: D) -> Result<evdev::Key, D::Error>
pub fn deserialize_key<'de, D>(deserializer: D) -> Result<Key, D::Error>
where
D: Deserializer<'de>,
{
struct KeyVisitor;
impl<'de> Visitor<'de> for KeyVisitor {
type Value = evdev::Key;
type Value = Key;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str("string")
@ -28,42 +29,42 @@ where
deserializer.deserialize_any(KeyVisitor)
}
pub fn parse_key(input: &str) -> Result<evdev::Key, Box<dyn Error>> {
pub fn parse_key(input: &str) -> Result<Key, Box<dyn Error>> {
// Everything is case-insensitive
let name = input.to_uppercase();
// Original evdev scancodes should always work
if let Ok(key) = evdev::Key::from_str(&name) {
if let Ok(key) = Key::from_str(&name) {
return Ok(key);
}
// You can abbreviate "KEY_" of any "KEY_*" scancodes.
if let Ok(key) = evdev::Key::from_str(&format!("KEY_{}", name)) {
if let Ok(key) = Key::from_str(&format!("KEY_{}", name)) {
return Ok(key);
}
// xremap's custom aliases like k0kubun/karabiner-dsl
let key = match &name[..] {
// Shift
"SHIFT_R" => evdev::Key::KEY_RIGHTSHIFT,
"SHIFT_L" => evdev::Key::KEY_LEFTSHIFT,
"SHIFT_R" => Key::KEY_RIGHTSHIFT,
"SHIFT_L" => Key::KEY_LEFTSHIFT,
// Control
"CONTROL_R" => evdev::Key::KEY_RIGHTCTRL,
"CONTROL_L" => evdev::Key::KEY_LEFTCTRL,
"CTRL_R" => evdev::Key::KEY_RIGHTCTRL,
"CTRL_L" => evdev::Key::KEY_LEFTCTRL,
"CONTROL_R" => Key::KEY_RIGHTCTRL,
"CONTROL_L" => Key::KEY_LEFTCTRL,
"CTRL_R" => Key::KEY_RIGHTCTRL,
"CTRL_L" => Key::KEY_LEFTCTRL,
// Alt
"ALT_R" => evdev::Key::KEY_RIGHTALT,
"ALT_L" => evdev::Key::KEY_LEFTALT,
"ALT_R" => Key::KEY_RIGHTALT,
"ALT_L" => Key::KEY_LEFTALT,
// Windows
"SUPER_R" => evdev::Key::KEY_RIGHTMETA,
"SUPER_L" => evdev::Key::KEY_LEFTMETA,
"WIN_R" => evdev::Key::KEY_RIGHTMETA,
"WIN_L" => evdev::Key::KEY_LEFTMETA,
"SUPER_R" => Key::KEY_RIGHTMETA,
"SUPER_L" => Key::KEY_LEFTMETA,
"WIN_R" => Key::KEY_RIGHTMETA,
"WIN_L" => Key::KEY_LEFTMETA,
// else
_ => evdev::Key::KEY_RESERVED,
_ => Key::KEY_RESERVED,
};
if key != evdev::Key::KEY_RESERVED {
if key != Key::KEY_RESERVED {
return Ok(key);
}

@ -304,21 +304,21 @@ impl EventHandler {
}
fn update_modifier(&mut self, code: u16, value: i32) {
if code == evdev::Key::KEY_LEFTSHIFT.code() {
if code == Key::KEY_LEFTSHIFT.code() {
self.shift.left = is_pressed(value)
} else if code == evdev::Key::KEY_RIGHTSHIFT.code() {
} else if code == Key::KEY_RIGHTSHIFT.code() {
self.shift.right = is_pressed(value)
} else if code == evdev::Key::KEY_LEFTCTRL.code() {
} else if code == Key::KEY_LEFTCTRL.code() {
self.control.left = is_pressed(value)
} else if code == evdev::Key::KEY_RIGHTCTRL.code() {
} else if code == Key::KEY_RIGHTCTRL.code() {
self.control.right = is_pressed(value)
} else if code == evdev::Key::KEY_LEFTALT.code() {
} else if code == Key::KEY_LEFTALT.code() {
self.alt.left = is_pressed(value)
} else if code == evdev::Key::KEY_RIGHTALT.code() {
} else if code == Key::KEY_RIGHTALT.code() {
self.alt.right = is_pressed(value)
} else if code == evdev::Key::KEY_LEFTMETA.code() {
} else if code == Key::KEY_LEFTMETA.code() {
self.windows.left = is_pressed(value)
} else if code == evdev::Key::KEY_RIGHTMETA.code() {
} else if code == Key::KEY_RIGHTMETA.code() {
self.windows.right = is_pressed(value)
} else {
panic!("unexpected key {:?} at update_modifier", Key::new(code));
@ -329,34 +329,34 @@ impl EventHandler {
lazy_static! {
static ref MODIFIER_KEYS: [u16; 8] = [
// Shift
evdev::Key::KEY_LEFTSHIFT.code(),
evdev::Key::KEY_RIGHTSHIFT.code(),
Key::KEY_LEFTSHIFT.code(),
Key::KEY_RIGHTSHIFT.code(),
// Control
evdev::Key::KEY_LEFTCTRL.code(),
evdev::Key::KEY_RIGHTCTRL.code(),
Key::KEY_LEFTCTRL.code(),
Key::KEY_RIGHTCTRL.code(),
// Alt
evdev::Key::KEY_LEFTALT.code(),
evdev::Key::KEY_RIGHTALT.code(),
Key::KEY_LEFTALT.code(),
Key::KEY_RIGHTALT.code(),
// Windows
evdev::Key::KEY_LEFTMETA.code(),
evdev::Key::KEY_RIGHTMETA.code(),
Key::KEY_LEFTMETA.code(),
Key::KEY_RIGHTMETA.code(),
];
static ref SHIFT_KEYS: [Key; 2] = [
Key::new(evdev::Key::KEY_LEFTSHIFT.code()),
Key::new(evdev::Key::KEY_RIGHTSHIFT.code()),
Key::new(Key::KEY_LEFTSHIFT.code()),
Key::new(Key::KEY_RIGHTSHIFT.code()),
];
static ref CONTROL_KEYS: [Key; 2] = [
Key::new(evdev::Key::KEY_LEFTCTRL.code()),
Key::new(evdev::Key::KEY_RIGHTCTRL.code()),
Key::new(Key::KEY_LEFTCTRL.code()),
Key::new(Key::KEY_RIGHTCTRL.code()),
];
static ref ALT_KEYS: [Key; 2] = [
Key::new(evdev::Key::KEY_LEFTALT.code()),
Key::new(evdev::Key::KEY_RIGHTALT.code()),
Key::new(Key::KEY_LEFTALT.code()),
Key::new(Key::KEY_RIGHTALT.code()),
];
static ref WINDOWS_KEYS: [Key; 2] = [
Key::new(evdev::Key::KEY_LEFTMETA.code()),
Key::new(evdev::Key::KEY_RIGHTMETA.code()),
Key::new(Key::KEY_LEFTMETA.code()),
Key::new(Key::KEY_RIGHTMETA.code()),
];
}

Loading…
Cancel
Save