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;
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
/*
|
||||
* Return 1 if the current window is a terminal window, 0 otherwise.
|
||||
*/
|
||||
extern "C" int32_t is_current_window_terminal();
|
||||
|
||||
#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_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,
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user