обозначения в руководстве я сделал ошибку. На самом деле требовалось при нажатой клавише «Ctrl» нажать клавишу со знаком точки.
Кроме того, эти обозначения не дают возможности отразить такие действия, как, например, одновременное нажатие и удерживание клавиш «Ctrl» и «Shift» с последующим вводом нескольких алфавитных символов, причем клавиша «Shift» отпускается после ввода первых двух символов, а «Ctrl» остается нажатой. Альтернативный вариант, который я только что использовал, – выражение операций обычным языком, что хотя и понятно, но довольно громоздко.
Чтобы обозначать операции с клавишами точно и кратко, я использую символ стрелки, указывающей вниз, сразу после названия клавиши, на которую требуется нажать и удерживать в нажатом состоянии, – например, Shift↓ означает, что необходимо нажать и удерживать клавишу «Shift». Символ стрелки, указывающей вверх, после названия клавиши показывает, что эту клавишу следует отпустить, – например Shift↑. Нажатие одной клавиши, скажем, клавиши «t», может быть точно обозначено с помощью записи t↓t↑. Запись нажатия одной клавиши можно сократить до t↓↑ или просто до t, если это не вызывает двусмысленности и не может привести к путанице.
Между отдельными действиями, которые следуют друг за другом, ставится пробел. Нажатие клавиши пробела обозначается словом
Пробел
Это обозначение невозможно перепутать с набором слова пробел (space), потому что последовательность символов этого слова, вводимая с клавиатуры, будет записываться буквами, разделенными пробелами, а именно:
п р о б е л
Когда есть риск неверного истолкования или необходимо сделать акцент на каждом отдельном действии, я применяю полную запись:
п↓ п↑ р↓ р↑ о↓ о↑ б↓ б↑ е↓ е↑ л↓ л↑
Любые комбинации клавиш могут быть линейно представлены в этой системе записи. Например, нажатие и удерживание клавиши «Shift», затем нажатие клавиши «n», после этого нажатие и удерживание клавиши «Ctrl» при все еще нажатой клавише «Shift», затем нажатие клавиши «k», отпускание клавиши «Shift» при все еще нажатой клавише «Ctrl», затем нажатие клавиши «w» и после этого отпускание клавиши «Ctrl» записывается следующим образом:
Shift↓ n Control↓ k Shift↑ w Control↑
При условии, что порядок отпускания клавиш не имеет значения для работы интерфейса, отпускание любой из нажатых клавиш обозначается стрелкой вверх для каждой отдельной клавиши. Таким образом, набор слова пробел будет записываться так:
п↓↑ р↓↑ о↓↑ б↓↑ е↓↑ л↓↑
Приведем еще один полезный пример. Чтобы восстановить исходное состояние ОЗУ на компьютере Macintosh, должна быть выполнена следующая последовательность команд:
Command↓ Control↓ Power↓ ↑↑↑ Command↓ Option↓ p↓ r↓
Все клавиши требуется удерживать до тех пор, пока не зазвучит сигнал, после чего:
↑↑↑↑
(Выражаясь обычным языком: нажмите и удерживайте клавишу «Command» – отсутствие стрелки вверх означает, что клавишу не следует отпускать сразу же. Затем нажмите и удерживайте клавишу «Ctrl». Здесь также нет стрелки вверх, поэтому следует, удерживая обе эти клавиши одновременно, нажать клавишу «Power». Ни одной стрелки вверх еще не было, так что сейчас вы удерживаете сразу три клавиши. Последующие три стрелки вверх означают, что требуется отпустить все три клавиши в любом порядке или одновременно. Затем, как следует из записи, вам необходимо нажать, не отпуская, клавишу «Command», затем нажать, не отпуская, клавишу «Option», затем нажать, не отпуская, клавишу «p», после чего нажать и удерживать клавишу «r», так что, в конце концов, вы будете удерживать в нажатом положении четыре клавиши одновременно. Это следует делать до звукового сигнала, после чего все четыре клавиши следует отпустить.)
Если при наборе последовательности имеет значение время, то об этом должно быть сказано в примечании. Например, для набора одной буквы t запись будет следующей:
t↓ t↑
Однако при использовании большинства клавиатур, если между t↓ и t↑ происходит задержка длительностью более 500 мс, на экране приблизительно каждые 100 мс станут появляться еще символы t. Эта функция обычно называется автоповтором. Задержки, в том числе и те, которые запускают автоповтор, часто создают проблемы в работе интерфейсов. Использование задержек в интерфейсах, а также улучшение механизма автоповтора будут обсуждаться далее в разделе 6.4.5.
3.2. Режимы
Поскольку люди более уступчивы, чем компьютеры, бывает легче заставить человека приспособиться к ограничениям компьютера, чем создать компьютер, приспособленный к потребностям человека. И когда это происходит, человек попадает в подчинение к компьютеру, а вовсе не освобождается им.
Режимы (modes) являются важным источником ошибок, путаницы, ненужных ограничений и сложности в интерфейсе. Многие проблемы, создаваемые режимами, хорошо известны. Тем не менее, практика создания систем без режимов почему-то не находит широкого применения в разработке интерфейсов. Прежде чем приступить к обсуждению методов устранения режимов, следует рассмотреть их подробно, тем более что даже среди специалистов по интерфейсам нет общего мнения относительно того, что представляет собой режим (Johnson and Engle-beck, 1989).
Чтобы понимать режимы, нам следует сначала определить понятие жеста. Жест (gesture) – это последовательность действий человека, которая выполняется автоматически (после старта). Например, для опытного пользователя набор такого простого слова, как
В большинстве интерфейсов допускается несколько интерпретаций конкретного жеста. Например, в одном случае с помощью клавиши «Return» можно вставить в текст символ возврата каретки, тогда как в другом случае нажатие этой клавиши приводит к исполнению предшествующей строки в качестве команды.
Режимы проявляются в том, как реагирует интерфейс на тот или иной жест.
Фонарик, управляемый с помощью кнопочного выключателя, может быть либо включен, либо выключен при условии, что он находится в хорошем рабочем состоянии. При нажатии кнопки свет