forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.GOLDED

 
 
Опции темы Опции просмотра
  #1  
Старый 17.08.2016, 16:40
Serguei E. Leontiev
Guest
 
Сообщений: n/a
По умолчанию Fwd: К вопросу ncurses, GoldEd, Shift, Ctr и современных терминалах

Serguei E. Leontiev написал(а) к Serguei E. Leontiev в Oct 15 19:53:19 по местному времени:

From: "Serguei E. Leontiev" <leo@sai.msu.ru>

Всем привет,

Возможно будет интересно.

-------- Перенаправленное сообщение --------
From: Serguei E. Leontiev <leo@sai.msu.ru>
Newsgroups: fido7.ru.linux
Subject: К вопросу ncurses, GoldEd, Shift, Ctr и современных терминалах
Date: Fri, 23 Oct 2015 16:35:48 +0000 (UTC)

Всем привет,

В честь всенародного праздника и наличия разумного количества бутылок
водки разумного размера. Взглянул я во внутренности этого вашего Golded+
1.1.5.

VV>> Ещё более странно, что у меня и там и там - XTERM. Но в mc
VV>> всё работает, а в Golded - нет.
NS> итого, похоже, виновата криворукость авторов голдед+ ?

Согласен с Никитой, виновата, зашкаливает.

SL>> стандартные xterm/DECFNK Modifiers, и потом скармливаешь их
SL>> функции define_key() библиотеки ncurses.
VV> Дай пример пож-та для конфига хотя бы для одной комбинации
VV> Ctrl-стрелка.

Конфигурационный файл для клавиатуры - это ж gkbdbase.cpp :)

Итого, т.к. известные мне современные terminfo используют kri и kind,
для честного включения Shift+стрелка вверх/вниз следует сделать:

golded-plus.new/golded+/goldlib/gcui/gkbdbase.cpp.shiftupdown
- --- golded-plus/golded+/goldlib/gcui/gkbdbase.cpp 2011-02-18
22:46:01.000000000 +0300
+++ golded-plus.new/golded+/goldlib/gcui/gkbdbase.cpp.shiftupdown
2015-10-23 18:58:46.000000000 +0300
@@ -676,8 +676,8 @@
-1, // KEY_CLEAR
-1, // KEY_EOS
-1, // KEY_EOL
- -1, // KEY_SF
- -1, // KEY_SR
+ KeyS_Dwn, // KEYSF
+ KeyS_Up, // KEYSR
KeyPgDn, // KEYNPAGE
KeyPgUp, // KEYPPAGE
KeyTab, // KEYSTAB
@@ -1071,6 +1071,8 @@
case KeySLft:
case KeySRgt:
case KeySEnd:
+ case KeySDwn:
+ case KeySUp:
key = LSНIFT;
break;
}


С Ctrl-стрелка дело обстоит хуже. В качестве макета можно использовать
следующий грязный хак:

- --- golded-plus.new/golded+/goldlib/gcui/gkbdbase.cpp.shiftupdown
2015-10-23 18:58:46.000000000 +0300
+++ golded-plus.new/golded+/goldlib/gcui/gkbdbase.cpp.ctrlarrow
2015-10-23 19:15:13.000000000 +0300
@@ -182,6 +182,17 @@

Init();

+ #if defined(_USE_NCURSES_)
+ #define KEYCUP (KEYRESIZE+3)
+ #define KEYCDOWN (KEYRESIZE+4)
+ #define KEYCRIGНT (KEYRESIZE+5)
+ #define KEYCLEFT (KEYRESIZE+6)
+
+ definekey("\033[1;5A", KEYCUP);
+ definekey("\033[1;5B", KEYCDOWN);
+ definekey("\033[1;5C", KEYCRIGНT);
+ definekey("\033[1;5D", KEYCLEFT);
+ #endif
#if defined(_UNIX__) && !defined(__USE_NCURSES__) && !defined(__BEOS_)

gkbdkeymapinit();
@@ -750,7 +761,13 @@
-1, // KEY_SUSPEND
-1, // KEY_UNDO
-1, // KEY_MOUSE
- -1 // KEY_RESIZE
+ -1, // KEY_RESIZE
+ -1, // KEY_EVENT
+ -1, //
+ KeyC_Up, // KEYCUP
+ KeyC_Dwn, // KEYCDOWN
+ KeyC_Rgt, // KEYCRIGНT
+ KeyC_Lft // KEYCLEFT
};

int gkbd_cursgetch(int mode) {
@@ -1062,6 +1079,10 @@
key = 0;
switch(k) {
case KeyCBrk:
+ case KeyCUp:
+ case KeyCDwn:
+ case KeyCRgt:
+ case KeyCLft:
key = GCTRL;
break;
case KeySTab:

Это последний раз, второй раз я туда, в Golded не полезу.

--
Успехов, Сергей Леонтьев. E-mail: lse@CryptoPro.ru


--- ifmail v.2.15dev5.4
Ответить с цитированием
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 06:17. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot