master v0.1.0
bel 2023-03-24 23:49:26 -06:00
parent de2b4f4da6
commit 357d35f787
2 changed files with 29 additions and 7 deletions

View File

@ -126,13 +126,13 @@ fn build_config_std() -> Config {
suffix: env::var("INPUT_GUI_PRESS_SUFFIX").unwrap_or(String::from("")),
},
release: PreSufFix{
prefix: env::var("INPUT_GUI_RELEASE_PREFIX").unwrap_or(String::from("!")),
prefix: env::var("INPUT_GUI_RELEASE_PREFIX").unwrap_or(String::from("")),
suffix: env::var("INPUT_GUI_RELEASE_SUFFIX").unwrap_or(String::from("")),
},
format: match env::var("INPUT_GUI_FORMAT") {
Ok(x) => Some(x),
Err(_) => match env::var("INPUT_GUI_FORMAT_V01").unwrap_or(String::from("false")) == String::from("true") {
true => Some(String::from("TODO")),
true => Some(String::from("{\"T\":{{ms}},\"U\":\"{{user}}\",\"Y\":\"{{pressed}}\",\"N\":\"{{released}}\"}")),
false => None,
},
},

View File

@ -5,6 +5,7 @@ use iced::subscription;
use iced::{Alignment, Element, Application, Settings, Subscription, Theme, Command};
use iced_futures::backend::native::async_std::time::every;
use handlebars::Handlebars;
use serde_json::json;
use std::time::{SystemTime, UNIX_EPOCH};
use crate::stream::OutputStream;
@ -117,28 +118,49 @@ impl Main {
None => {},
};
}
let mut t = vec![];
self.keys_newly_down.clear();
for key_code in self.keys_up.iter() {
match self.key_code_to_string(key_code) {
Some(x) => {
for c in x.chars() {
for c in self.flags.cfg.release.prefix.chars() {
s.push(c);
t.push(c);
}
s.push(c);
t.push(c);
for c in self.flags.cfg.release.suffix.chars() {
s.push(c);
t.push(c);
}
}
},
None => {},
};
}
if s.len() > 0 {
self.flags.output_stream.put(s);
if t.len() + s.len() > 0 {
self.flags.output_stream.put(self.sprintf(s, t));
}
self.keys_up.clear();
}
fn sprintf(&self, pressed: Vec<char>, released: Vec<char>) -> Vec<char> {
match self.flags.cfg.format.clone() {
Some(x) => {
let reg = Handlebars::new();
return reg.render_template(&x, &json!({
"pressed": pressed.iter().collect::<String>(),
"released": released.iter().collect::<String>(),
"ms": SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis(),
"user": String::from(""),
})).unwrap().chars().collect();
},
None => {
let mut combo = vec![];
combo.extend(pressed);
combo.extend(released);
return combo;
},
}
}
}
impl Application for Main {