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 |
* |
|
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 |
|
1с |
28 |
есть |
есть |
ctrl-\, alt-<28> |
gs |
↔ |
1d |
29 |
есть |
есть |
ctrl-], alt-<29> |
rs |
▲ |
1е |
30 |
есть |
есть |
ctrl-^,
alt-<30> |
us |
▼ |
|
31 |
есть |
есть |
ctrl-_, alt-<31> |
цифровой клавиатуре и клавиши BS, а затем повторно ввести нажатием клавиши Enter. Аналогичные возможности предоставляют и оболочки DOS, в частности Norton Commander.
Отменить выполнение ошибочно введенной, но корректной командной строки можно путем нажатия комбинации клавиш Ctrl-Break.
Обычно командная строка не должна занимать более одной строки на экране дисплея. Зачастую пользователю это ограничение не мешает. Если же все-таки требуется ввести слишком длинную командную строку, то для перехода на следующую физическую строку без выдачи кода CR следует ввести код LF путем нажатия Ctrl-Enter или Ctrl-J (но при этом не следует забывать о том, что символ LF не является разделителем полей командной строки).