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

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

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

Происхождение термина[править | править код]

Typewriter Adler No. 7 (6).jpg

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

Пишущие машинки[править | править код]

Carriage return key of Consul typewriter.jpg

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

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

Телекоммуникация, компьютеры[править | править код]

Oxygen480-actions-key-enter.svg

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

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

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

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

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

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

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

Примечания[править | править код]

  1. Большая советская энциклопедия. — 3-е изд. — М.: «Советская энциклопедия», 1973. — Т. 11. — 608 с. — 629 000 экз.
  2. Remington and the Electromatic. Retrieved 2016-08-28
  3. The National Museum of American History: Electromatic Typewriter. Retrieved 2016-08-28
  4. New Zealand’s Donald Murray: The Father of the Remote Typewriter, 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.
  7. Саша Катушкова. Следите за концом строки. html academy.
  8. The Great Newline Schism. CODING HORROR.