MCPcopy Index your code
hub / github.com/TyberiusPrime/KeyToKey / USBKeyOut

Interface USBKeyOut

src/lib.rs:298–404  ·  view source on GitHub ↗

the handlers use this trait to generate their output

Source from the content-addressed store, hash-verified

296
297/// the handlers use this trait to generate their output
298pub trait USBKeyOut {
299 /// send these USB Keycodes concurrently rigth away.
300 fn send_keys(&mut self, keys: &[KeyCode]);
301 /// register these USB keycodes to be send on .send_registered
302 fn register_key(&mut self, key: KeyCode);
303 /// send registered keycodes (or an empty nothing-pressed status)
304 fn send_registered(&mut self);
305 /// helper that sends an empty status
306 fn send_empty(&mut self);
307 /// retrieve a mutable KeyboardState
308 fn state(&mut self) -> &mut KeyboardState;
309 fn ro_state(&self) -> &KeyboardState;
310 fn debug(&mut self, s: &str);
311 fn bootloader(&mut self); // start the boot loader
312 //
313 // register to send later.
314 fn send_keys_later(&mut self, keys: &[KeyCode], ms: u16);
315 fn do_send_later(&mut self);
316
317 fn send_unicode(&mut self, c: char) {
318 match self.state().unicode_mode {
319 UnicodeSendMode::Linux => {
320 self.send_keys(&[KeyCode::LCtrl, KeyCode::LShift, KeyCode::U]);
321 self.send_empty();
322 for out_c in c.escape_unicode().skip(3).take_while(|x| *x != '}') {
323 self.send_keys(&[hex_digit_to_keycode(out_c)]);
324 self.send_empty();
325 }
326 self.send_keys(&[KeyCode::Enter]);
327 self.send_empty();
328 }
329 UnicodeSendMode::LinuxDvorak => {
330 self.send_keys(&[KeyCode::LCtrl, KeyCode::LShift, KeyCode::F]);
331 self.send_empty();
332 for _ in 0..10 {
333 //must be alternating
334 self.send_keys(&[KeyCode::LCtrl]);
335 self.send_empty();
336 }
337 for out_c in c.escape_unicode().skip(3).take_while(|x| *x != '}') {
338 self.send_keys(&[hex_digit_to_keycode_dvorak(out_c)]);
339 self.send_empty();
340 /* for _ in 0..10 {
341 //must be alternating
342 self.send_keys(&[KeyCode::LCtrl]);
343 self.send_empty();
344 } */
345 }
346 self.send_keys(&[KeyCode::Enter]);
347 self.send_empty();
348 }
349 UnicodeSendMode::WinCompose => {
350 self.send_keys(&[KeyCode::RAlt]);
351 self.send_keys(&[KeyCode::U]);
352 let escaped = c.escape_unicode();
353 for out_c in escaped.skip(3).take_while(|x| *x != '}') {
354 self.send_keys(&[hex_digit_to_keycode(out_c)]);
355 }

Callers 6

send_stringMethod · 0.80
process_keysMethod · 0.80
on_triggerMethod · 0.80
process_keysMethod · 0.80
process_keysMethod · 0.80

Implementers 1

test_helpers.rssrc/test_helpers.rs

Calls

no outgoing calls

Tested by

no test coverage detected