This commit is contained in:
Federico Terzi 2019-09-13 23:05:01 +02:00
parent d0270eb99b
commit 2f87826881
4 changed files with 28 additions and 2 deletions

View File

@ -348,3 +348,15 @@ int32_t get_active_window_executable(char *buffer, int32_t size) {
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;
}

View File

@ -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);
/*
* Return 1 if the current window is a terminal window, 0 otherwise.
*/
extern "C" int32_t is_current_window_terminal();
#endif //ESPANSO_BRIDGE_H

View File

@ -11,6 +11,7 @@ extern {
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_executable(buffer: *mut c_char, size: i32) -> i32;
pub fn is_current_window_terminal() -> i32;
// Keyboard
pub fn register_keypress_callback(cb: extern fn(_self: *mut c_void, *const u8,

View File

@ -20,9 +20,17 @@ impl super::KeyboardManager for LinuxKeyboardManager {
}
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) {