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

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

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

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

[править | править код]

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

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

[править | править код]

Каретка механической пишущей машинки представляет собой конструкцию, составленную из шасси для ударяющих по печатающей ленте молоточков с литерами на ударной стороне и держателя печатающей ленты, держащего печатающую ленту над бумагой на уровне печатаемой строки. При этом каретка пишущей машинки устанавливается на рельс, по которому горизонтально смещается в слева-направо в процессе печати очередной текстовой строки. Так вот первоначально термин «возврат каретки» относился к этому механизму, возвращающему каретку в исходное положение — в начало следующей строки. Механизм возврата каретки приводился в действие рычагом. Чаще всего рычаг также приводил в действие механизм, продвигавший бумагу на следующую строку. Электрический возврат каретки впервые появился на электромеханических пишущих машинках фирмы «Electromatic» в 1929 году. Позже эту фирму поглотила IBM и стала выпускать эти машинки под своей маркой как «IBM Electric typewriter[англ.]»[2][3]. Клавиша, выполнявшая это действие, обыкновенно обозначалась «возврат каретки» (англ. carriage return) или «возврат» (return). В других пишущих машинках, в том числе IBM Selectric, печатающая головка двигалась при печатании, а бумага оставалась неподвижной. В них эта клавиша возвращала влево печатающую головку и иногда называлась «возврат держателя» (англ. carrier return)[источник не указан 1588 дней].

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

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

[править | править код]

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

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

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

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

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

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

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

Примечания

[править | править код]
  1. Большая советская энциклопедия. — 3-е изд. — М.: «Советская энциклопедия», 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. New Zealand’s Donald Murray: The Father of the Remote Typewriter Архивная копия от 7 апреля 2018 на Wayback Machine, Australian Typewriter Museum, 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 года.