stringtranslate.com

Удалить символ

Символ управления удалением (также называемый DEL или rubout ) — последний символ в репертуаре ASCII с кодом 127 . [1] Он не должен ничего делать и был разработан для стирания неправильных символов на бумажной ленте . Он обозначается как ^? в нотации с кареткой и U+007F в Unicode .

Эмуляторы терминала могут выдавать DEL при нажатии ← Backspaceклавиши + или + .Control← BackspaceControl?

История

Этот код изначально использовался для обозначения удаленных символов на перфоленте , поскольку любой символ можно было заменить на все единицы, пробив отверстия везде. Если символ был пробит ошибочно, то пробивка всех семи бит приводила к игнорированию или удалению этой позиции. [2] [3] В шестнадцатеричном формате это 7F для стирания 7 бит ( FF для стирания 8 бит использовалось для 8-битных кодов). Этот символ также можно было использовать в качестве заполнения для замедления печати после новых строк, хотя чаще использовался нулевой NUL .

Телетайп модели 33 имел клавишу, помеченную для перфорации этого символа (после того, как пользователь делал резервную копию ленты с помощью другой кнопки), и не имел клавиши, которая производила символ Backspace (BS). Поэтому ряд менее дорогих компьютерных систем, которые использовали телетайпы, использовали эту клавишу (и, следовательно, код Delete) для игнорирования предыдущего неправильно набранного символа. Видеотерминалы, разработанные для замены телетайпа, затем должны были разместить клавишу, которая производила этот код там, где ожидалось бы нажатие Backspace, в частности, в продуктах от Digital Equipment Corporation . На терминалах, совместимых с VT100 , этот символ генерируется клавишей, помеченной . [4] [5] На более поздних терминалах, таких как VT510 , клавиша помечена (называемая backarrow в руководстве [6] ) и по умолчанию отправляла DEL, но могла быть настроена на отправку BS.RUB OUTDelete

Другие терминалы, разработанные для систем, не имевших истории использования телетайпов, обычно заставляли клавишу в этой позиции отправлять BS, что приводило к большой путанице. В частности, у Unix была раздражающая проблема, заключающаяся в том, что его можно было запрограммировать на стирание предыдущего символа только для одного из них (не для обоих), что требовало от пользователя перенастройки драйвера терминала для каждой марки терминала. В зависимости от типа терминала, который использовал разработчик, программное обеспечение иногда заставляло сочетания клавиш + или + выполнять какие-либо действия, даже если они отправляли тот же код, что и BS и DEL, предполагая, что клавиша backspace отправляла другой код.CtrlHCtrl?

Клавиша, помеченная как отправляющая BS, является наиболее распространенной на современных терминалах и эмуляторах. Чтобы убедиться, что они не удаляют в обратном направлении, клавиша, помеченная как "Delete" на многих терминалах, не отправляет DEL, а вместо этого отправляет escape-последовательность , например . [7]Backspace ←^[[3~

Текущее использование

Unix-подобные операционные системы по-прежнему могут использовать его в качестве символа стирания , т. е. для удаления предыдущего символа в режиме строки . Драйвер терминала по-прежнему не может быть запрограммирован на прием и этого, и Backspace: необходимо выбрать один из них. Однако большинство современных программ обходят это и используют библиотеки, такие как readline , которые принимают оба кода. Большинство эмуляторов терминала Unix можно настроить на отправку Delete или Backspace при нажатии клавиши Backspace. [ необходима цитата ]

DOS / Windows никогда не использовали этот символ каким-либо образом. Драйвер клавиатуры BIOS выдавал Backspace при нажатии клавиши Backspace и NUL с кодом сканирования 0x53 при нажатии клавиши Delete. [8] В Windows клавиша Delete сопоставляется с VK_DELETE (0x2E). [9] Шрифты EGA/VGA , как шрифты, используемые консолью Win32 , обычно имеют символ «дома» ⌂ в кодовой точке 127 (0x7F), подробности см . на странице Код 437. Однако его наследие можно увидеть в некоторых частях операционной системы Windows: например, + в Microsoft Notepad использовался для вставки символа Delete [10] , пока в 2018 году он не был изменен, чтобы удалить предыдущее слово. [11]Control← Backspace

Смотрите также

Ссылки

  1. Винт Серф (16 октября 1969 г.). Формат ASCII для сетевого обмена. IETF . doi : 10.17487/RFC0020 . RFC 20.
  2. ^ Роберт С. Мартин (2011). Чистый кодер: Кодекс поведения профессиональных программистов. Pearson Education . ISBN 9780132542883.
  3. LaFarr (18 августа 2006 г.). «Первый обрабатываемый ввод-вывод на основе бумажной ленты».
  4. ^ "Семейство видеотерминалов VT100". vt100.net.
  5. ^ "VT100 User Guide - Глава 3 – Таблица 3-4 Коды функциональных клавиш". vt100.net. Архивировано из оригинала 2016-03-14 . Получено 2015-04-12 .
  6. ^ "Информация о программировании видеотерминала VT510 – Глава 5 – Функции управления ANSI". vt100.net.
  7. ^ "Информация о программировании видеотерминала VT510 – Глава 8 – Обработка клавиатуры". vt100.net. Архивировано из оригинала 2016-03-04 . Получено 2015-04-12 .
  8. ^ "Комбинации кодов сканирования клавиатуры/символьных кодов - PC DOS Retro". Архивировано из оригинала 2020-05-01 . Получено 2020-04-19 .
  9. ^ «Виртуальные коды клавиш (Winuser.h) — приложения Win32». 22 июня 2022 г.
  10. ^ «Сочетания клавиш — Поведение CTRL-Backspace в Блокноте».
  11. ^ «Новый и улучшенный блокнот Windows 10: полезные советы и функции». 23 ноября 2018 г.