From a948232b3ec71e5c67ae28dad5bc6fb92c08b737 Mon Sep 17 00:00:00 2001 From: Dennis Date: Wed, 1 Aug 2018 01:15:42 +0200 Subject: [PATCH] Applications is now able to read modifiers --- src/key_operations.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/key_operations.rs b/src/key_operations.rs index 8725b7b..d2d9142 100644 --- a/src/key_operations.rs +++ b/src/key_operations.rs @@ -293,6 +293,15 @@ impl Modifier { _ => None, } } + + pub fn string(modifier:Modifier) -> String { + match modifier { + Modifier::Ctrl => "ctrl".to_string(), + Modifier::Shift => "shift".to_string(), + Modifier::Alt => "alt".to_string(), + Modifier::Win => "win".to_string(), + } + } } enum MouseButton { @@ -338,6 +347,25 @@ pub fn encode_string(s: &str) -> Option > { pub fn print_key(response: &[u8]) -> Option { let mut key_combo = String::new(); + // Handle modifiers + if response[2] & Modifier::Ctrl as u8 != 0 { + key_combo.push_str(&Modifier::string(Modifier::Ctrl)[..]); + key_combo.push_str("+"); + } + if response[2] & Modifier::Shift as u8 != 0 { + key_combo.push_str(&Modifier::string(Modifier::Shift)[..]); + key_combo.push_str("+"); + } + if response[2] & Modifier::Alt as u8 != 0 { + key_combo.push_str(&Modifier::string(Modifier::Alt)[..]); + key_combo.push_str("+"); + } + if response[2] & Modifier::Win as u8 != 0 { + key_combo.push_str(&Modifier::string(Modifier::Win)[..]); + key_combo.push_str("+"); + } + + // Handle others keys if response[3] != 0 { if let Some(key_str) = decode_byte(&response[3]) { key_combo.push_str(&key_str);