реклама на сайте
подробности

 
 
> keyboard shortcuts, как отключить лишнее?
SM
сообщение Dec 25 2014, 09:49
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Весь мозг сломал. Как (gnome-terminal, Centos 7) сделать так, чтобы сочетания клавиш Ctrl-Ins / Shift-Ins проходили в терминал, а не занимались copy/paste из гуевой clipboard? unbind в .gtkrc-2.0 / gtk.css не помогает, в system.mwmrc о них нет упоминания. В гуёвых настройках (gnome-control-center / keyboard / shortcuts и в самом gnome-terminal / Preferences / Shortcuts) про эти сочетания ничего нет.
ГДЕ ЕЩЕ?????
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SM
сообщение Dec 26 2014, 21:31
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Ну если гора не идет к Магомету, то.... В общем, это нельзя сконфигурировать. Только конкретным ломом.

Проблема в коде libvte (пакет vte3). Исправил сочетания Ctrl/Shift+Home/End (не пропускались с модификаторами, это гуглем нарыл), и Ctrl/Shift+Insert (захардкодены на терминальский Copy/Paste - это сам отрезал), и еще заодно всякие там PgUp/PgDn с модификаторами, второе место с Shift+Home/End, ну и т.п.

Лекарство:
CODE
diff -uNr a/src/keymap.c b/src/keymap.c
--- a/src/keymap.c 2013-06-08 15:46:26.000000000 +0400
+++ b/src/keymap.c 2014-12-27 00:16:09.000000000 +0300
@@ -278,6 +278,8 @@
{cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_CSI "1~", -1, X_NULL},
{cursor_all, keypad_all, fkey_hp, 0, _VTE_CAP_ESC "h", -1, X_NULL},
{cursor_all, keypad_all, fkey_nothpvt, 0, X_NULL, 0, "kh"},
+ {cursor_default, keypad_all, fkey_default, 0, _VTE_CAP_CSI "H", -1, X_NULL},
+ {cursor_app, keypad_all, fkey_default, 0, _VTE_CAP_SS3 "H", -1, X_NULL},
{cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
};

@@ -285,6 +287,8 @@
{cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, "@7"},
{cursor_all, keypad_all, fkey_vt220, 0, _VTE_CAP_CSI "4~", -1, X_NULL},
{cursor_all, keypad_all, fkey_notvt220, 0, X_NULL, 0, "@7"},
+ {cursor_default, keypad_all, fkey_default, 0, _VTE_CAP_CSI "F", -1, X_NULL},
+ {cursor_app, keypad_all, fkey_default, 0, _VTE_CAP_SS3 "F", -1, X_NULL},
{cursor_all, keypad_all, fkey_all, 0, X_NULL, 0, X_NULL},
};

@@ -1255,6 +1259,8 @@
gboolean fkey = FALSE;
/* Determine if this key gets modifiers. */
switch (keyval) {
+ case GDK_KEY (Home):
+ case GDK_KEY (End):
case GDK_KEY (Up):
case GDK_KEY (Down):
case GDK_KEY (Left):
diff -uNr a/src/vte.c b/src/vte.c
--- a/src/vte.c 2013-06-08 15:46:27.000000000 +0400
+++ b/src/vte.c 2014-12-27 00:52:06.000000000 +0300
@@ -5391,7 +5391,8 @@
break;
case GDK_KEY (KP_Insert):
case GDK_KEY (Insert):
- if (modifiers & GDK_SHIFT_MASK) {
+ if (modifiers & GDK_SHIFT_MASK
+ && terminal->pvt->cursor_mode != VTE_KEYMODE_APPLICATION) {
if (modifiers & GDK_CONTROL_MASK) {
vte_terminal_paste_clipboard(terminal);
handled = TRUE;
@@ -5401,7 +5402,8 @@
handled = TRUE;
suppress_meta_esc = TRUE;
}
- } else if (modifiers & GDK_CONTROL_MASK) {
+ } else if (modifiers & GDK_CONTROL_MASK
+ && terminal->pvt->cursor_mode != VTE_KEYMODE_APPLICATION) {
vte_terminal_copy_clipboard(terminal);
handled = TRUE;
suppress_meta_esc = TRUE;
@@ -5411,7 +5413,8 @@
case GDK_KEY (KP_Up):
case GDK_KEY (Up):
if (modifiers & GDK_CONTROL_MASK
- && modifiers & GDK_SHIFT_MASK) {
+ && modifiers & GDK_SHIFT_MASK
+ && terminal->pvt->cursor_mode != VTE_KEYMODE_APPLICATION) {
vte_terminal_scroll_lines(terminal, -1);
scrolled = TRUE;
handled = TRUE;
@@ -5421,7 +5424,8 @@
case GDK_KEY (KP_Down):
case GDK_KEY (Down):
if (modifiers & GDK_CONTROL_MASK
- && modifiers & GDK_SHIFT_MASK) {
+ && modifiers & GDK_SHIFT_MASK
+ && terminal->pvt->cursor_mode != VTE_KEYMODE_APPLICATION) {
vte_terminal_scroll_lines(terminal, 1);
scrolled = TRUE;
handled = TRUE;
@@ -5430,7 +5434,8 @@
break;
case GDK_KEY (KP_Page_Up):
case GDK_KEY (Page_Up):
- if (modifiers & GDK_SHIFT_MASK) {
+ if (modifiers & GDK_SHIFT_MASK
+ && terminal->pvt->cursor_mode != VTE_KEYMODE_APPLICATION) {
vte_terminal_scroll_pages(terminal, -1);
scrolled = TRUE;
handled = TRUE;
@@ -5439,7 +5444,8 @@
break;
case GDK_KEY (KP_Page_Down):
case GDK_KEY (Page_Down):
- if (modifiers & GDK_SHIFT_MASK) {
+ if (modifiers & GDK_SHIFT_MASK
+ && terminal->pvt->cursor_mode != VTE_KEYMODE_APPLICATION) {
vte_terminal_scroll_pages(terminal, 1);
scrolled = TRUE;
handled = TRUE;
@@ -5448,7 +5454,8 @@
break;
case GDK_KEY (KP_Home):
case GDK_KEY (Home):
- if (modifiers & GDK_SHIFT_MASK) {
+ if (modifiers & GDK_SHIFT_MASK
+ && terminal->pvt->cursor_mode != VTE_KEYMODE_APPLICATION) {
vte_terminal_maybe_scroll_to_top(terminal);
scrolled = TRUE;
handled = TRUE;
@@ -5456,7 +5463,8 @@
break;
case GDK_KEY (KP_End):
case GDK_KEY (End):
- if (modifiers & GDK_SHIFT_MASK) {
+ if (modifiers & GDK_SHIFT_MASK
+ && terminal->pvt->cursor_mode != VTE_KEYMODE_APPLICATION) {
vte_terminal_maybe_scroll_to_bottom(terminal);
scrolled = TRUE;
handled = TRUE;


Теперь в gnome-terminal в mcedit заработали столь необходимые Ctrl-Ins, Shift-Ins, Ctrl-Home, Shift-Home, Ctrl-End, Shift-End, Shift-PgDn, Shift-PgUp.


На всякий случай и .rpm исправленный (пришлось его еще и gzip-ом, а то форум не принимает):
Прикрепленные файлы
Прикрепленный файл  vte3_0.34.6_3.el7.centos.x86_64.rpm.gz ( 316.65 килобайт ) Кол-во скачиваний: 9
 
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 12:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01382 секунд с 7
ELECTRONIX ©2004-2016