[devel] Xterm #21731 -- ^H или ^?

George V. Kouryachy george на altlinux.org
Вт Сен 21 08:43:16 UTC 2010


Привет всем.

Разгребая баги (да-да, меня не было в этой реальности quite a lot)
наткнулся вот на такую, доставшуюся мне по наследству вместе с XTerm.

https://bugzilla.altlinux.org/show_bug.cgi?id=21731

Обсуждение можно не читать, суть такая, что в Linux xterm почему-то
обязан при нажатии клавиши BackSpace возвращать не символ BackSpace
(^H), а Delete (^?).

Это прописано в terminfo (см infocmp xterm): соответственно, экранные
программы ожидают, что KBS будет ^?. Это устанавливается в терминальной
линии (см. stty -a). Один только xterm не желает с этим считаться, и по
умолчанию при нажатии на BaskSpace посылает BackSpace. Потому что так
делается во всём цивилизованном мире :).

Способы лечения.
1. Нажимать вместо BaskSpace Ctrl+BaskSpace :)
2. stty erase=^H
3. Ctrl+левая кнопка мыши -> BackArrow key (BS/DEL)
4. Перебить системный ресурс backArrowKey, чтобы всегда был ^?
   Потеряется совместимость с другими системами
5. Перебить системный ресурс backarrowKeyIsErase, чтобы при старте
   XTerm-а backarrow принимала значение, равное stty-му erase.
   Потеряется совместимость с другими системами, появится момент
   неопределённости

Лично я за последний вариант. Мало ли что. А если кому-то хочется, чтобы
Erase был всё-таки ^H, используйте xterm -tn xterm-color, для него в
terminfo kbs=^H. А stty делайте сами :).

У меня стоит в .zshrc: stty erase `echotc kb`

Если никто не против, я попатчу app-defaults/XTerm.

-- 
			George V. Kouryachy (aka Fr. Br. George)
			mailto:george at altlinux_org


Подробная информация о списке рассылки Devel