toca 0.1.1

a library for record/display keyboard and mouse actions in a period of time.
Documentation
extern crate toca;

use device_query::Keycode;
use toca::{KeyboardAction, KeyboardEv, KeyboardPlayer, set_timeout};

fn from_string() {
    // mock action
    let mock_action = KeyboardAction::from_string("{\"evs\":[{\"code\":\"KeyH\",\"press\":true,\"timestamp\":2065},{\"code\":\"KeyH\",\"press\":false,\"timestamp\":2144},{\"code\":\"KeyE\",\"press\":true,\"timestamp\":2391},{\"code\":\"KeyE\",\"press\":false,\"timestamp\":2484},{\"code\":\"KeyL\",\"press\":true,\"timestamp\":2620},{\"code\":\"KeyL\",\"press\":false,\"timestamp\":2700},{\"code\":\"KeyL\",\"press\":true,\"timestamp\":2753},{\"code\":\"KeyL\",\"press\":false,\"timestamp\":2846},{\"code\":\"KeyO\",\"press\":true,\"timestamp\":3109},{\"code\":\"KeyO\",\"press\":false,\"timestamp\":3194},{\"code\":\"Space\",\"press\":true,\"timestamp\":3501},{\"code\":\"Space\",\"press\":false,\"timestamp\":3612},{\"code\":\"KeyW\",\"press\":true,\"timestamp\":3797},{\"code\":\"KeyW\",\"press\":false,\"timestamp\":3878},{\"code\":\"KeyO\",\"press\":true,\"timestamp\":3997},{\"code\":\"KeyO\",\"press\":false,\"timestamp\":4075},{\"code\":\"KeyR\",\"press\":true,\"timestamp\":4123},{\"code\":\"KeyR\",\"press\":false,\"timestamp\":4223},{\"code\":\"KeyL\",\"press\":true,\"timestamp\":4483},{\"code\":\"KeyL\",\"press\":false,\"timestamp\":4569},{\"code\":\"KeyD\",\"press\":true,\"timestamp\":4684},{\"code\":\"KeyD\",\"press\":false,\"timestamp\":4787},{\"code\":\"ShiftRight\",\"press\":true,\"timestamp\":5004},{\"code\":\"Digit1\",\"press\":true,\"timestamp\":5146},{\"code\":\"Digit1\",\"press\":false,\"timestamp\":5235},{\"code\":\"ShiftRight\",\"press\":false,\"timestamp\":5313}],\"till\":6668}").unwrap();

    // simulate
    let mut player = KeyboardPlayer::new();
    match player.load(mock_action) {
        Ok(_) => {
            set_timeout(|| {
                match player.do_play() {
                    Ok(_) => {
                        println!("done.")
                    }
                    Err(_) => {
                        println!("failed.")
                    }
                }
            }, 3_000)
        }
        Err(_) => println!("error when load actions.")
    }

    // auto print: hello world!
}

fn from_struct() {
    // mock action
    let mock_action = KeyboardAction {
        evs: vec![
            KeyboardEv {
                code: Keycode::H,
                press: true,
                timestamp: 500,
            },
            KeyboardEv {
                code: Keycode::E,
                press: true,
                timestamp: 1500,
            },
            KeyboardEv {
                code: Keycode::L,
                press: true,
                timestamp: 2000,
            },
            KeyboardEv {
                code: Keycode::L,
                press: true,
                timestamp: 2500,
            },
            KeyboardEv {
                code: Keycode::O,
                press: true,
                timestamp: 3000,
            },
            KeyboardEv {
                code: Keycode::Space,
                press: true,
                timestamp: 3500,
            },
            KeyboardEv {
                code: Keycode::W,
                press: true,
                timestamp: 4000,
            },
            KeyboardEv {
                code: Keycode::O,
                press: true,
                timestamp: 4500,
            },
            KeyboardEv {
                code: Keycode::R,
                press: true,
                timestamp: 5000,
            },
            KeyboardEv {
                code: Keycode::L,
                press: true,
                timestamp: 5500,
            },
            KeyboardEv {
                code: Keycode::D,
                press: true,
                timestamp: 6000,
            },
            KeyboardEv {
                code: Keycode::LShift,
                press: true,
                timestamp: 6500,
            },
            KeyboardEv {
                code: Keycode::Numpad1,
                press: true,
                timestamp: 6600,
            },
            KeyboardEv {
                code: Keycode::LShift,
                press: false,
                timestamp: 6700,
            },
        ],
        till: 6700,
    };

    // simulate
    let mut player = KeyboardPlayer::new();
    match player.load(mock_action) {
        Ok(_) => {
            set_timeout(|| {
                match player.do_play() {
                    Ok(_) => {
                        println!("done.")
                    }
                    Err(_) => {
                        println!("failed.")
                    }
                }
            }, 3_000)
        }
        Err(_) => println!("error when load actions.")
    }

    // auto print: hello world!
}

fn main() {
    // from_string();
    from_struct();
}