Интерфейс.Новые направления в проектировании компьютерных систем

Форма курсора и методы выделения


Цель как поиска с ограничителями, так и пошагового поиска строки обычно заключается в том, чтобы обнаружить в тексте некоторую строку и выделить ее. Пользователи стараются использовать как можно более короткие последовательности в шаблонах поиска, т.к. длинные последовательности трудно набирать, и в большинстве систем они должны быть набраны с точностью до каждого символа, чтобы соответствовать целевому объекту. Поэтому поиск строки обычно не применяется для выделения даже средних по размеру целевых объектов, длина которых больше, чем 10-15 символов, не говоря уже о действительно больших блоках текста. Поиск строки применяется для того, чтобы помочь пользователю обнаружить место, где расположена искомая выборка, после чего пользователь может применить уже другой метод для обозначения этой выборки (например, использовать ГУВ для перемещения курсора от одного конца выборки до другого). Однако, если края выборки нельзя видеть одновременно, следует использовать другой метод. Он состоит из следующих шагов: (1) обозначение одного края выборки с помощью той техники, которая используется в данной системе; (2) сделать видимым другой край выборки с помощью полос прокрутки; (3) обозначить другой край выборки. В большинстве систем обозначение второго края выборки позволяет выделить всю выборку.

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

Рассмотрим теперь графическую форму курсоров. В настоящее время наиболее распространенной формой текстовых курсоров является курсор, который помещается между символами, как это показано на рис. 5.7.
Одной из проблем стандартного текстового курсора является то, что пользователи пытаются поместить его точно между символами, целясь на небольшой горизонтальный объект, который по размеру меньше, чем требуемый, что в соответствии с законом Фитса приводит к временным затратам. Кроме того, во время тестирований, проведенных в компании Information Appliance, мы с удивлением обнаружили, что эта распространенная форма курсора создает интересную когнитивную проблему, состоящую в том, что пользователь должен располагать курсор по-разному, в зависимости от того, какое действие он собирается совершить далее. В частности, чтобы удалить существующий символ с помощью клавиши <Backspace>, требуется разместить курсор справа от символа (в английском или любом другом языке, который читается слева направо). Чтобы вставить какой-то символ рядом с существующим символом, необходимо поместить курсор слева от существующего символа (в этом случае существующий символ сдвинется вправо). Наше удивление было связано с тем, что использование стандартного курсора хорошо знакомо каждому пользователю, и поэтому никто не мог подумать, что курсор можно было бы рассматривать как потенциальный источник проблем.38 Любой, кто пользовался курсором, знает, что разобраться с тем, как им пользоваться, несложно. Тем не менее, у начинающих пользователей компьютеров может возникнуть некоторая путаница и ошибки при первых попытках его использования. Путаница усугубляется еще и тем, что пользователи не видят локусы действия применяемых команд.


Рис. 5.7. Стандартный курсор, помещаемый между символами Введение режима, при котором удаление происходит в направлении, обратном обычному, не решает проблемы. Такой метод, называемый правосторонним удалением (forward erase), позволяет всегда размещать курсор слева от символа, к которому будет применено действие. Однако в этом случае вы будете иногда неожиданно для себя удалять в неправильном направлении, т.к. текущее направление удаления не находится в локусе вашего внимания.




Если требуется наличие двух направлений удаления, желательно использовать для этого две разные клавиши или же ввести режим для противоположного направления удаления. Использование курсора, который визуально показывает как (1) область вставки, так и (2) символ или символы, которые могут быть удалены клавишей <Backspace>, может быть ценным улучшением интерфейсов, ориентированных на работу с текстами. Вторая форма подсветки может быть аналогична той, которая используется для подсветки выборок. Один из способов достижения этого показан на рис. 5.8.

Рис. 5.8. Курсор из двух частей, выделяющий как отдельный символ, так и расширенную выборку. Часть курсора, которая обозначает область вставки, мигает для того, чтобы курсор можно было легко обнаружить на экране Перемещение курсора к объекту с помощью ГУВ является многократным процессом, в котором пользователь сначала визуально фиксирует целевой объект и затем перемещает курсор к этому объекту. Если пользователь не помнит, где находится курсор, ему также придется визуально искать его местонахождение. После этого он опять ищет целевой объект и т.д. до тех пор, пока объект и курсор не оказываются рядом в одном поле зрения широтой приблизительно 5°. Другими словами, для перемещения курсора с помощью ГУВ пользователь должен выполнить несколько процессов, требующих времени. Тем не менее, ГУВ необходимо для указания на графические объекты или при работе в полностью графической среде. Неповоротливость ГУВ при работе с текстами усугубляется в случаях, когда возникает необходимость указать на объект, находящийся за пределами страницы. В этих случаях использование только ГУВ вынуждает пользователя использовать полосы прокрутки, переключатели страниц и другие механизмы, чтобы перейти к тому содержанию, на которое нужно указать. Каждый из этих методов требует изучения, и многие из них работают довольно медленно. Функция LEAP дает пользователю когнитивное преимущество, которое избавляет его от необходимости выбирать между разными методами в зависимости от расстояния до объекта. (Alzofon и др., 1987 г.).


Наличие клавиши <LEAP> и ГУВ означает, что имеется два основных способа перемещения курсора. Однако пользователь выбирает тот или иной метод в зависимости от содержания объекта, а не от расстояния между курсором и этим объектом. Обычно содержание уже находится в локусе вашего внимания, поэтому когнитивный выбор между клавишей <LEAP> и ГУВ сделать сравнительно просто. Использование функции LEAP может быть особенно полезным в системах, управляемых голосом, а также для пользователей с двигательными нарушениями или повторными стрессовыми поражениями, для которых важно минимизировать работу с клавиатурой. Специальная кнопка (например, установленная на микрофоне) может служить для установки квазирежима LEAP. Объектом для функции LEAP всегда является некоторый символ в тексте, и этот символ (независимо от того, смотрит ли пользователь на него или думает о нем) обычно находится в локусе внимания пользователя во время того, как он применяет функцию LEAP. В отличие от использования ГУВ, в этом случае пользователь не должен визуально искать целевой объект, чтобы переместить к нему курсор. Это свойство функции LEAP настолько выражено, что ею могут пользоваться даже слепые пользователи, что было установлено в ходе тестов, проведенных в больнице Ведомства по делам ветеранов в Пало Альто (результаты не опубликованы). Еще более важным является то, что эта функция может использоваться в системе, построенной на ее основе, так широко, что вскоре оно становится для пользователя автоматичным. В структуре этой функции нет ничего, что могло бы препятствовать формированию ценных автоматичных навыков (привычек) или что могло бы привести к проблемам после того, как такие привычки сформировались. Функция LEAP должна работать быстро, всегда обнаруживая следующий экземпляр текущего шаблона поиска за время, не превышающее время реакции пользователя, чтобы не давать ему возможности и времени выполнить какое-то действие. Необходимая скорость может быть достигнута с помощью методов, рассмотренных в разделе 5.4. Для сравнения ГУВ и функции LEAP по временным затратам можно использовать метод GOMS-анализа скорости печати.


При условии, что руки пользователя изначально находятся на клавиатуре, использование ГУВ для указания на какую-то букву в тексте требует выполнения следующих операций: H P K. С учетом правила размещения операторов M получаем H M P K, или 0.4+1.35+1.1+0.2=3.05 с. Время, необходимое на использование функции LEAP, зависит от количества символов, которые следует ввести, чтобы перейти к требуемому целевому объекту. Тестирование показало, что среднее число символов, используемых при применении функции LEAP, составило около 3.5 для тех пользователей, которые были протестированы в первую неделю использования компьютера Canon Cat. Для перемещения курсора к некоторому целевому объекту требуется выполнить следующие операции: нажать на клавишу <LEAP>, после чего набрать 3.5 символа. Таким образом, применение функции LEAP в среднем состоит из 4.5 символов. Добавление, в соответствии с правилами, оператора М дает в результате 1.35+(4.5*0.2)=2.25 с. В другом эксперименте по хронометрированию, в котором участвовали опытные пользователи, сравнивалась мышь с функцией LEAP. Задача состояла в том, чтобы переместить курсор между двумя случайно выбранными символами, отображенными на экране размером 25 строк по 80 символов. Отсчет времени не начинался до тех пор, пока пользователь не начинал двигать мышью, или до тех пор, пока он не нажимал на клавишу <LEAP>. Среднее время составило приблизительно 3.5 с для мыши и 1.5 с для клавиши <LEAP>. Увеличение значения по сравнению с расчетным, вероятно, связано с небольшими размерами целевых объектов (в качестве которых использовались отдельные символы), что было обусловлено законом Фитса. Неожиданно малые значения для клавиши <LEAP>, вероятно, могут объясняться небольшими размерами текста, в котором возможный шаблон поиска в среднем мог состоять приблизительно из 2 символов. Участникам эксперимента было дано неограниченное время на планирование своих действий перед использованием мыши или клавиши <LEAP>.


Таким образом, во многих случаях пользователь может быстрее завершить передвижение курсора с помощью клавиши <LEAP>, чем переместить свои руки с клавиатуры к мыши. 5.6. Позиция курсора и клавиша <LEAP> Объектом функции клавиши <LEAP> является отдельный символ. С какой стороны символа должен появляться курсор: справа или слева? Размещение курсора слева от символа правильно только в том случае, если вы собираетесь сделать в этом месте вставку. Тогда как размещение курсора справа от символа правильно при условии, что вы собираетесь удалить этот символ. По-видимому, компьютер должен знать о вашем намерении перед тем, как правильно разместить курсор. Для случая со вставкой рассмотрим старый курсор в виде прямоугольника вокруг буквы или в виде подчеркивания. При использовании клавиши <LEAP> для перехода к какой-то букве курсор должен располагаться на самой букве. (Курсор не мешает чтению буквы; рис. 5.9.) Тогда пользователь может точно сделать в этом месте вставку или удаление. Прямоугольный курсор позволяет более точно, чем стандартный, межсимвольный курсор, показать место, где произойдет вставка или удаление.

Рис. 5.9. (а) С помощью ГУВ или клавиши <LEAP> курсор был размещен рядом с буквой l в слове slat. (b) Если нажать клавишу <Backspace>, получится sat. (с) Но если вы введете букву p, вы получите слово splat. Обратите внимание на то, что в первом случае обе части курсора (для вставки и удаления) были размещены на букве l, показывая, что вы можете в этом месте сделать либо вставку, либо удаление. После удаления (b) или вставки (с) элементы курсора разделились, показывая теперь, где возможно выполнить вставку или удаление Такой вариант порождает другую проблему. Предположим, что имеется слово tongs. Курсор установлен на букве o. Вы вводите букву h. Получается thongs. Куда должен переместиться курсор? Здесь опять же нужно знать намерение пользователя. Если курсор находится на букве h, то неясно: эта буква является местом вставки или удаления? Удалением должно быть действие, противоположное вставке, — так, чтобы нажатие на клавишу <Backspace> привело к удалению буквы h и возвращению к слову tongs.


Но если вы введете другую букву, скажем r, такое нажатие должно сместить букву o к букве h, образуя в результате слово throngs. При использовании надсимвольного курсора, наверное, тоже должны быть предусмотрены средства предварительного определения направления его действия. Проблема может быть решена следующим образом. Когда вы передвигаете курсор, он должен помещаться на отдельный символ. При вводе или удалении курсор должен разделяться на две части, связанные с двумя прилегающими символами, как это показано на рис. 5.9. Первый символ обозначен удаляющей частью курсора, а второй обозначен снизу указателем вставки. Фокус отчасти заключается в том, что используется курсор из двух частей. Он сделан таким образом, что когда его части объединяются (как они должны это делать после нажатия клавиши <LEAP> или перемещения курсора каким-то другим способом), пользователю графически ясно, что они располагаются на одном символе независимо друг от друга. Все это может показаться сложным, когда описывается словами, но на самом деле для начинающего пользователя научиться пользоваться курсором LEAP проще, чем обычным курсором, изображенным на рис. 5.7. Все, что нужно знать начинающему пользователю — это то, как выглядят маркеры для выделения и вставки, и что клавишей <Delete> удаляется выделенное, а вводимые символы появляются рядом с маркером вставки. Символы располагаются скорее последовательно, чем смежно, т.к. хотя два последовательных символа обычно и могут быть смежными, они не являются таковыми, если первый из них находится в конце строки. Для языков, которые читаются слева направо, курсор удаления обычно располагается справа от вставляемого символа, а для языков, которые читаются справа налево, — порядок обратный. Для вертикально-ориентированных языков курсор вставки размещался бы под курсором удаления, и для двумерной печати (boustrophedonic scripts) в каждой строке они бы менялись местами. Восприятие целевых объектов становится проще при использовании ГУВ с курсором из двух частей, поскольку объекты, или символы, больше по размеру, чем пробелы между ними, и поэтому активные области легче обнаружить. (Активная область для курсора PARC распространяется приблизительно до середины каждого символа по обе стороны от пробела между ними.


Однако визуально они никак не разделяются, отчего целевой объект кажется меньше по размеру. На практике многие пользователи стараются поместить курсор между символами, тем самым вызывая ограничение закона Фитса, связанное с небольшими размерами целевых объектов.) Как мы уже говорили, начинающие пользователи иногда испытывают трудности в понимании того, как работает стандартный межсимвольный курсор. Этот переходный процесс связан с интерфейсным элементом, настолько знакомым каждому пользователю, что редко (если вообще когда-то) у кого-нибудь возникает мысль подвергнуть его сомнению. С курсором из двух частей, который при переходе на какой-то символ складывается, упомянутая неясность в том, на какой символ курсор указывает, исчезает и таким образом снимает всю проблему. В некоторых случаях может быть полезным ограничить действие функции LEAP. Ограничение поиска может быть выполнено с помощью: (1) выделения области поиска; (2) выделения команды или текущей выборки (как это описано в разделе 5.2.1), ограничивающей последующий переход (с помощью клавиши <LEAP>) к этой области, которая становится старой выборкой; (3) использования клавиши <LEAP>. Однако ограничение функции LEAP не должно выполняться путем введения режима. Отсутствие возможности определить, включен режим или нет, делает использование функции LEAP чрезвычайно неудобным — пользователь больше не сможет легко находить необходимые ему объекты. Компания Canon использовала в компьютере Canon Cat механизм, названный «Local Leap» (локальный прыжок), который вызывал именно эти проблемы, о которых читатель этой книги теперь уже знает и может их предупредить. Внедрение функции LEAP также требует наличия другой функции — функции LEAP AGAIN (Прыгнуть еще раз), с помощью которой выполняется переход к следующему экземпляру того же шаблона в том же направлении, в котором функция LEAP была применена последний раз. В компьютерах SwyftWare и Canon Cat поиск обычно осуществлялся в виде перехода (LEAP) к шаблону и затем использования несколько раз клавиши <LEAP AGAIN> до тех пор, пока не обнаруживался искомый экземпляр. Функция LEAP позволяет унифицировать выполнение поиска и перемещения курсора внутри текста с учетом того, что текст может включать таблицы, графические элементы и любые другие алфавитно-цифровые символы.


После некоторого периода использования функции LEAP пользователь перестает замечать процесс перехода (LEAPing) так же, как оператор, владеющий десятипальцевым методом набора, не замечает механического движения пальцев и концентрируется только на создании содержания. Если вы хотите разместить какой-то целевой объект на дисплее, вы «перескакиваете» (LEAP) к нему, и вам не нужно для этого останавливаться, чтобы найти этот объект внутри содержания системы. Вам не нужно проходить по иерархическим структурам или открывать папки. Вы просто «перепрыгиваете» прямо к тому, что вам нужно. Однако когда люди, привыкшие к стандартным файловым структурам, впервые сталкиваются с системой, снабженной функцией LEAP, они часто продолжают думать с точки зрения того, где нужный объект располагается иерархически, и поэтому ищут его, пытаясь установить его общее местонахождение, и затем перемещаются к искомому экземпляру по определенному пути. Если среда, внутри которой вы осуществляете поиск, хорошо индексирована, для пользователя становится не важным, находится ли искомый элемент в памяти, в локальном или сетевом хранилище или же в локальной или глобальной сети. Говоря о методах поиска, следует упомянуть наблюдения, которые были сделаны Ландауэром (Landauer) и его коллегами. Ими было показано, что наиболее распространенные формы расширенного текстового поиска, в котором поиск определяется булевыми комбинациями строк или регулярными выражениями, менее эффективны в сравнении с полнотекстовым механизмом поиска. Последний оказывается и более быстрым, и более простым, и с помощью него пользователи находят больше подходящих элементов, по которым они производят поиск (Landauer, 1995). Как показывает GOMS-анализ и другие измерения эффективности, LEAP имеет преимущества над методами поиска, использованными Ландауэром, и поэтому обладает еще большей ценностью.

Содержание раздела