Fix bug that prevented espanso from working with Emacs #122
This commit is contained in:
parent
284482e2d5
commit
db2ff8c6ca
|
@ -453,7 +453,7 @@ int32_t get_active_window_executable(char *buffer, int32_t size) {
|
|||
return result;
|
||||
}
|
||||
|
||||
int32_t is_current_window_terminal() {
|
||||
int32_t is_current_window_special() {
|
||||
char class_buffer[250];
|
||||
int res = get_active_window_class(class_buffer, 250);
|
||||
if (res > 0) {
|
||||
|
@ -477,6 +477,8 @@ int32_t is_current_window_terminal() {
|
|||
return 1;
|
||||
}else if (strstr(class_buffer, "Alacritty") != NULL) { // Alacritty terminal
|
||||
return 1;
|
||||
}else if (strstr(class_buffer, "Emacs") != NULL) { // Emacs
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -111,8 +111,8 @@ 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.
|
||||
* Return a value greater than 0 if the current window needs a special paste combination, 0 otherwise.
|
||||
*/
|
||||
extern "C" int32_t is_current_window_terminal();
|
||||
extern "C" int32_t is_current_window_special();
|
||||
|
||||
#endif //ESPANSO_BRIDGE_H
|
||||
|
|
|
@ -31,7 +31,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;
|
||||
pub fn is_current_window_special() -> i32;
|
||||
|
||||
// Keyboard
|
||||
pub fn register_keypress_callback(cb: extern fn(_self: *mut c_void, *const u8,
|
||||
|
|
|
@ -42,14 +42,16 @@ impl super::KeyboardManager for LinuxKeyboardManager {
|
|||
unsafe {
|
||||
match shortcut {
|
||||
PasteShortcut::Default => {
|
||||
let is_terminal = is_current_window_terminal();
|
||||
let is_special = is_current_window_special();
|
||||
|
||||
// Terminals use a different keyboard combination to paste from clipboard,
|
||||
// so we need to check the correct situation.
|
||||
if is_terminal == 0 {
|
||||
if is_special == 0 {
|
||||
trigger_paste();
|
||||
}else if is_terminal == 2 { // Special case for stterm
|
||||
}else if is_special == 2 { // Special case for stterm
|
||||
trigger_alt_shift_ins_paste();
|
||||
}else if is_special == 3 { // Special case for Emacs
|
||||
trigger_shift_ins_paste();
|
||||
}else{
|
||||
trigger_terminal_paste();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user