Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Zahar Kiselev                        2:5030/382.1   20 Jan 2001  13:59:22
 To : Dmitry Morozhnikov
 Subject : using ncurses
 -------------------------------------------------------------------------------- 
 
 
 At 17 Jan 01  05:45:44, Dmitry Morozhnikov wrote to Ivan Shmakov:
 
  >>> Может быть есть какая то функция опрашивающая состояние ctrl и alt? Или
  >>> вообще не использовать getch(), а, всместо этого, использовать что то
  >>> более низкоуровневое?
  IS>>   Такой возможности ни в терминальном драйвере Linux'а, ни на
  IS>>   каком из известных мне терминалов нет.
  DM> А вот интересно -- насколько неплохо это добавить? То есть говоришь 
  DM> терминалу
  DM> фразу -- кидай теперь кейкоды, а он и рад -- кидается кейкодами и флажком
  DM> нажато/отпущено. А?
 
 Такой надобности в действительности нет, если только _настроить_ имеющийся
 ncurses. Просто написав более полную секцию terminfo и поместив все описанные в 
 этой секции дополнительные esc-последовательности в карту кодов
 клавиатуры(keymap) можно потом программно отличать и f1 от Сtrl-F1 и многое
 другое - большинство из того, что мы привыкли различать на клавиатуре IBM PC.
 Причем такая перенастройка терминала нисколько не помешает "классическим"
 юниксовым программам работать. Просто будем использовать разные установки
 переменной TERM. Что касается разнообразных терминальных программ и telnet`а, то
 в нем тоже легко настроить - какие коды выдавать на какие клавиши. Это
 настраивалось еще в telix for DOS образца 91 года.
 Для того, чтобы решить эту проблему - нам достаточно _договориться_ о том, какие
 клавиши и их комбинации будут соответствовать каким макросам ncurses - это
 наиболее важно, а также неплохо бы договориться - каким esc-последовательностям 
 будут соответствовать эти макросы.
 В начале декабря я кидал сюда в эху пример того, как создатели QNX установили
 соответствие макросов ncurses и клавишных комбинаций. К сожалению я выбрал
 неудачный момент и в связи с многочисленными праздниками обсуждение заглохло.
 Тем не менее, один из читателей эхи, Александр (2:4651/51.14), несколько
 упорядочил опубликованную мной информацию и привел ее к более удобному для
 восприятия виду. 
 Так что предлагаю всем, кто заинтересован в придании текстовому режиму Линукса
 привычных возможностей - продолжить обсуждение. Я так понимаю, что это наиболее 
 важно для авторов учетно-бухгалтерского софта, который  уже имеет свои традиции
 в области интерфейса, сложившиеся за последние 10 лет.
 
 Так может быть все-таки победим свою лень, напряжем мозги, и доделаем наконец
 механизм, позволяющий получить нужные нам возможности не создавая противоречий с
 идеологией системы?
 >===== Start cut [/tmp/terminfo.ted] =====<
 
 Area: RU.LINUX
 Date: 23 Dec 00  16:41:16
 From: Alexandr Demeshko (2:4641/51.14)
 To  : All
 Subj: Клавиатура и коды клавиш
 
 Доброздравствуйте, All.
 
 Я немного упорядочил информацию по сабжу. Hиже то что получилось. Есть вопросы
 . Всё ли правильно в первой таблице?
 Все ли комбинации-кандидаты перечислены во второй таблице? Какие terminfo-entr
 ies от qnx оставить, а какие выбросить? Чем заполнить пустые места?
 
 В таблице 1 приведены такие соответствия между клавишами и кодами terminfo, ко
 торые либо присутствуют в стандартной раскладке линукса и terminfo для linux, 
 либо не присутствуют, но очевидны (кроме функциональных клавиш).
 
 Таблица 2 - комбинации клавиш, которые, по-моему, имеет смысл заводить в termi
 nfo. Плюс поставлен для комбинаций, описанных в таблице 1. Минус для тех, кото
 рые трогать не следует. Коды terminfo взяты из ранее запощенной
 Захаром Киселёвом таблички для qnx и немного мною подправлены. Hекоторые из ни
 х очень хороши, а некоторые нет. Hапример, keypad они используют, мягко говоря
 , странно. Вопросы проставлены в клетках, которые ещё предстоит заполнить.
 
 Таблица 3 - коды клавиш из terminfo, не упоминаемые в таблице 1. Быть может, с
 ледует использовать в первую очередь коды, имеющие шифтованную пару? Hа Alt-Кл
 авишу назначать простую terminfo-entry, а на Ctrl-Клавишу -- шифтованную? Кста
 ти, таких пар осталось ровно 20. Клавиш в таблице 2 -- тоже 20.
 *Таблица 1=============================================*
 Комбинация   Код    Код   Описание
 клавиш       term   term
              info   cap
 ============ ====== ==== =============================
 <S-Tab>       kcbt   kB   back-tab key
 
 <Right>       kcuf1  kr   right-arrow key
 <S-Right>     kRIT   %i   shifted right-arrow key
 
 <PgUp>        kpp    kP   previous-page key
 <PgDn>        knp    kN   next-page key
 
 <Left>        kcub1  kl   left-arrow key
 <S-Left>      kLFT   #4   shifted left-arrow key
 
 <Ins>         kich1  kI   insert-character key
 <S-Ins>       kIC    #3   shifted insert-character key
 
 <Del>         kdch1  kD   delete-character key
 <S-Del>       kDC    *4   shifted delete-character key
 
 <Down>        kcud1  kd   down-arrow key
 <S-Down>      kind   kF   scroll-forward key
 
 <End>         kend   @7   end key
 <S-End>       kEND   *7   shifted end key
 
 <Home>        khome  kh   home key
 <S-Home>      kHOM   #2   shifted home key
 
 <Up>          kcuu1  ku   up-arrow key
 <S-Up>        kri    kR   scroll-backward key
 
 <PrtScrn>     kprt   %9   print key
 <S-PrtScrn>   kPRT   %f   shifted print key
 
 <Backspace>   kbs    kb   backspace key
 *======================================================*
 
 *Таблица 2==============================*
 Клавиша         Plain Shift Ctrl  Alt
 ==============  ===== ===== ===== =====
 <Tab>             -     +   kctab   ?
 <Backspace>       +     ?     ?     ?
 <Return>          -     ?   kent    ?
 <PrtScrn>         +     +   kRDO  krdo
 <Ins>             +     +   kil1  krmir
 <Del>             +     +   kdl1  ked
 <Home>            +     +     ?   kbeg
 <End>             +     +   kext  kel
 <PgUp>            +     -   kPRV  kprv
 <PgDn>            +     -   kNXT  knxt
 <Up>              +     +     ?     ?
 <Down>            +     +     ?     ?
 <Right>           +     +   kMOV  kmov
 <Left>            +     +   kMSG  kmsg
 <KP/>             -     ?     ?     ?
 <KP*>             -     ?     ?     ?
 <KP->             -     ?   kCAN  kSPD
 <KP+>             -     ?   kCMD  kSAV
 <KPEnter>         -     ?     ?     ?
 <KP5>           kcmd    ?   kcpy  kcrt
 *=======================================*
 
 *Таблица 3======================================*
 Код    Код   Описание
 term   term
 info   cap
 ====== ==== ===================================
 ka1    K1   upper left of keypad
 ka3    K3   upper right of keypad
 kb2    K2   center of keypad
 kc1    K4   lower left of keypad
 kc3    K5   lower right of keypad
 
 ktbc   ka   clear-all-tabs key
 kctab  kt   clear-tab key
 khts   kT   set-tab key
 
 kclr   kC   clear-screen or erase key
 kclo   @3   close key
 krmir  kM   sent by rmir or smir in insert mode
 kent   @8   enter/send key
 kf0    k0   F0 function key
 kil1   kA   insert-line key
 kll    kH   lower-left key (home down)
 kmrk   %2   mark key
 kopn   %6   open key
 kref   &1   reference key
 krfr   &2   refresh key
 krst   &4   restart key
 kslt   *6   select key
 
 kbeg   @1   begin key
 kBEG   &9   shifted begin key
 
 kcan   @2   cancel key
 kCAN   &0   shifted cancel key
 
 kcmd   @4   command key
 kCMD   *1   shifted command key
 
 kcpy   @5   copy key
 kCPY   *2   shifted copy key
 
 kcrt   @6   create key
 kCRT   *3   shifted create key
 
 kdl1   kL   delete-line key
 kDL    *5   shifted delete-line key
 
 ked    kS   clear-to-end-of-screen key
 kel    kE   clear-to-end-of-line key
 kEOL   *8   shifted clear-to-end-of-line key
 
 kext   @9   exit key
 kEXT   *9   shifted exit key
 
 kfnd   @0   find key
 kFND   *0   shifted find key
 
 khlp   %1   help key
 kHLP   #1   shifted help key
 
 kmsg   %3   message key
 kMSG   %a   shifted message key
 
 kmov   %4   move key
 kMOV   %b   shifted move key
 
 knxt   %5   next key
 kNXT   %c   shifted next key
 
 kopt   %7   options key
 kOPT   %d   shifted options key
 
 kprv   %8   previous key
 kPRV   %e   shifted previous key
 
 krdo   %0   redo key
 kRDO   %g   shifted redo key
 
 krpl   &3   replace key
 kRPL   %h   shifted replace key
 
 kres   &5   resume key
 kRES   %j   shifted resume key
 
 ksav   &6   save key
 kSAV   !1   shifted save key
 
 kspd   &7   suspend key
 kSPD   !2   shifted suspend key
 
 kund   &8   undo key
 kUND   !3   shifted undo key
 *===============================================*
 
 C уважением, Александр.
 
 --- All you need is _____ /fill in here/
  * Origin: Sweet home: adem<at>argon2<dot>zp<dot>ua (2:4641/51.14)
 
 >=====  End cut  [/tmp/terminfo.ted] =====<
  
 
  IS>>   Control применяется для генерации управляющих символов
  IS>>   (англ. control codes, откуда и название) из алфавитных, так
  IS>>   ^A == \001, ^B == \002, ..., ^Z == \032, ^[ == ESC == \033,
  IS>>   ^6 == ^^ == \036, ^7 == ^_ == \037, и тому подобное.
  IS>>   А F1 -- это вообще ^[[[A ;)
 
  DM> Тут усё от таблиц зависить....
 
  IS>>   а работа с клавой через raw-mode сделает твою прогу нерабочей
  IS>>   через терминал эмулятор или телнет, чего следует избегать.
 
  DM> Hу а в качестве расширения -- неужто-ж помешало-б?
 
  DM> -- 
  DM> DM, Дмитрий Морожников
 
 Zahar
 
 --- QDed alpha v3.57pl9.1e/Linux
  * Origin: (Empty...) (2:5030/382.1)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 using ncurses   Aleksandr V. Dyomin   12 Jan 2001 09:05:28 
 Re: using ncurses   Ilya Anfimov   12 Jan 2001 23:47:12 
 using ncurses   Zahar Kiselev   13 Jan 2001 09:59:25 
 using ncurses   Vladimir Vasiltsov   14 Jan 2001 17:16:04 
 using ncurses   Zahar Kiselev   15 Jan 2001 14:12:33 
 Re: using ncurses   Vladimir Bormotov   15 Jan 2001 23:40:13 
 Re: using ncurses   Valentin Nechayev   16 Jan 2001 14:38:05 
 Re: using ncurses   Vladimir Bormotov   16 Jan 2001 23:35:57 
 using ncurses   Zahar Kiselev   13 Jan 2001 10:15:47 
 Re: using ncurses   Ivan Shmakov   13 Jan 2001 23:46:57 
 Re: using ncurses   Dmitry Morozhnikov   17 Jan 2001 06:45:44 
 using ncurses   Zahar Kiselev   20 Jan 2001 13:59:22 
 Re: using ncurses   Dmitry Morozhnikov   21 Jan 2001 03:44:08 
 using ncurses   Zahar Kiselev   21 Jan 2001 00:57:05 
 Re: using ncurses   Dmitry Morozhnikov   23 Jan 2001 05:05:13 
 using ncurses   Zahar Kiselev   23 Jan 2001 05:17:44 
 Re: using ncurses   Dmitry Morozhnikov   24 Jan 2001 06:52:18 
 using ncurses   Zahar Kiselev   24 Jan 2001 03:56:06 
 Re: using ncurses   Dmitry Morozhnikov   25 Jan 2001 03:35:07 
 using ncurses   Zahar Kiselev   25 Jan 2001 02:16:38 
 using ncurses   Dmitry Morozhnikov   26 Jan 2001 04:44:29 
 using ncurses   Zahar Kiselev   26 Jan 2001 01:17:22 
 Re: using ncurses   Alex Korchmar   25 Jan 2001 14:14:28 
 using ncurses   Zahar Kiselev   26 Jan 2001 11:12:50 
 using ncurses   Dmitry Morozhnikov   27 Jan 2001 23:13:41 
 using ncurses   Zahar Kiselev   28 Jan 2001 18:57:18 
 using ncurses   Dmitry Morozhnikov  30 Jan 2001 02:42:08 
 using ncurses   Zahar Kiselev   23 Jan 2001 04:59:34 
 using ncurses   Alexander S Aganichev   17 Jan 2001 09:56:18 
Архивное /ru.linux/3288e9a59c12.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional