Bug 21731

Summary: Плохое поведение клавиши backspace в xterm + kde4
Product: Sisyphus Reporter: Denis Kirienko <dk>
Component: xtermAssignee: Fr. Br. George <george>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: george, vsu
Version: unstable   
Hardware: all   
OS: Linux   

Description Denis Kirienko 2009-09-25 22:09:28 MSD
Клавиша backspace работает неправильно (не приводит к стиранию введенного символа, а вместо этого выдает символ 0x08), если запустить консольное приложение в xterm под KDE-4.

Пример сессии в xterm под kde4:

$ cat
test^H^H^H

Здесь ^H^H^H - это три раза нажатая клавиша BACKSPACE, которая
вместо стирания символа пишет такой мусор. При этом если сейчас
завершить ввод нажатием Ctrl-D, то cat выведет вместо каждого нажатого
BACKSPACE символ 0x08 (это не видно в окне терминала, но обнаруживается,
если перенаправить вывод в файл).

Прочие терминалы - konsole, gnome-terminal работают в KDE4 нормально.

Также нормально xterm работает в gnome.
Comment 1 Slava Semushin 2009-09-26 21:13:43 MSD
Предлагаю обсудить в devel@ и совместно найти решение: http://lists.altlinux.org/pipermail/devel/2009-September/175307.html
Comment 2 Slava Semushin 2009-09-27 11:57:35 MSD
Очень похоже на http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=547443
Comment 3 Andrey Rahmatullin 2009-09-27 16:33:36 MSD
$ echoti kbs | xxd     
0000000: 7f                                       .

Т.е. мимо.
Comment 4 Slava Semushin 2009-10-13 21:17:59 MSD
Денис, добавьте, пожалуйста, в ~/.Xdefaults следующую строку:

XTerm*deleteIsDel: true

После этого выполните:

xrdb -merge ~/.Xdefaults

И снова попробуйте воспроизвести баг.
Comment 5 Denis Kirienko 2009-10-13 21:31:26 MSD
Файла ~/.Xdefaults у меня не было, я создал такой файл и добавил указанную строчку. После выполнения xrdb -merge ~/.Xdefaults бага всё равно воспроизводится.
Comment 6 Slava Semushin 2009-10-13 21:36:29 MSD
(В ответ на комментарий №5)
ОК. Тогда попробуйте запустить xterm с опций -ie. Воспроизводится?
Comment 7 Sir Raorn 2009-10-13 21:42:50 MSD
После xrdb -merge надо запустить новый xterm.  Так, на всякий случай.
Comment 8 Denis Kirienko 2009-10-13 21:45:06 MSD
> Тогда попробуйте запустить xterm с опций -ie. Воспроизводится?

Да, воспроизводится.

Этот совет связан с предыдущим или нет?
Comment 9 Denis Kirienko 2009-10-13 21:45:46 MSD
(В ответ на комментарий №7)
> После xrdb -merge надо запустить новый xterm.  Так, на всякий случай.

Да я по-всякому пробовал, и так тоже. Всегда воспроизводится.
Comment 10 Slava Semushin 2009-10-13 21:50:59 MSD
(В ответ на комментарий №8)
> > Тогда попробуйте запустить xterm с опций -ie. Воспроизводится?
> 
> Да, воспроизводится.
> 
> Этот совет связан с предыдущим или нет?

Нет, не связан.

Тогда вот ещё варианты (тоже не связанные):
- попробовать xterm +ie
- попробовать с ресурсом XTerm*backarrowKeyIsErase: true
Comment 11 Denis Kirienko 2009-10-13 21:58:25 MSD
Это всё не помогло.

А вот я сейчас сделал такой файл:

xterm*deleteIsDel: true
xterm*backarrowKeyIsErase: true

И вот это - помогло.

Сейчас попробую разобраться, какой именно параметр необходим из этих двух.
Comment 12 Slava Semushin 2009-10-13 22:00:21 MSD
(В ответ на комментарий №11)
> Сейчас попробую разобраться, какой именно параметр необходим из этих двух.

Полагаю, что первый.
Comment 13 Denis Kirienko 2009-10-13 22:31:35 MSD
(В ответ на комментарий №12)
> Полагаю, что первый.

Нет, всё-таки второй :)

Я не разбираюсь в этих xrdb и Xresources, поэтому просто опишу наблюдения.

В настоящий момент баг воспроизводится при любом способе вызова xterm.

Как баг можно исправить? Записываем в текстовый файл строчку:

xterm*backarrowKeyIsErase: true

Запускаем xrdb -merge <имя_файла>

После этого, как эти действия были выполнены и до конца сеанса KDE4 происходит следующее:

1. Если запустить xterm из меню KDE4, или при помощи "Выполнить команду" в KDE4, то запустится xterm с серым фоном, в котором баг воспроизводится ВСЕГДА.

2. Если запустить xterm из другого xterm, то запущенный xterm будет иметь белый фон, и в нем баг уже не воспроизводится.

3. Если из KDE4 запустить другой терминал, например, Konsole или gnome-terminal, то запущенный xterm будет иметь белый фон и в нем баг не воспроизводится.

Как сделать так, чтобы баг не воспроизводился даже на первом xterm, запущенном из меню KDE, я не знаю.
Comment 14 Sergey Vlasov 2010-09-21 18:17:06 MSD
(В ответ на комментарий №13)
> xterm*backarrowKeyIsErase: true
> 
> Запускаем xrdb -merge <имя_файла>
> 
> После этого, как эти действия были выполнены и до конца сеанса KDE4 происходит
> следующее:
> 
> 1. Если запустить xterm из меню KDE4, или при помощи "Выполнить команду" в
> KDE4, то запустится xterm с серым фоном, в котором баг воспроизводится ВСЕГДА.
> 
> 2. Если запустить xterm из другого xterm, то запущенный xterm будет иметь белый
> фон, и в нем баг уже не воспроизводится.

Дело в том, что в файле /usr/share/applications/xterm.desktop указан запуск не просто xterm:

Exec=xterm -name XTerm

Поэтому ресурсы с именем "xterm" к запущенной таким образом копии не применяются; применяются ресурсы для имени "XTerm" (задавать такое имя, вообще говоря, неправильно - обычно эти имена, в отличие от классов, пишутся строчными буквами) и класса "UXTerm" (если используется локаль с кодировкой UTF-8).
Comment 15 Repository Robot 2010-10-23 03:02:20 MSD
xterm-264-alt1 -> sisyphus:

* Thu Oct 21 2010 Fr. Br. George <george@altlinux> 264-alt1
- Autobuild version bump to 264
- Backspace is sending "stty erase" by default (closes: #21731)