Compare commits
6 Commits
748665ef5e
...
main
Author | SHA1 | Date | |
---|---|---|---|
a860a906b7
|
|||
11d0001624
|
|||
33ac041121
|
|||
49b8ba64d0
|
|||
3eb031134b
|
|||
7873309212
|
@ -2,7 +2,7 @@ name: Rust
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["master"]
|
||||
branches: ["main"]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
@ -1,3 +1,5 @@
|
||||
# mouse-free-fishing
|
||||
|
||||
Made for Fisch (Roblox game)
|
||||
Made for Fisch (Roblox game)
|
||||
|
||||
You can grab the latest release using [this link](https://git.tommyy.dev/tommy/mouse-free-fishing/actions/runs/latest/artifacts/mouse-free-fishing)
|
71
src/main.rs
71
src/main.rs
@ -1,8 +1,11 @@
|
||||
use std::sync::{Arc, Mutex};
|
||||
use rdev::{simulate, Event, EventType, SimulateError};
|
||||
use std::process::exit;
|
||||
|
||||
const ENTER_KEY: rdev::Key = rdev::Key::Return;
|
||||
const SPACE_KEY: rdev::Key = rdev::Key::Space;
|
||||
const ESCAPE_KEY: rdev::Key = rdev::Key::Escape;
|
||||
const SUSPEND_KEY: rdev::Key = rdev::Key::SemiColon;
|
||||
|
||||
fn send(event_type: EventType) {
|
||||
match simulate(&event_type) {
|
||||
@ -14,30 +17,54 @@ fn send(event_type: EventType) {
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let callback = |event: Event| {
|
||||
let mut matched: bool = false;
|
||||
match event.event_type {
|
||||
EventType::KeyPress(SPACE_KEY) => {
|
||||
send(EventType::ButtonPress(rdev::Button::Left));
|
||||
matched = true;
|
||||
},
|
||||
EventType::KeyRelease(SPACE_KEY) => {
|
||||
send(EventType::ButtonRelease(rdev::Button::Left));
|
||||
matched = true;
|
||||
},
|
||||
EventType::KeyPress(ESCAPE_KEY) => exit(0),
|
||||
_ => ()
|
||||
}
|
||||
if !matched {
|
||||
Some(event)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
};
|
||||
let suspended = Arc::new(Mutex::new(false));
|
||||
let suspended_clone = Arc::clone(&suspended);
|
||||
|
||||
println!("Escape: Quit program\nSpace: Left mouse click");
|
||||
let callback = move |event: Event| {
|
||||
let mut matched: bool = false;
|
||||
match event.event_type {
|
||||
EventType::KeyPress(key) if key == ENTER_KEY => {
|
||||
send(EventType::KeyPress(rdev::Key::KeyS));
|
||||
send(EventType::KeyRelease(rdev::Key::KeyS));
|
||||
},
|
||||
EventType::KeyPress(key) if key == SPACE_KEY => {
|
||||
let suspended = suspended.lock().unwrap();
|
||||
if *suspended {
|
||||
return Some(event);
|
||||
} else {
|
||||
send(EventType::ButtonPress(rdev::Button::Left));
|
||||
matched = true;
|
||||
}
|
||||
},
|
||||
EventType::KeyRelease(key) if key == SPACE_KEY => {
|
||||
let suspended = suspended.lock().unwrap();
|
||||
if *suspended {
|
||||
return Some(event);
|
||||
} else {
|
||||
send(EventType::ButtonRelease(rdev::Button::Left));
|
||||
send(EventType::KeyPress(rdev::Key::BackSlash));
|
||||
send(EventType::KeyRelease(rdev::Key::BackSlash));
|
||||
matched = true;
|
||||
}
|
||||
},
|
||||
EventType::KeyPress(key) if key == SUSPEND_KEY => {
|
||||
let mut suspended = suspended_clone.lock().unwrap();
|
||||
*suspended = !*suspended;
|
||||
println!("Suspend: {}", *suspended);
|
||||
}
|
||||
EventType::KeyPress(key) if key == ESCAPE_KEY => exit(0),
|
||||
_ => ()
|
||||
}
|
||||
if !matched {
|
||||
Some(event)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(error) = rdev::grab(callback) {
|
||||
println!("Escape: Quit program\nSemi colon (;): Suspend\nSpace: Left mouse click");
|
||||
|
||||
if let Err(error) = rdev::grab(callback) {
|
||||
eprintln!("Error: {:?}", error);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user