Ввод символов и командной строки с клавиатуры

5.4.3. Ввод символов и командной строки с клавиатуры

 

Ввести с клавиатуры символ расширенного кода ASCII в выполняемую в данный момент программу можно одним из следующих способов:

1) путем нажатия соответствующей клавиши пишущей машинки на клавиатуре, находящейся на нижнем или верхнем регистре, либо клавиши на малой цифровой клавиатуре, когда она установлена в режим ввода чисел (Caps Lock включен), либо служебной клавиши (см. табл. 5.14);

2) путем нажатия комбинации Ctrl-кл, соответствующей символу, где кл является клавишей пишущей машинки или определенной служебной клавишей (см. табл. 5.14);

3) путем нажатия клавиши Alt, набора расширенного кода ASCII в десятичной системе счисления на малой цифровой клавиатуре и последующего отпускания клавиши Alt.

Способы ввода символов перечислены в порядке увеличения универсальности и одновременно усложнения работы пользователя. Исключение из этого правила состоит в том, что второй способ нельзя считать универсальнее первого.

Первым способом могут быть введены все символы пишущей машинки и четыре управляющих символа, а именно: ESC, BS, НТ (TAB) и CR. Если к DOS подключен соответствующий драйвер клавиатуры, то можно ввести и другие символы из расширенного набора ASCII, в частности, символы кириллицы или псевдографические символы. Клавиатуры и драйверы клавиатур оте­чественных ПЭВМ обеспечивают ввод букв кириллицы без каких-либо усилий со стороны пользователя.

Вторым способом можно ввести любой управляющий символ ASCII, за исключением NUL. Комбинация Ctrl-кл, где кл — одна из клавиш А — Z, [, \, ], *л и —, обеспечивает ввод символа, код ASCII которого меньше кода ASCII символа кл на 40Н. Например, код ASCII символа G равен 47Н. Тогда путем нажатия комбинации Ctrl-G будет введен символ с кодом 47Н — 40Н = 07Н, т.е. символ BEL (звонок). Комбинация Ctrl-BS вводит управляющий символ ASCII DEL, a Ctrl-Enter — символ ASCII LF, хотя последний можно задать и как Ctrl-J. Эти комбинации (Ctrl-BS и Ctrl-Enter), а также комбинация Ctrl-@ не подчиняются приведенному правилу. Так, Ctrl-® выдает расширенный код клавиши 0;3.

Третий способ обеспечивает ввод любого ASCII-символа, за исключением NUL, путем явного задания его кода в десятичной системе счисления. Чтобы драйвер распознал такой способ ввода символа, код последнего набирается на фоне нажатой клавиши Alt. Например, если требуется ввести символ , то нужно нажать клавишу Alt и, удерживая ее, на малой цифровой клавиатуре набрать число 186 (т.е. ВАН), после чего отпустить клавишу Alt. Вслед за этим на экране дисплея появится требуемый символ, если отображение пользовательского ввода (эхо-отображение) обеспечивается. Такой способ ввода символов мы будем обозначать через Alt-{n}, где n—десятичный код символа

Код введенного одним из перечисленных способов символа заносится в буфер клавиатуры, из которого выполняемая программа, используя средства DOS, в состоянии его прочитать. Поэтому, чтобы ввести символ, нет необходимости завершать это действие нажатием клавиши Enter. Однако часто программы, в том числе DOS, требуют ввода строки символов, т.е. не продолжают свою работу, пока в буфере клавиатуры не появится маркер конца строки — символ CR. В таких случаях ввод символа или последовательности символов должен завершаться нажатием клавиши Enter.

Каждый введенный с клавиатуры символ, как правило, немедленно отображается на экране дисплея в позиции курсора. Однако имеется возможность специфицировать в программе ввод символов без эхо-отображения на экране.

Пользователю и программисту часто приходится иметь дело с задействованными в ПЭВМ управляющими символами ASCII, которые представлены в табл. 5.15, где приведены обозначение каждого символа, его графическое изображение, код, назначение и различные варианты ввода.

Многие программные продукты, в том числе и DOS, реагируют на приведенные управляющие символы по-особому. Поэтому отнюдь не всегда и не все символы можно увидеть в виде изображения на экране после их ввода с клавиатуры. Чаще эти символы наблюдаются при копировании текстового файла на экран дисплея. Сделанные замечания относительно особой роли управляющих символов распространяются и на принтер. Вместе с тем некоторыми управ­ляющими символами обычно можно пользоваться в качестве псевдографических (см. табл. 5.16). Тем не менее при записи таких символов в текстовый файл можно столкнуться с определенными трудностями. Если таковые возникнут, то воспользуйтесь встроенным редактором оболочки Norton Commander или даже шестнадцатеричным редактором утилиты Disk Editor. Следует иметь в виду, что внешние драйверы принтеров, поддерживающие кириллицу, зачастую ликвидируют возможность псевдографического использования некоторых управляющих символов. При воз­никновении таких ситуаций проблему можно решить путем преобразования текстового файла в графический формат (например, PCX) и последующей его печати на принтере в графическом режиме. В данном случае символы печатаются по точкам и поэтому никакого управляющего воздействия на принтер не оказывают.

Сведения, достаточные для ввода псевдографических символов расширенного кода ASCII, были уже представлены в табл. 5.8. При этом (за исключением стрелок — см. дополнительно табл. 5.16) возможно использование только комбинации Alt-{n}, где п — код символа.

Ввод командной строки в ответ на приглашение DOS осуществляется следующим образом. Пользователь на клавиатуре последовательно набирает символы командной строки. Обычно каждый напечатанный символ отображается на экране дисплея в позиции курсора, а сам курсор после этого смещается на одну позицию вправо. Поэтому на экране можно видеть уже набранную часть командной строки. Целесообразно поглядывать на экран с целью своевременного обна­ружения ошибок. Если выяснилось, что набранную часть командной строки требуется отредак­тировать, то это можно сделать одним из следующих способов:

1) нажать клавишу Esc, в результате чего ввод всей командной строки будет отменен и можно будет начать набор командной строки заново;

Таблица  5.15

Задействованные  в  ПЭВМ управляющие  символы ASCII

 

Обозна­чение

Гра­фиче­ское изоб­раже­ние

Код

Назначение

Варианты ввода с клавиа­туры

16-й

10-й

MUL (пустой символ)

нет

00

0

признак конца символьной строки

нет

BEL (звонок)

*

07

7

выдача звукового сигнала при выводе на экран дисплея или принтер

Ctrl-G, Alt-<7>

BS (возврат на одну позицию)

 

08

8

стирание введенного последним символа

BS,

Ctrl-H, Alt-<8>

НТ (ТАВ) (горизо­нтальная табуля­ция)

о

09

9

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

Tab,

Ctrl-I,

Alt-<9>

LF (перевод строки)

0A

10

совместно с предшествующим СВ - Признак кон­ца строки текстового файла; переход к теку­щей позиции следующей строки при выводе на экран или принтер

Ctrl--Enter, Ctrl-J, Alt-<10>

FF (перевод формата)

9

0С

12

признак конца страницы текстового файла; при выводе на принтер — прогон бумаги до начала следующей страницы

Ctrl-L, Alt-<l2>

CR (возврат каретки)

г

0D

13

признак конца строки текстового файла; пере­ход к первой позиции следующей строки при выводе на экран или текущей строки при выводе на принтер

Enter,

Ctrl-n,

Alt-<13>

SUB (подста­новка)

1A

26

признак конца текстового файла;  завершение ввода текстового файла с клавиатуры

Ctrl-Z, Alt-<26>

ESC (пере­ход)

«-

1B

27

выход из подменю или программы; отмена ка­ких—либо действий; признак начала управляю­щей последовательности (Ехсаре - последовательности)

Esc,

Ctrl-C,

Alt-<27>

 

2) нажать клавишу BS, вследствие чего последний набранный символ командной строки будет стерт, курсор сместится на одну позицию влево, а ввод строки можно будет продолжить.

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

Для разделения элементов командной строки обычно используется символ SP (пробел), вводимый путем нажатия клавиши Space. Однако можно использовать и символ TAB (клавиша Tab).

Ввод командной строки завершается нажатием клавиши Enter. После этого она начинает обрабатываться КП DOS. Если введена ошибочная командная строка, то пользователь ничего не сможет сделать до появления на экране сообщения

 

Bad command or file name

(Ошибочная команда или ошибочное имя файла)

 

При получении такого сообщения можно набрать и ввести корректную командную строку заново. Если она слишком длинная, то работа пользователя замедляется. Для устранения этого недостатка DOS сохраняет введенную последней командную строку в специальном буфере, содержимое или часть содержимого которого может быть извлечено, отредактировано и повторно введено. Для выполнения этих действий используются функциональные клавиши. Более подробно на этом мы останавливаться не будем, так как имеются специальные внешние драйверы кла­виатуры (например, DOSEDIT.COM), которые обладают более богатыми возможностями. Такой драйвер хранит в стеке (в обратном порядке) несколько введенных последними командных строк, каждую из которых можно извлечь на экран дисплея путем последовательных нажатий клавиши t» после этого, возможно, отредактировать с использованием клавиш управления курсором на малой.

Таблица  5.16

Управляющие  символы ASCII, допустимые в качестве псевдографики

 

обо-

зна-

чение

графи-

ческое

изображение

код

отображе-

ние при

копирова-

нии на con

печать на

принтере

варианты ввода с

клавиатуры

16-й

10-й

soh

01

1

есть

есть

ctrl-а,    alt-<1>

stx

02

2

есть

есть

ctrl,    alt-<2>

етх

03

3

есть

есть

ctrl-с,    alt-<3>

eot

04

4

есть

есть

ctrl-d,    alt-<4>

enq

05

5

есть

есть

ctrl,    alt -<5>

аск

06

6

есть

есть

ctrl-f,    alt -<6>

so

0е

14

есть

нет

ctrl-n,   alt -<14>

si

*

0f

15

есть

нет

ctrl-0,     alt-<15>

dle

10

16

есть

есть

 

ctrl-p,     alt-<16>

dc1

11

17

есть

есть

ctrl-q,   alt -<17>

dc2

12

18

есть

нет

ctrl-r,   alt -<18>

dc3

13

19

есть

нет

ctrl-s,   alt -<19>

dc4

14

20

есть

нет

ctrl-t,   alt -<20>

nак

§

15

21

есть

есть

 

ctrl-u,    alt-<21>

syn

16

22

есть

есть

ctrl-m,   alt-<22>

etb

 

17

23

есть

есть

ctrl-w,   alt-<23>

can

18

24

есть

нет

ctrl,   alt -<24>

em

19

25

есть

есть

ctrl-y,   alt -<25>

fs

 

28

есть

есть

ctrl-\,      alt-<28>

gs

1d

29

есть

есть

ctrl-],      alt-<29>

rs

30

есть

есть

 

ctrl-^,     alt-<30>

us

1f

31

есть

есть

ctrl-_,     alt-<31>

 

цифровой клавиатуре и клавиши BS, а затем повторно ввести нажатием клавиши Enter. Анало­гичные возможности предоставляют и оболочки DOS, в частности Norton Commander.

Отменить выполнение ошибочно введенной, но корректной командной строки можно путем нажатия комбинации клавиш Ctrl-Break.

Обычно командная строка не должна занимать более одной строки на экране дисплея. Зачастую пользователю это ограничение не мешает. Если же все-таки требуется ввести слишком длинную командную строку, то для перехода на следующую физическую строку без выдачи кода CR следует ввести код LF путем нажатия Ctrl-Enter или Ctrl-J (но при этом не следует забывать о том, что символ LF не является разделителем полей командной строки).