forum.wfido.ru  

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

 
 
Опции темы Опции просмотра
  #1  
Старый 17.08.2016, 16:40
Serguei E. Leontiev
Guest
 
Сообщений: n/a
По умолчанию Re: Linux Golded+ 1.1.5 bugs fix ctrl/shift

Serguei E. Leontiev написал(а) к Vladislav Vetrov в Nov 15 19:54:58 по местному времени:

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

Привет Владислав,

От 31 октября 2015 г., 0:44:56 в fido7.ru.golded ты писал:
VV> Нint: огромное спасибо Сергею Леонтьеву 2:5020/400 за
VV> проделанную работу и за подсказку где копать, чтобы добить до
VV> конца.
VV> 2All - намекните, где брать определение для комбинации
VV> клавиш Shift-Ctrl-стрелки, Shift-end, Shift-home для
VV> конструкции типа definekey("\033[1;5D", G_KEYCLEFT)?

Я тебя уже посылал к документации на xterm и vt520. Однако есть ещё одно
направление.

Числа 8-9 во время просветления после всенародного праздника я заметил,
что команда `infocmp -x xterm' выдаёт очень много знакомых букв:
...
kDC4=\E[3;4~, kDC5=\E[3;5~, kDC6=\E[3;6~, kDC7=\E[3;7~,
kDN=\E[1;2B, kDN3=\E[1;3B, kDN4=\E[1;4B, kDN5=\E[1;5B,
kDN6=\E[1;6B, kDN7=\E[1;7B, kEND3=\E[1;3F, kEND4=\E[1;4F,
kEND5=\E[1;5F, kEND6=\E[1;6F, kEND7=\E[1;7F,
kНOM3=\E[1;3Н, kНOM4=\E[1;4Н, kНOM5=\E[1;5Н,
kНOM6=\E[1;6Н, kНOM7=\E[1;7Н, kIC3=\E[2;3~, kIC4=\E[2;4~,
kIC5=\E[2;5~, kIC6=\E[2;6~, kIC7=\E[2;7~, kLFT3=\E[1;3D,
kLFT4=\E[1;4D, kLFT5=\E[1;5D, kLFT6=\E[1;6D,
kLFT7=\E[1;7D, kNXT3=\E[6;3~, kNXT4=\E[6;4~,
kNXT5=\E[6;5~, kNXT6=\E[6;6~, kNXT7=\E[6;7~,
kPRV3=\E[5;3~, kPRV4=\E[5;4~, kPRV5=\E[5;5~,
kPRV6=\E[5;6~, kPRV7=\E[5;7~, kRIT3=\E[1;3C,
kRIT4=\E[1;4C, kRIT5=\E[1;5C, kRIT6=\E[1;6C,
kRIT7=\E[1;7C, kUP=\E[1;2A, kUP3=\E[1;3A, kUP4=\E[1;4A,
kUP5=\E[1;5A, kUP6=\E[1;6A, kUP7=\E[1;7A,

Таким образом, у не слишком древнего ncurses можно их запросить функцией
tigetstr(), если предварительно вызвать useextendednames(TRUE), к
сожалению, только для БД терминалов типа terminfo.

Структура имени, как я понимаю такова:
DC - <Del>;
DN - <Down>;
END - <End>;
НOM - <Нome>;
IC - <Ins>;
LFT - <Left>;
NXT - <PgDn>;
PRV - <PgUp>;
RIT - <Right>;
UP - <Up>.

Esc-последовательности без цифры - <Shift>+<кнопка>, они и так
распознаются getch(), так же как кнопки без Shift.

А с цифрой, это те самые. Цифра N = 1 + (Shift1 + Alt*2 + Ctrl4 +
Meta*8), т.е. так же, как в Esc-последовательностях DECFNK.



Модификаторы функциональных клавиш устроены немного по иному, ncurses
getch() их сам распознаёт и отображает в KEYF(X) (KEY_F0 ... KEYF63 в
коде, в terminfo kfX=). Мне известно два способа отображения Fn:

1. Современный, FreeBSD консоль (teken), Терминал Apple (nsterm),
gnome-terminal (gnome) и xterm R7 (xterm):
X = n + 12(Shift*1 + Ctrl*2 + Alt4)

2. Ортодоксальный, устаревший, Linux консоль (linux), PuTTY (putty),
rxvt (rxvt), xterm R6 (xterm-r6):
X = n + 10(Shift*1 + Ctrl*2 + Alt4)

По сути, он рассчитан на старые клавиатуры, а-ля XT, с 10
функциональными клавишами, а на широких современных клавиатурах
<Shift>+F1 можно набрать как F11. :)

Лично мне не известно, как различать такие терминалы, кроме как по
списку имён.

VV> В чём
VV> может быть причина, что Shift-del просто удаляет мимо
VV> системного буфера Linux?

Вот не заметил я в Golded+ кода для взаимодействия с системным буфером
(clipboard). Думаю, что твой Shift-insert к Golded+ пришёл уже в виде
набираемых символов.

Если очень хочется, то, как минимум, у xterm и rxvt есть соответствующие
Esc последовательности. Хотя, скажем, vim взаимодействует с X11 или
Windows напрямую.

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


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


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

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

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


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


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