Возврат каретки

Материал из Википедии — свободной энциклопедии

Возвра́т каре́тки — управляющий символ или механизм, используемый для возвращения позиции устройства к началу строки. Часто обозначается как CR (от англ. carriage return).

Происхождение термина

Каретка (от итал. carretta — тележка) — узел машины или механизма, несущий ряд деталей и передвигающийся по направляющим или вращающийся в подшипниках. В пишущих машинках имела вид рамки с валиком для бумаги[1].

Пишущие машинки

Первоначально термин «возврат каретки» относился к механизму или рычагу на

IBM Selectric, печатающая головка двигалась при печатании, а бумага оставалась неподвижной. В них эта клавиша возвращала влево печатающую головку и иногда называлась «возврат держателя» (англ. carrier return)[источник не указан 1383 дня
].

Позже для обозначения этой клавиши был введён знак ↵ (U+21B5).

Телекоммуникация, компьютеры

Управляющий символ возврата каретки ведёт свою родословную от телетайпов. В 1901 году Дональд Мюррей[англ.] изобрёл телетайп, оснащённый QWERTY-клавиатурой и способный печатать сообщение на бумажном листе. Для этого требовалось добавить в код Бодо дополнительные символы: LF (перевод строки, код 02) и CR (возврат каретки, код 08)[4].

Функции возврата каретки и перевода строки были разделены по двум причинам:

  • Сам по себе возврат каретки предоставлял возможность печати новой строки поверх имеющейся. Это могло быть использовано для получения полужирного шрифта, подчёркиваний, знаков под ударением, зачёркнутого текста и некоторых составных знаков. В дальнейшем, когда принтеры стали графическими, принтер мог вернуть каретку, а потом прокрутить бумагу на любое желаемое расстояние — в том числе ровно на высоту каретки или на пол-иголки (для качественной двухпроходной печати).
  • На частотах в десятки бод возврат каретки был самой длинной операцией, а буферизации, чтобы на это время приостановить печать, не было[источник не указан 1293 дня]. Поэтому время, употреблённое на перевод строки, не было потрачено зря (нередко требовалось несколько дополнительных нажатий клавиши, прежде чем возврат каретки был произведён и можно было печатать дальше). Поэтому возврат каретки всегда производился первым, до перевода строки.

В ранних компьютерах для ввода информации использовались обычные телетайпы, однако в 1963 году специально для ввода и хранения данных компьютерами была разработана первая версия кодировки ASCII, в ней символы перевода строки и возврата каретки были перенесены на позиции 0x0A и 0x0D, и в последующих кодировках эти управляющие символы сохранились на тех же местах, в том числе в Юникоде.

Многие компьютерные программы используют для обозначения конца строки знак возврата каретки отдельно или вместе со знаком перевода строки, но для этой задачи используются и другие знаки; другие используют его только для разбиения абзаца. Некоторые стандарты, вводящие собственные обозначения для управления строками и абзацами (например, HTML), и многие языки программирования обрабатывают знаки возврата каретки и новой строки как пробел.

Для обозначения символа возврата каретки в некоторых программах, которые игнорируют его, если он введён напрямую, возможно использование эмуляции ввода управляющего символа с терминала^M (Ctrl+M). В Си и многих других языках программирования \r обозначает возврат каретки[5]. На ранних кириллических клавиатурах соответствующая клавиша маркировалась «ВК».

Как правило клавиша возврата каретки располагается в правой части клавиатуры и она отвечает как за возврат каретки, так и за перевод строки, а также за ввод команды. В терминалах могли использоваться раздельные клавиши для возврата каретки и перевода строки, а также специальный режим, который генерировал оба этих символа. На IBM PC-совместимых и современных USB HID-клавиатурах код нажатой клавиши не привязан напрямую к генерируемому при вводе символу, за перевод скан-кодов в коды символов отвечает операционная система, поэтому генерируемый по нажатии клавиши Enter символ или последовательность управляющих символом может быть разной в разных операционных системах. В Windows это традиционно CR+LF, в Unix-подобных системах — только LF. Отсутствие единого стандарта часто приводит к проблемам, когда приходится передавать файлы между разными операционными системами[6][7][8].

Примечания

  1. Советская энциклопедия
    », 1973. — Т. 11. — 608 с. — 629 000 экз.
  2. Remington and the Electromatic Архивная копия от 4 октября 2020 на Wayback Machine. Retrieved 2016-08-28
  3. The National Museum of American History: Electromatic Typewriter Архивная копия от 13 апреля 2019 на Wayback Machine. Retrieved 2016-08-28
  4. Canberra
    , 9 March 2012; accessed 10 March 2012
  5. Eric S. Roberts. The Art and Science of C. — Addison-Wesley, 1995. — с. 311. (англ.)
  6. Этот день мы приближали, как могли — блокнот в Windows 10 стал понимать юниксовый перевод строки. Habr.com. Дата обращения: 9 августа 2020. Архивировано 13 сентября 2020 года.
  7. Саша Катушкова. Следите за концом строки. html academy. Дата обращения: 9 августа 2020. Архивировано 29 сентября 2020 года.
  8. The Great Newline Schism. CODING HORROR. Дата обращения: 9 августа 2020. Архивировано 24 сентября 2020 года.