Add cursor position implementation for MacOS
This commit is contained in:
parent
9bbdb8d95f
commit
4f9be699ac
|
@ -60,6 +60,11 @@ void send_string(const char * string);
|
|||
*/
|
||||
void send_vkey(int32_t vk);
|
||||
|
||||
/*
|
||||
* Send the Virtual Key press multiple times
|
||||
*/
|
||||
void send_multi_vkey(int32_t vk, int32_t count);
|
||||
|
||||
/*
|
||||
* Send the backspace keypress, *count* times.
|
||||
*/
|
||||
|
|
|
@ -101,23 +101,7 @@ void send_string(const char * string) {
|
|||
}
|
||||
|
||||
void delete_string(int32_t count) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^(void) {
|
||||
for (int i = 0; i < count; i++) {
|
||||
CGEventRef keydown;
|
||||
keydown = CGEventCreateKeyboardEvent(NULL, 0x33, true);
|
||||
CGEventPost(kCGHIDEventTap, keydown);
|
||||
CFRelease(keydown);
|
||||
|
||||
usleep(2000);
|
||||
|
||||
CGEventRef keyup;
|
||||
keyup = CGEventCreateKeyboardEvent(NULL, 0x33, false);
|
||||
CGEventPost(kCGHIDEventTap, keyup);
|
||||
CFRelease(keyup);
|
||||
|
||||
usleep(2000);
|
||||
}
|
||||
});
|
||||
send_multi_vkey(0x33, count);
|
||||
}
|
||||
|
||||
void send_vkey(int32_t vk) {
|
||||
|
@ -127,14 +111,34 @@ void send_vkey(int32_t vk) {
|
|||
CGEventPost(kCGHIDEventTap, keydown);
|
||||
CFRelease(keydown);
|
||||
|
||||
usleep(2000);
|
||||
usleep(500);
|
||||
|
||||
CGEventRef keyup;
|
||||
keyup = CGEventCreateKeyboardEvent(NULL, vk, false);
|
||||
CGEventPost(kCGHIDEventTap, keyup);
|
||||
CFRelease(keyup);
|
||||
|
||||
usleep(2000);
|
||||
usleep(500);
|
||||
});
|
||||
}
|
||||
|
||||
void send_multi_vkey(int32_t vk, int32_t count) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^(void) {
|
||||
for (int i = 0; i < count; i++) {
|
||||
CGEventRef keydown;
|
||||
keydown = CGEventCreateKeyboardEvent(NULL, vk, true);
|
||||
CGEventPost(kCGHIDEventTap, keydown);
|
||||
CFRelease(keydown);
|
||||
|
||||
usleep(500);
|
||||
|
||||
CGEventRef keyup;
|
||||
keyup = CGEventCreateKeyboardEvent(NULL, vk, false);
|
||||
CGEventPost(kCGHIDEventTap, keyup);
|
||||
CFRelease(keyup);
|
||||
|
||||
usleep(500);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@ extern {
|
|||
|
||||
pub fn send_string(string: *const c_char);
|
||||
pub fn send_vkey(vk: i32);
|
||||
pub fn send_multi_vkey(vk: i32, count: i32);
|
||||
pub fn delete_string(count: i32);
|
||||
pub fn trigger_paste();
|
||||
}
|
|
@ -48,4 +48,11 @@ impl super::KeyboardManager for MacKeyboardManager {
|
|||
fn delete_string(&self, count: i32) {
|
||||
unsafe {delete_string(count)}
|
||||
}
|
||||
|
||||
fn move_cursor_left(&self, count: i32) {
|
||||
unsafe {
|
||||
// Simulate the Left arrow count times
|
||||
send_multi_vkey(0x7B, count);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user