<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>10707</bug_id>
          
          <creation_ts>2007-01-25 09:46:43 +0300</creation_ts>
          <short_desc>terminfo khome/kend mismatch with default xterm behavior</short_desc>
          <delta_ts>2007-10-31 10:33:56 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>terminfo</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>blocker</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anton Farygin">rider</reporter>
          <assigned_to name="Fr. Br. George">george</assigned_to>
          <cc>damir</cc>
    
    <cc>george</cc>
    
    <cc>ldv</cc>
    
    <cc>php-coder</cc>
    
    <cc>stanv</cc>
    
    <cc>vsu</cc>
    
    <cc>wrar</cc>
    
    <cc>zerg</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>44760</commentid>
    <comment_count>0</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2007-01-25 09:46:44 +0300</bug_when>
    <thetext>в konsole из пакета kdebase-wm-3.5.5-alt5 не отрабатывают нажатия home/end, CTRL+S.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44839</commentid>
    <comment_count>1</comment_count>
    <who name="Andrey Rahmatullin">wrar</who>
    <bug_when>2007-01-28 12:14:32 +0300</bug_when>
    <thetext>Неуж опять #2900?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49196</commentid>
    <comment_count>2</comment_count>
    <who name="Andriy Stepanov">stanv</who>
    <bug_when>2007-04-20 11:12:50 +0400</bug_when>
    <thetext>на $ date
Птн Апр 20 09:58:34 MSD 2007
С выполненным dist-upgrade, ошибка не воспроизводится

нажатия клавиш home/end, CTRL+S отрабатываются нормально.

$uname -m
x86_64

rpmquery -f /usr/bin/konsole
kdebase-wm-3.5.6-alt6
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49201</commentid>
    <comment_count>3</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2007-04-20 11:24:13 +0400</bug_when>
    <thetext>Это под новым пользователем ?

метод воспроизведения - запустить less, попробовать понажимать home/end
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49376</commentid>
    <comment_count>4</comment_count>
    <who name="Andriy Stepanov">stanv</who>
    <bug_when>2007-04-23 16:52:37 +0400</bug_when>
    <thetext>Действительно: в less не обрабатываются коректно клавиши Home/End.
В konsole в меню Настройка-&gt;Клавиатура выбран пункт &quot;XTerm (XFree 4.x.x)&quot; (по
умолчанию).

Решением установить по умолчанию другой выбор, например &quot;Xterm (XFree 3.x.x)&quot;
или &quot;Консоль Linux&quot; не целесобразно так как: перестанет работать передача
информации о модификаторах (например в ноутбуках есть модификаторы подобно NumLock).

Из
$ldd /usr/bin/less
        libtinfo.so.5 =&gt; /lib64/libtinfo.so.5 (0x00002b71e5578000)
        ...
видно что less _НЕ_ использует библиотеку libreadline. Из чего следует что
файлы /etc/inputrc и ~/.inputrc не оказывают никакого влияния на приложения типа
less (которые самостоятельно напрямик работают с terminfo).

strace показал что что в ответ на нажатие клавишы End konsole (XTerm (XFree
4.x.x)) посылает less ескейп-последовательность: ^[OF (\EOF).

Нетрудно заметить что такая ескейп последовательность определена в:
/usr/share/apps/konsole/README.default.Keytab 
...
key Home        -AnyMod     -AppCuKeys           : &quot;\E[H&quot;  
key End         -AnyMod     -AppCuKeys           : &quot;\E[F&quot;
key Home        -AnyMod     +AppCuKeys           : &quot;\EOH&quot;
key End         -AnyMod     +AppCuKeys           : &quot;\EOF&quot;
key Home        +AnyMod                          : &quot;\E[1;*H&quot;
key End         +AnyMod                          : &quot;\E[1;*F&quot;
...

То есть со стороны konsole все впорядке.

Less прочитав переменную $TERM сама пытается интерпретировать ескейп
последовательность \EOH согласно с:
$infocmp xterm
оно же:
/usr/share/terminfo/x/xterm

и не находит действия которое нужно предпринять для ескейп-последовательности \EOH.

Земетим, что в базе terminfo для $TERM==xterm определены:
kend=\E[4~
khome=\E[1~

Тут-то и ошибка.

Определения kend и khome для пакета terminfo опрделяются:
$ pwd
/home/stanv/RPM/ncurses/BUILD/ncurses-5.6
$ tar -tf ../../SOURCES/ncurses-alt.tar 
alt/
alt/rxvt.ti
alt/screen.ti
alt/xterm.ti

Т.е. нужно обновить alt/xterm.ti в пакете terminfo (ncurses) до актуального
состояния, или поправить kend/khome.
Из слов vsu:
1.
&lt;vsu&gt; выяснили, что в debian там \EOF в terminfo
2.
&lt;vsu&gt; xterm.ti происходит из какой-то версии xterm

Предлагаю перевесить багу на пакет terminfo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49378</commentid>
    <comment_count>5</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2007-04-23 17:43:59 +0400</bug_when>
    <thetext>(In reply to comment #4)
&gt; Решением установить по умолчанию другой выбор, например &quot;Xterm (XFree 3.x.x)&quot;
&gt; или &quot;Консоль Linux&quot; не целесобразно так как: перестанет работать передача
&gt; информации о модификаторах (например в ноутбуках есть модификаторы подобно
&gt; NumLock).

На самом деле имелись в виду комбинации типа Ctrl+F5 и т.п. - в варианте &quot;XTerm
(XFree 4.x.x)&quot; для таких комбинаций выдаются коды вида ^[[15;5~, где передаётся
информация о нажатии Ctrl или Shift.

&gt; Земетим, что в базе terminfo для $TERM==xterm определены:
&gt; kend=\E[4~
&gt; khome=\E[1~
&gt; 
&gt; Тут-то и ошибка.

Более того, эти коды не соответствуют даже поведению xterm (без дополнительных
настроек translations или keyboardType), и в нём Home/End в less точно так же не
работает из коробки.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49398</commentid>
    <comment_count>6</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2007-04-23 20:13:44 +0400</bug_when>
    <thetext>перевешивайте конечно. 
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49399</commentid>
    <comment_count>7</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2007-04-23 20:14:39 +0400</bug_when>
    <thetext>Точнее - перевешиваю конечно.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49420</commentid>
    <comment_count>8</comment_count>
    <who name="inger@altlinux.org">inger</who>
    <bug_when>2007-04-24 11:08:48 +0400</bug_when>
    <thetext>Наверное стоит пофиксить kconsole. Нечего изображать из себя xterm, если ты
xterm не являешься. Кстати в некоторых дистрибутивах я наблюдал, что для
kconsole есть отдельная запись в terminfo.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49421</commentid>
    <comment_count>9</comment_count>
    <who name="inger@altlinux.org">inger</who>
    <bug_when>2007-04-24 11:10:59 +0400</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Решением установить по умолчанию другой выбор, например &quot;Xterm (XFree 3.x.x)&quot;
&gt; &gt; или &quot;Консоль Linux&quot; не целесобразно так как: перестанет работать передача
&gt; &gt; информации о модификаторах (например в ноутбуках есть модификаторы подобно
&gt; &gt; NumLock).
&gt; 
&gt; На самом деле имелись в виду комбинации типа Ctrl+F5 и т.п. - в варианте &quot;XTerm
&gt; (XFree 4.x.x)&quot; для таких комбинаций выдаются коды вида ^[[15;5~, где передаётся
&gt; информация о нажатии Ctrl или Shift.
&gt; 
&gt; &gt; Земетим, что в базе terminfo для $TERM==xterm определены:
&gt; &gt; kend=\E[4~
&gt; &gt; khome=\E[1~
&gt; &gt; 
&gt; &gt; Тут-то и ошибка.
&gt; 
&gt; Более того, эти коды не соответствуют даже поведению xterm (без дополнительных
&gt; настроек translations или keyboardType), и в нём Home/End в less точно так же не
&gt; работает из коробки.

А почему у меня сейчас less работает? Система не очень давно установленная.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49427</commentid>
    <comment_count>10</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2007-04-24 12:19:44 +0400</bug_when>
    <thetext>Видимо в xterm есть отдельный мешок хаков на эту тему ;)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49428</commentid>
    <comment_count>11</comment_count>
    <who name="Andriy Stepanov">stanv</who>
    <bug_when>2007-04-24 12:24:10 +0400</bug_when>
    <thetext>Уточняю: у Ingera работают End/Home в less в xterm а не в konsole.
Это потому что: 
$ strace less /usr/share/doc/lilo-22.7.3/README.raid1 2&gt;log
read(3, &quot;\33&quot;, 1)                       = 1
write(1, &quot;\33[35;1H\33[K \33[KESC\10\10\10ESC&quot;, 23) = 23
read(3, &quot;[&quot;, 1)                         = 1
write(1, &quot;\33[K[\10[&quot;, 6)               = 6
read(3, &quot;4&quot;, 1)                         = 1
write(1, &quot;\33[K4\0104&quot;, 6)              = 6
read(3, &quot;~&quot;, 1)                         = 1

ЧИТАЕТ: \E[4~
у нас старый xterm....
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49429</commentid>
    <comment_count>12</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2007-04-24 12:30:42 +0400</bug_when>
    <thetext>xterm то у нас новый, но видимо он либо так собран, либо где-то так запатчен</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49432</commentid>
    <comment_count>13</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2007-04-24 12:53:49 +0400</bug_when>
    <thetext>Оказывается, в /etc/X11/Xresources у нас написано:

! Suppr support.
*VT100.Translations: #override \
&lt;Key&gt;BackSpace: string(0x7F)\n\
&lt;Key&gt;Delete: string(&quot;\033[3~&quot;)\n\
&lt;Key&gt;Home: string(&quot;\033[1~&quot;)\n\
&lt;Key&gt;End: string(&quot;\033[4~&quot;)

BackSpace вроде бы лучше настраивать через *VT100.backarrowKeyIsErase: true;
Delete ведёт себя так по умолчанию; настройки Home и End таким образом портят их
работу совместно с модификаторами (в частности, kEND=\E[1;2F, kHOM=\E[1;2H,
описанные в terminfo, после этого уже не получить).

В принципе можно объявить, что Home и End в xterm у нас обязаны выдавать \033[1~
и \033[4~ (как было по умолчанию в каких-то старых версиях xterm), только тогда
лучше писать

*VT100.Translations: #override \
 ~Ctrl ~Shift ~Meta &lt;Key&gt;Home:	string(&quot;\033[1~&quot;)\n\
 ~Ctrl ~Shift ~Meta &lt;Key&gt;End:	string(&quot;\033[4~&quot;)

(чтобы при использовании модификаторов выдавались коды вида \033[1;2H).

В этом случае нужно патчить все остальные эмуляторы терминалов, заявляющие по
умолчанию тип xterm, и после xrdb /dev/null клавиши Home/End в настоящем xterm
не будут работать правильно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49439</commentid>
    <comment_count>14</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2007-04-24 15:33:42 +0400</bug_when>
    <thetext>видимо всё-таки надо патчить terminfo и xterm
чем все остальные терминалы
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49447</commentid>
    <comment_count>15</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2007-04-24 16:36:51 +0400</bug_when>
    <thetext>Патчить xterm как раз не надо - надо оторвать лишнее из app-defaults, после чего
поведение xterm в области Home/End будет совпадать с konsole (при выбранном типе
терминала &quot;XTerm (XFree 4.x.x)&quot;).

Кстати, в bug #11067 всплыла информация о том, что новый xterm-225 может быть
собран так, чтобы получать информацию о том, какие коды от него ожидаются, из
базы terminfo (хотя установка translations всё равно это сломает). Неприятность
только в том, что в таком режиме фактически отламывается переключение
normal/application mode для таких клавиш.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49452</commentid>
    <comment_count>16</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2007-04-24 17:55:50 +0400</bug_when>
    <thetext>Помимо xterm и konsole, TERM=xterm также выставляется в gnome-terminal; там
libvte берёт коды клавиш из описания terminfo, поэтому проблема с
несоответствием описания реальности отсутствует. Впрочем, Shift+Home и Shift+End
там не передаются в терминал, прочие модификаторы игнорируются.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49487</commentid>
    <comment_count>17</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2007-04-25 13:32:30 +0400</bug_when>
    <thetext>Стас, видимо всё-таки надо обновлять terminfo.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49489</commentid>
    <comment_count>18</comment_count>
    <who name="inger@altlinux.org">inger</who>
    <bug_when>2007-04-25 13:47:38 +0400</bug_when>
    <thetext>Посмотрю, поэкспериментирую. Вообще последняя ремарка про gnome-terminal в
очередной раз подтверждает что kde - остой и самое лучшее решение - отдельный
терминал. Или мы так и будем всё время с ним мучаться?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57168</commentid>
    <comment_count>19</comment_count>
    <who name="inger@altlinux.org">inger</who>
    <bug_when>2007-10-30 17:54:07 +0300</bug_when>
    <thetext>кажется это было исправлено
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57211</commentid>
    <comment_count>20</comment_count>
    <who name="Slava Semushin">php-coder</who>
    <bug_when>2007-10-31 10:33:56 +0300</bug_when>
    <thetext>(In reply to comment #19)
&gt; кажется это было исправлено

Проверил работу клавиш Home/End -- у меня работает (проверял проматывая man в
aterm/xterm в bash/zsh). Единственно, что у меня less последний и не из Сизифа:

[c0der@rock ~]$ rpm -q xterm aterm less terminfo
xterm-229-alt2
aterm-1.0.0-alt4
less-409-alt0
terminfo-5.6-alt4
bash-3.1.17-alt2
zsh-4.3.4-alt3

Локаль CP1251, если это важно.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>