mouse_codes/mapping/standard/
mod.rs1use crate::types::{Button, Platform};
4
5pub fn parse_button_from_str(s: &str) -> Result<Button, crate::error::MouseParseError> {
7 match s {
8 "Left" => Ok(Button::Left),
9 "Right" => Ok(Button::Right),
10 "Middle" => Ok(Button::Middle),
11 "X1" => Ok(Button::X1),
12 "X2" => Ok(Button::X2),
13 "Extra3" => Ok(Button::Extra3),
14 "Extra4" => Ok(Button::Extra4),
15 "Extra5" => Ok(Button::Extra5),
16 "Extra6" => Ok(Button::Extra6),
17 "Extra7" => Ok(Button::Extra7),
18 "Extra8" => Ok(Button::Extra8),
19 #[cfg(feature = "extended")]
20 "Extra9" => Ok(Button::Extra9),
21 #[cfg(feature = "extended")]
22 "Extra10" => Ok(Button::Extra10),
23 _ => Err(crate::error::MouseParseError::UnknownButton(s.to_string())),
24 }
25}
26
27pub fn parse_button_ignore_case(s: &str) -> Result<Button, crate::error::MouseParseError> {
29 let s = s.to_ascii_lowercase();
30 match s.as_str() {
31 "left" => Ok(Button::Left),
32 "right" => Ok(Button::Right),
33 "middle" => Ok(Button::Middle),
34 "x1" => Ok(Button::X1),
35 "x2" => Ok(Button::X2),
36 "extra3" => Ok(Button::Extra3),
37 "extra4" => Ok(Button::Extra4),
38 "extra5" => Ok(Button::Extra5),
39 "extra6" => Ok(Button::Extra6),
40 "extra7" => Ok(Button::Extra7),
41 "extra8" => Ok(Button::Extra8),
42 #[cfg(feature = "extended")]
43 "extra9" => Ok(Button::Extra9),
44 #[cfg(feature = "extended")]
45 "extra10" => Ok(Button::Extra10),
46 _ => Err(crate::error::MouseParseError::UnknownButton(s)),
47 }
48}
49
50#[cfg(feature = "phf")]
52mod phf_impl;
53#[cfg(feature = "phf")]
54pub use phf_impl::CodeMapperImpl as CodeMapper;
55
56#[cfg(not(feature = "phf"))]
57mod hashmap_impl;
58#[cfg(not(feature = "phf"))]
59pub use hashmap_impl::CodeMapperImpl as CodeMapper;
60
61impl crate::types::CodeMapper for Button {
63 fn to_code(&self, platform: Platform) -> usize {
64 <Self as CodeMapper>::to_code(self, platform)
65 }
66
67 fn from_code(code: usize, platform: Platform) -> Option<Self> {
68 <Self as CodeMapper>::from_code(code, platform)
69 }
70}