Возврат каретки
Возвра́т каре́тки — управляющий символ или механизм, используемый для возвращения позиции устройства к началу строки. Часто обозначается как CR (от англ. carriage return).
Происхождение термина
Каретка (от итал. carretta — тележка) — узел машины или механизма, несущий ряд деталей и передвигающийся по направляющим или вращающийся в подшипниках. В пишущих машинках имела вид рамки с валиком для бумаги[1].
Пишущие машинки
Каретка механической пишущей машинки представляет собой конструкцию, составленную из шасси для ударяющих по печатающей ленте молоточков с литерами на ударной стороне и держателя печатающей ленты, держащего печатающую ленту над бумагой на уровне печатаемой строки. При этом каретка пишущей машинки устанавливается на рельс, по которому горизонтально смещается в слева-направо в процессе печати очередной текстовой строки. Так вот первоначально термин «возврат каретки» относился к этому механизму, возвращающему каретку в исходное положение — в начало следующей строки. Механизм возврата каретки приводился в действие рычагом. Чаще всего рычаг также приводил в действие механизм, продвигавший бумагу на следующую строку. Электрический возврат каретки впервые появился на электромеханических пишущих машинках фирмы «Electromatic» в 1929 году. Позже эту фирму поглотила IBM и стала выпускать эти машинки под своей маркой как «IBM Electric typewriter[англ.]»[2][3]. Клавиша, выполнявшая это действие, обыкновенно обозначалась «возврат каретки» (англ. carriage return) или «возврат» (return). В других пишущих машинках, в том числе IBM Selectric, печатающая головка двигалась при печатании, а бумага оставалась неподвижной. В них эта клавиша возвращала влево печатающую головку и иногда называлась «возврат держателя» (англ. carrier return)[].
Позже для обозначения этой клавиши был введён знак ↵ (U+21B5).
Телекоммуникация, компьютеры
Управляющий символ возврата каретки ведёт свою родословную от телетайпов. В 1901 году Дональд Мюррей[англ.] сконструировал телетайп, оснащённый QWERTY-клавиатурой и способный печатать сообщение на бумажном листе. Для этого потребовалось добавить в код Бодо дополнительные управляющие символы: перевод строки (англ. line feed, LF) и возврат каретки (англ. carriage return, CR)[4].
Функции возврата каретки и перевода строки были разделены по двум причинам:
- Сам по себе возврат каретки предоставлял возможность печати новой строки поверх имеющейся. Это могло быть использовано для получения полужирного шрифта, подчёркиваний, знаков под ударением, зачёркнутого текста и некоторых составных знаков. В дальнейшем, когда принтеры стали графическими, принтер мог вернуть каретку, а потом прокрутить бумагу на любое желаемое расстояние — в том числе ровно на высоту каретки или на пол-иголки (для качественной двухпроходной печати).
- На частотах в десятки бод возврат каретки был самой длинной операцией, а буферизации, чтобы на это время приостановить печать, не было[]. Поэтому время, употреблённое на перевод строки, не было потрачено зря (нередко требовалось несколько дополнительных нажатий клавиши, прежде чем возврат каретки был произведён и можно было печатать дальше). Поэтому возврат каретки всегда производился первым, до перевода строки.
В ранних компьютерах для ввода информации использовались обычные телетайпы, однако в 1963 году специально для ввода и хранения данных компьютерами была разработана первая версия кодировки ASCII, в ней символы перевода строки и возврата каретки были перенесены на позиции 0x0A
и 0x0D
, и в последующих кодировках эти управляющие символы сохранились на тех же местах, в том числе в Юникоде.
Многие компьютерные программы используют для обозначения конца строки знак возврата каретки отдельно или вместе со знаком перевода строки, но для этой задачи используются и другие знаки; другие используют его только для разбиения абзаца. Некоторые стандарты, вводящие собственные обозначения для управления строками и абзацами (например, HTML), и многие языки программирования обрабатывают знаки возврата каретки и новой строки как пробел.
Для обозначения символа возврата каретки в некоторых программах, которые игнорируют его, если он введён напрямую, возможно использование эмуляции ввода управляющего символа с терминала — ^M (Ctrl+M). В Си и многих других языках программирования \r
обозначает возврат каретки[5]. На ранних кириллических клавиатурах соответствующая клавиша маркировалась «ВК».
Как правило клавиша возврата каретки располагается в правой части клавиатуры и она отвечает как за возврат каретки, так и за перевод строки, а также за ввод команды. В терминалах могли использоваться раздельные клавиши для возврата каретки и перевода строки, а также специальный режим, который генерировал оба этих символа. На IBM PC-совместимых и современных USB HID-клавиатурах код нажатой клавиши не привязан напрямую к генерируемому при вводе символу, за перевод скан-кодов в коды символов отвечает операционная система, поэтому генерируемый по нажатии клавиши ↵ Enter символ или последовательность управляющих символом может быть разной в разных операционных системах. В Windows это традиционно CR+LF, в Unix-подобных системах — только LF. Отсутствие единого стандарта часто приводит к проблемам, когда приходится передавать файлы между разными операционными системами[6][7][8].
Примечания
- ↑ Большая советская энциклопедия. — 3-е изд. — М.: «Советская энциклопедия», 1973. — Т. 11. — 608 с. — 629 000 экз.
- ↑ Remington and the Electromatic Архивная копия от 4 октября 2020 на Wayback Machine. Retrieved 2016-08-28
- ↑ The National Museum of American History: Electromatic Typewriter Архивная копия от 13 апреля 2019 на Wayback Machine. Retrieved 2016-08-28
- ↑ 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
- ↑ Eric S. Roberts. The Art and Science of C. — Addison-Wesley, 1995. — с. 311. (англ.)
- ↑ Этот день мы приближали, как могли — блокнот в Windows 10 стал понимать юниксовый перевод строки . Habr.com. Дата обращения: 9 августа 2020. Архивировано 13 сентября 2020 года.
- ↑ Саша Катушкова. Следите за концом строки . html academy. Дата обращения: 9 августа 2020. Архивировано 29 сентября 2020 года.
- ↑ The Great Newline Schism . CODING HORROR. Дата обращения: 9 августа 2020. Архивировано 24 сентября 2020 года.