diff --git a/src/key_operations.rs b/src/key_operations.rs index cefda19..8725b7b 100644 --- a/src/key_operations.rs +++ b/src/key_operations.rs @@ -276,13 +276,25 @@ static KEY_MAP : &[(&str, u8)] = &[ ("" , 0xff), ]; -enum Modifier { +pub enum Modifier { Ctrl = 1, Shift = 2, Alt = 4, Win = 8, } +impl Modifier { + pub fn value(modifier:&str) -> Option { + match modifier { + "ctrl" => Some(Modifier::Ctrl), + "shift" => Some(Modifier::Shift), + "alt" => Some(Modifier::Alt), + "win" => Some(Modifier::Win), + _ => None, + } + } +} + enum MouseButton { MouseLeft = 1, MouseRight = 2, diff --git a/src/main.rs b/src/main.rs index dd372cb..d24a142 100644 --- a/src/main.rs +++ b/src/main.rs @@ -138,8 +138,11 @@ fn main() { "append_str" => { pedals.set_string(ped_list[i] as usize, val_list[i].as_str()); } + "append_mod" => { + pedals.set_modifier(ped_list[i] as usize, val_list[i].as_str()); + } _ => { - error!("Unkonwn command!"); + error!("Unknown command!"); } } } diff --git a/src/pedal_operations.rs b/src/pedal_operations.rs index b9e5851..83844e5 100644 --- a/src/pedal_operations.rs +++ b/src/pedal_operations.rs @@ -220,6 +220,17 @@ impl Pedals { } } + pub fn set_modifier(& mut self, ped:usize, modifier:&str) { + let modifier = match key_operations::Modifier::value(modifier) { + Some(x) => x, + None => error!("Unkown modifier! Please use one of the following: ctrl, shift, alt, win."), + }; + + self.set_type(ped, Type::Key); + + self.ped_data[ped].data[2] |= modifier as u8; + } + pub fn print_string(&self, dev: & hidapi::HidDevice, response: & mut [u8]) -> Option { let mut string = String::new(); let mut len = response[0] - 2;