Оптимизируем мышиную возню
Автор будет очень признателен, если Вы кликнете по одной из белых ссылок выше.
Вам это ничего не стоит, а автору сайта будет приятно ;)
Одной из главных причин появления неудобных интерфейсов является тот факт, что разработчик как правило никогда сам не пользуется своей программой. По крайней мере использует ее в основном во время отладочного тестирования, а значит далеко не так активно, как заказчик. Именно отсюда и растут ноги проблемы - взгляды разработчика и конечного пользователя на "удобство" интерфейса зачастую диаметрально противоположны.
Самое смешное, что ни один из них не может аргументированно доказать правоту своих взглядов. Заказчик мотивирует тем, что его работники привыкли к тому-то и тому-то и потому хотят и дальше работать не переучиваясь. Разработчик, в свою очередь, утирает заказчику нос, объясняя, что работать с клавиатурой - анахронизм, на дворе 21 век, эти подходы устарели и его (разработчика) контора использует только новейшие достижения и перспективные технологии. А потому им лучше знать, что и как будет для пользователя удобнее. Но такие диалоги бывают только у продвинутых заказчиков. Большинство же "типовых клиентов" даже не подозревает какую важную роль играет интерфейс.
Итак, какими же особенностями должен обладать удобный интерфейс? Как уже было сказано в предыдущих постах, чем большим количеством устройств ввода приходится пользоваться юзеру для работы с программой, тем менее удобен такой интерфейс.
Большинство компьютеров в наше время оборудовано всего двумя такими устройствами - мышью и клавиатурой, но даже два устройства хуже, чем одно. Поэтому разработчик еще на этапе проектирования должен четко определить, какое устройство в его программе будет приоритетным.
Вот некоторые мысли, которые помогут значительно улучшить интерфейс ориентированный на использование мыши:
На панелях окон желательно разместить максимальное количество кнопок различных действий
Естественно, в первую очередь это должны быть кнопки наиболее часто употребляемых команд. Кнопки должны быть сгруппированы по типам действий, иметь привычные значки и краткие но понятные подсказки. В подсказках обязательно должны указываться горячие клавиши команды (если такие есть).
Меню должны иметь как можно меньше вложенных подменю
Лучше сделать больше пунктов главного меню с одной выпадающей менюшкой в каждом пункте,чем все команды загнать в одно меню с кучей вложенных подменю. Старайтесь избавить пользователя от лишних кликов.
Должны быть максимально задействованы все доступные кнопки мыши
Не забывайте, что бывают одинарные и двойные клики, а также можно отслеживать комбинации нажатых кнопок мыши (например, одновременно нажатые правая и левая кнопки). Это существенно расширяет количество выполняемых с помощью мыши команд.
В качестве примера приведу некоторые "находки" интерфейса графического редактора CorelDRAW! и сравню их с Adobe Photoshop:
- чтобы создать копию объекта, схватите его левой кнопкой мыши, оттащите и, не отпуская левую кнопку, щелкните правой. При этом исходно-захваченный объект вернется на свое место, а у вас "в руках" окажется его копия, которую вы можете тащить дальше.
В фотошопе, для создания копии нужно ЗАРАНЕЕ нажать Shift, т.е. кроме мыши используется еще и клавиатура и кроме того, нельзя выполнить копирование в процессе перетаскивания. - левый клик приводит к выделению объекта. При этому вокруг объекта появляются контрольные квадратики, тягая которые можно передвигать и масштабировать объект. Повторный левый клик по уже выделенному объекту меняет контрольные квадраты на контрольные стрелки, с помощью которых можно поворачивать и наклонять объект.
В фотошопе для активации режима трансформации приходится лезть в меню (Edit - Free Transform) или нажимать комбинацию Ctrl+T. Правда одновременно с масштабированием можно еще и поворачивать объект. Но зато для переключения в другие режимы (например для наклона объекта) приходится делать правый клик по объекту и выбирать нужный режим из выпадающего меню. - масштабирование с нажатой Ctrl дает изменение масштаба кратное 100%, т.е. 100%, 200%, 300%, -100% (отражение).
Насколько я знаю, в PhotoShop такую операцию мышью сделать нельзя. - и т.д. Этот список можно еще долго продолжать.
- чтобы создать копию объекта, схватите его левой кнопкой мыши, оттащите и, не отпуская левую кнопку, щелкните правой. При этом исходно-захваченный объект вернется на свое место, а у вас "в руках" окажется его копия, которую вы можете тащить дальше.
Клики мыши следует комбинировать с нажатием клавиш "Shift", "Ctrl", "Alt"
Это так же увеличит функциональность грызуна. Не забывайте, что даже с таким "скромным" набором элементов управления можно выстраивать очень хитрые комбинации типа: схватить объект левой кнопкой мыши, тащить объект с нажатой Ctrl + клики правой кнопкой.... :)
Может показаться, что такие последовательности пользователи вряд ли выучат и скорее всего не будут ими пользоваться. Но на самом деле здесь все зависит от логики поведения клавиш и мышиных кнопок. Если описанная комбинация будет в мозгу пользователя выстраиваться во вполне осмысленную логическую цепочку действий, то подобные выкрутасы не нужно будет даже документировать - пользователи сами их найдут и будут активно использовать.
Для вышеописанного выше "китайского кода" может быть такое, например, объяснение:
- левой кнопкой хватаем и тащим объекты по экрану;
- клавиша Ctrl позволяет тащить строго по горизонтали или вертикали;
- клик правой кнопкой вызывает создание копии объекта в текущей позиции. т.е. мы делаем множественное копирование.
Как видите, все вполне логично и моментально запоминается.
Естественно нужно максимально использовать возможности мыши по позиционированию
Используйте мышь для передвижения и масштабирования окон и их зон, перемещения объектов. Часто даже матерые пользователи забывают (а многие об этом и не догадываются), что объекты можно таскать не только левой кнопкой, но и правой и даже средней. Например, в проводнике (Microsoft Windows Explorer) перетаскивание файла левой кнопкой вызовет действие по умолчанию (перемещение или копирование, в зависимости от того что и куда тащите), а перетаскивание того же файла правой кнопкой позволит самостоятельно выбрать действие: копировать, переместить или создать ярлык.
Везде где можно используйте возможности технологии "Drag-and-Drop"
Пользователю гораздо удобнее схватить объект и перетащить его в корзину или в другое окно, чем отметить объект и потом лазить по пунктам меню (или по многочисленным тулбарам) в поисках команды удаления/переноса.
Очень полезными бывают расположенные в окне "зоны посадки". В роли этих зон могут работать даже обычные кнопки тулбара. Например, было бы здорово, если бы в текстовом редакторе существовала возможность выделить кусок текста и перетащить его на кнопку принтера, тем самым послав на печать ТОЛЬКО выделенный текст. Согласитесь, это очень удобно.
Очень желательно реализовать грамотное поведение окон
Окна, которые знают в какой момент им следует появиться на экране, а в какой исчезнуть - отличные помощники в работе. Посмотрите, как действуют окошки, расположенные по краям главного окна в среде Microsoft Visual Studio. Но это вовсе не предел. Эту идею можно еще очень долго развивать.
Например, если пользователь ввел курсор мыши в поле контрола DropDownList (который не поддерживает ввод с клавиатуры, а просто позволяет выбирать варианты из списка возможных), то почему бы этому контролу не развернуться не дожидаясь пока пользователь кликнет по нему? Точно так же, он должен сам свернуться, как только курсор мыши покинул его - пользователь видимо передумал делать выбор.
Но с реализацией такого поведения не следует переусердствовать - всегда должна быть возможность отключить автоматику и позволить пользователю самому решать, что и когда должно быть видимо у него на экране.
В некоторых случаях стоит подумать о поведении, которое можно назвать "запоздалым исчезновением".
Это то, чего сильно не хватает стандартному меню "Пуск" операционной системы Microsoft Windows. Идея состоит в том, чтобы окно меню исчезало не сразу после клика по его пунктам, а с некоторой задержкой. Таким образом пользователь, однажды развернув меню, сможет активировать сразу несколько пунктов. Меню должно исчезнуть только после того, как мышь его покинет.
Пример: я, собираясь поработать в интернете, запускаю сразу несколько приложений: броузер, почтовый клиент, ICQ, какую-нить скачивалку. И для каждого запуска мне приходится повторять одни и те же действия: "Пуск" - "Все программы" - "Интернет" - и т.д. Описанное выше "запоздалое исчезновение" позволяет избавиться от этих абсолютно ненужных телодвижений.
Позвольте пользователю закреплять немодальные окна.
В современных версиях оболочки Gnome для Linux существует гениальная по простоте и супер-полезная функция. Там можно установить атрибут "Поверх всех окон" (Always On Top) для абсолютно любого окна. В операционной системе Microsoft Windows лично мне очень сильно не хватает такой функции.
Закрепление вложенных меню.
Еще одна классная идея касательно мышиного управления и меню подсмотрена мною в LiteStep. Там есть возможность закрепить на экране любое вложенное меню, т.е. сделать его независимым и не исчезающим. Получается этакий меню-подобный тулбар рабочего стола. И таких менюшек можно навешать столько сколько нужно. Это на самом деле бывает офигенно удобно. Респект создателям!
