Fix #12
This commit is contained in:
parent
d0270eb99b
commit
2f87826881
|
@ -348,3 +348,15 @@ int32_t get_active_window_executable(char *buffer, int32_t size) {
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t is_current_window_terminal() {
|
||||||
|
char class_buffer[250];
|
||||||
|
int res = get_active_window_class(class_buffer, 250);
|
||||||
|
if (res > 0) {
|
||||||
|
if (strstr(class_buffer, "terminal") != NULL) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -71,4 +71,9 @@ extern "C" int32_t get_active_window_class(char * buffer, int32_t size);
|
||||||
*/
|
*/
|
||||||
extern "C" int32_t get_active_window_executable(char * buffer, int32_t size);
|
extern "C" int32_t get_active_window_executable(char * buffer, int32_t size);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return 1 if the current window is a terminal window, 0 otherwise.
|
||||||
|
*/
|
||||||
|
extern "C" int32_t is_current_window_terminal();
|
||||||
|
|
||||||
#endif //ESPANSO_BRIDGE_H
|
#endif //ESPANSO_BRIDGE_H
|
||||||
|
|
|
@ -11,6 +11,7 @@ extern {
|
||||||
pub fn get_active_window_name(buffer: *mut c_char, size: i32) -> i32;
|
pub fn get_active_window_name(buffer: *mut c_char, size: i32) -> i32;
|
||||||
pub fn get_active_window_class(buffer: *mut c_char, size: i32) -> i32;
|
pub fn get_active_window_class(buffer: *mut c_char, size: i32) -> i32;
|
||||||
pub fn get_active_window_executable(buffer: *mut c_char, size: i32) -> i32;
|
pub fn get_active_window_executable(buffer: *mut c_char, size: i32) -> i32;
|
||||||
|
pub fn is_current_window_terminal() -> i32;
|
||||||
|
|
||||||
// Keyboard
|
// Keyboard
|
||||||
pub fn register_keypress_callback(cb: extern fn(_self: *mut c_void, *const u8,
|
pub fn register_keypress_callback(cb: extern fn(_self: *mut c_void, *const u8,
|
||||||
|
|
|
@ -20,9 +20,17 @@ impl super::KeyboardManager for LinuxKeyboardManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn trigger_paste(&self) {
|
fn trigger_paste(&self) {
|
||||||
unsafe { trigger_paste(); }
|
unsafe {
|
||||||
|
let is_terminal = is_current_window_terminal();
|
||||||
|
|
||||||
// TODO: detect when in terminal and use trigger_terminal_paste() instead
|
// Terminals use a different keyboard combination to paste from clipboard,
|
||||||
|
// so we need to check the correct situation.
|
||||||
|
if is_terminal == 0 {
|
||||||
|
trigger_paste();
|
||||||
|
}else{
|
||||||
|
trigger_terminal_paste();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn delete_string(&self, count: i32) {
|
fn delete_string(&self, count: i32) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user