Символ управления удалением (также называемый 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