Фокус (пользовательский интерфейс)
Фокус, фокус ввода — концептуальное понятие в построении графического пользовательского интерфейса, означающее наличие у определённого элемента этого интерфейса исключительного права принимать клавиатурный ввод. Название является аллюзией на способность человеческого зрения фокусировать взгляд на небольшом участке поля зрения.
Не следует путать фокус с выделением — фокус распространяется на элементы интерфейса, в то время как выделение — на их содержимое. Кроме того, фокус всегда находится на каком-то строго одном элементе, тогда как выделение может быть множественным.
В вычислительной технике фокус указывает на выбор элемента графического интерфейса пользователя. Текст, введённый с клавиатуры или вставленный из буфера обмена, отправляется компоненту, у которого есть фокус. Перемещение фокуса с определённого элемента пользовательского интерфейса называется событием размытия (англ. blur) по отношению к этому элементу. Как правило, фокус снимается с элемента, отдавая фокус другому элементу. Это означает, что события фокуса и размытия обычно происходят практически одновременно, но в отношении разных элементов пользовательского интерфейса: один получает фокус, а другой размывается.
Концепция аналогична курсору в текстовой среде. Однако при рассмотрении графического интерфейса также задействован указатель мыши. Перемещение мыши обычно приводит к перемещению указателя мыши без изменения фокуса. Фокус обычно можно изменить, щёлкнув компонент, который может получить фокус с помощью мыши. Многие рабочие столы также позволяют изменять фокус с помощью клавиатуры. По соглашению, клавиша Tab ↹ используется для перемещения фокуса на следующий фокусируемый компонент, а ⇧ Shift+Tab ↹ — на предыдущий. Когда впервые появились графические интерфейсы, на многих компьютерах не было мышей, поэтому эта альтернатива была необходима. Эта функция упрощает использование пользовательского интерфейса для людей, которым сложно пользоваться мышью. В определённых обстоятельствах для перемещения фокуса также можно использовать клавиши управления курсором.
Смысл и предназначение
Пользовательский интерфейс может иметь несколько элементов, способных каким-либо образом реагировать на клавиатурный ввод. Однако, из соображений здравого смысла, при вводе с клавиатуры каких-либо данных (или команд) получать их должен какой-либо один элемент, из расположенных в окне, которому пользователь и адресует эти данные, осуществляя ввод. Поэтому при проектировании логики работы пользовательского интерфейса вводится понятия фокуса как совокупности:
- Визуальных признаков элемента, которые сообщают пользователю, что именно этот элемент получит вводимые с клавиатуры данные,
- Внутренних данных приложения, позволяющих той части компьютерной системы, которая отвечает за диспетчеризацию клавиатурных событий[1], переадресовать клавиатурные события непосредственно элементу.
Говорят, что элемент обладает фокусом или фокус находится на элементе, если при возникновении клавиатурного события именно этот элемент среагирует определённым образом на событие. Чтобы пользователь мог определить, какой из элементов в данный момент обладает фокусом, такой элемент обычно особым образом графически выделяется среди остальных аналогичных элементов.
Если система не предполагает наличие клавиатуры (даже виртуальной) как устройства ввода, или в любой момент времени существует только один элемент, способный реагировать на клавиатурные события, понятие «фокус» в таких системах не имеет смысла и не используется.
Деактивированные элементы обычно не могут иметь фокуса.
Управление фокусом
Для увеличения удобства работы пользователю часто даётся несколько возможностей переключать фокус с одного элемента на другой. Разные операционные системы и приложения для них могут иметь разные способы. Обычно переместить фокус с одного элемента на другой можно при помощи определённых клавиш клавиатуры (например Tab ↹ и ⇧ Shift+Tab ↹ для переключения фокуса на следующий/предыдущий элемент в Windows), либо при помощи мыши. Существуют различные модели переключения фокуса мышью: так, например, в Windows или MacOS элемент получает фокус после щелчка мышью на нём; в некоторых менеджерах окон X11 достаточно просто поместить указатель мыши над элементом, чтобы он получил фокус.
Click to focus (Нажмите, чтобы сфокусироваться)
В большинстве основных пользовательских интерфейсов, например, созданных Microsoft и Apple часто можно найти политику «фокус следует за щелчком» (или «щелкнуть для фокусировки»), где нужно щелкнуть мышью внутри окна для этого окна. чтобы сосредоточиться. Это также обычно приводит к тому, что окно поднимается над всеми другими окнами на экране. Если используется модель clickfocus, то текущее окно приложения продолжает сохранять фокус и собирать ввод, даже если указатель мыши находится над окном другого приложения.
Focus follows pointer (Фокус следует за указателем)
Другой распространённой политикой в системах Unix, использующих X Window System (X11) является политика «focus follows mouse» (Фокус следует за указателем) или FFM, при которой фокус автоматически следует за текущим расположением указателя. Окно в фокусе не обязательно поднимается, его части могут оставаться под другими окнами. Оконные менеджеры с этой политикой обычно предлагают «автоподъём», который поднимает окно, когда оно сфокусировано, обычно после настраиваемой короткой задержки. Возможное следствие политики followfocus состоит в том, что ни одно окно не имеет фокуса, когда указатель перемещается над фоном без окна под ним. В противном случае фокус просто остаётся в последнем окне.
Sloppy focus (Небрежный фокус)
Модель sloppyfocus — это вариант модели followfocus.[2] Это позволяет продолжить сбор ввода последним окном в фокусе, когда указатель мыши перемещается от любого окна, например, над строкой меню или областью рабочего стола.
Ссылки
- Статья о клавиатурном фокусе // MSDN (англ.)
Примечания
- Клавиатурное событие — нажатие, удержание или отпускание какой-либо клавиши или клавиш клавиатуры.
- Whim basic information . Cunningham & Cunningham (25 февраля 2012). Дата обращения: 16 января 2016.