Alt-Tab
Alt-Tab — это широко распространённое название для комбинации клавиш, появившейся в Microsoft Windows начиная с Windows 1.0 (1985). Она позволяет переключаться между окнами приложений на уровне операционной системы без использования мыши; изначально называлась «Task Switcher» (в Windows Vista — Flip)[1].
Описание
Комбинация Alt-Tab упорядочивает окна приложений по принципу «наиболее недавно используемых», поэтому многократное нажатие Alt+Tab ↹ позволяет быстро чередовать два последних активных окна. Кроме того, Alt-Tab может использоваться для переключения между полноэкранным окном и рабочим столом. Окружение оконного менеджера поддерживает список окон в порядке Z-порядка, где самые недавно использованные окна располагаются впереди, а рабочий стол — в конце списка; это ускоряет доступ к часто используемым окнам[2].
Аналогичная по смыслу комбинация используется также во многих других операционных системах и рабочих средах — например, в KDE, Xfce и GNOME. В iOS и macOS для похожей функции используется ⌘ Command+Tab ↹, но она переключает между приложениями, а не окнами[3].
Поведение
Использование клавиши-модификатора Alt с Alt-Tab отличается от обычного применения подобных клавиш:
- Поведение различается в зависимости от того, отпускает ли пользователь Alt между нажатиями Alt-Tab, или удерживает её и многократно нажимает Tab ↹.
- Отпускание Alt немедленно закрывает окно переключателя и активирует выбранное окно.
Существуют тонкости в реализации Alt-Tab, сохранившиеся на протяжении многих версий Windows.
Основные правила поведения комбинации Alt-Tab:
- Если открыто более одного окна, список задач появляется сразу после нажатия Tab ↹ при удерживаемом Alt.
- Список задач открыт, пока не отпущена клавиша Alt.
- Tab ↹ перемещает выделение вперёд по списку, ⇧ Shift+Tab ↹ — назад.
- При удержании Tab ↹ или ⇧ Shift+Tab ↹ происходит автоповтор (удобно при большом количестве окон).
- Первое нажатие Tab ↹ или ⇧ Shift+Tab ↹ после активации Alt-Tab выделяет окно, идущее сразу за/перед текущим.
- Если нет окон выше активного, начальное нажатие ⇧ Shift+Tab ↹ перемещает выделение в конец списка.
- Щелчок мышью по значку задачи в окне переключателя активирует соответствующее окно (не поддерживается в Windows XP и ранее).
- Нажатие Esc или клик мышью вне окна переключателя при удерживаемой клавише Alt отменяет операцию переключения.
- Окна перечисляются по Z-порядку.
- Окна с атрибутом «всегда поверх» располагаются в начале списка, затем — активное окно и остальные.
- Рабочий стол представлен как отдельное окно верхнего уровня (не поддерживается в Windows 10).
- При переключении окно продвигается в начало Z-порядка, кроме «всегда поверх» окон, которые сохраняют своё положение.
- Пока окно переключателя неактивно, комбинация Alt+Esc отправляет активное окно в конец Z-порядка (в Windows 8 — на одну позицию вниз).
- Alt+⇧ Shift+Esc эквивалентна одному нажатию Alt+⇧ Shift+Tab ↹, но при этом свёрнутые окна выбираются без восстановления.
- Сворачивание окна аналогично эффекту Alt+Esc — оно отправляется назад по Z-порядку.
Следствия из этих правил:
- При отсутствии окон с признаком «всегда поверх» обычная последовательность Alt-Tab всегда будет чередовать два наиболее недавно использовавшихся окна.
- Alt+⇧ Shift+Tab ↹ может восстановить последнее свёрнутое окно (если есть окна «всегда поверх», выбирается самое нижнее из них).
- Два последовательных нажатия Tab ↹ при удерживаемом Alt позволяют быстро переключаться между тремя программами; аналогично можно переключаться между любым числом окон.
При первом вызове Alt-Tab список окон формируется так:
- Сначала — все окна верхнего уровня с признаком «всегда поверх» (по Z-порядку, от первого к последнему),
- затем — остальные (обычные) окна верхнего уровня (по Z-порядку).
Порядок списка задач не меняется, пока окно переключателя открыто, но между отдельно запущенными переключениями порядок может измениться[4].
В Windows Vista поведение по умолчанию изменилось[5]: шесть наиболее использованных окон выводятся первыми, остальные сортируются по алфавиту согласно пути к приложению (и могут группироваться в зависимости от настроек панели задач).
В Windows 10 рабочий стол исчез из списка задач Alt-Tab.
Окна можно условно разделить на две категории: «всегда поверх» и обычные. При переключении на окно оно перемещается в начало своей категории. Например, предположим, что нет окон «всегда поверх». Пусть активное окно называется A. Зажмите Alt и нажмите, затем отпустите Tab, не отпуская Alt. Появится список окон, где A идёт первым: список, возможно, «A W Z E U B C». Курсор сразу окажется на W. Переместитесь, не отпуская Alt, к окну U, ещё трижды нажав Tab, и отпустите Alt. Если теперь снова активировать Alt-Tab, список будет «U A W Z E B C». Проделав аналогично для окна E, список станет «E U A W Z B C». Таким образом, порядок окон отражает недавность их использования. Если теперь свернуть окно A, оно перейдёт в конец списка: «E U W Z B C A».
Классическое быстрое чередование между двумя окнами — это частный случай поведения Alt-Tab: при последовательном быстром нажатии и отпускании комбинации с двумя окнами пользователь всегда переключается между ними. Если же три окна, цикл — «A B C», быстрое чередование повторно переставляет активные окна в начало.
Если произвести свертывание одного из трёх окон, останутся два «верхних», между которыми Alt-Tab будет чередовать; если программа не перемещается в конец списка при сворачивании, потребуется дополнительная «перетасовка» Alt-Tab. Если программа не обновляет позицию в Z-порядке (например, обработчик окон завис), при следующем вызове Alt-Tab курсор окажется не на ожидаемой позиции.
Программы могут программно влиять на своё положение в списке Alt-Tab: создавая и уничтожая окна, скрывая/показывая, изменяя Z-порядок[2].
Порядок списка Alt-Tab всегда соответствует Z-порядку, если упорядочить окна по признаку «всегда поверх». Комбинация Alt-Shift-Esc эквивалентна одному Alt-Shift-Tab, только при этом свёрнутое окно не отображается[2].
Особенности и доработки в Windows
Alt-Tab работает даже в отсутствие Проводника Windows. В Windows NT 3.51 и ранее Alt-Tab обрабатывается подсистемой CSRSS (Client/Server Runtime Subsystem), позже — драйвером оконной системы ядра (win32k.sys)[6]. Alt-Tab продолжает работать даже если комбинации Ctrl+Alt+Del и Ctrl+⇧ Shift+Esc (управляются процессом Winlogon) неактивны[7].
Возможна перехват (или даже блокировка) Alt-Tab с помощью низкоуровневых обработчиков клавиатуры[8]. Такой подход применяется, например, в клиентах VNC, чтобы передавать нажатие Alt-Tab в удалённую сессию.
В Windows XP PowerToy Tweak UI[9] позволяет изменить число строк и столбцов в окне переключателя Alt-Tab, либо это настраивается напрямую через реестр[10].
Программа «Alt-Tab Replacement»[9] для Windows XP показывает миниатюры окон (а не только значки) и позволяет выбирать приложение мышью. В Windows Vista появилась встроенная версия этого функционала (Flip).
Для работы с большим числом окон существуют сторонние аналоги Alt-Tab Replacement, позволяющие добавлять новые возможности.
В Windows Vista и Windows 7 можно выполнять навигацию по Alt-Tab с помощью мыши или клавиш-стрелок.
Если включена тема Aero Glass, в Windows Vista доступен 3D-просмотр окон (аналог Alt-Tab через ⊞ Win+Tab ↹). В этом режиме активировать окно можно кликом мыши, а прокрутка возможна колесиком.
Если в системе открыто только одно окно, при нажатии Alt-Tab диалог выбора не появляется — комбинация лишь возвращает фокус этому окну. В Windows 10 это означает невозможность выхода из полноэкранного приложения через Alt-Tab, т.к. рабочий стол не представлен как отдельное окно[11].
Для возвращения к стилю маленьких значков XP в Vista можно отключить «Enable Desktop Composition» («Включить композицию рабочего стола») в дополнительных параметрах производительности или завершить процесс Dwm.exe.
В Windows 7 при использовании Alt-Tab после задержки в одну секунду отображается полноразмерное окно соответствующего приложения (скрывая остальные) — это часть функции Aero Peek. Задержка регулируется параметром LivePreview_ms в реестре.
Сообщалось о проблемах, когда диалог переключателя не остаётся поверх других окон[12][13], однако навигация с помощью мыши возможна. Причиной является работа определённых фоновых служб и гаджетов[14]. Иногда помогает завершение sidebar.exe или других программ[15].
Причиной ошибки бывает наличие окон с нулевыми размерами, закреплённых «всегда поверх» — для решения используется специальная утилита[15].
Для возврата к значкам XP в Windows 7 можно создать параметр AltTabSettings в реестре (DWORD=1) по адресу HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\.
В Windows 7 комбинация Ctrl+Alt+Tab ↹ позволяет вывести переключатель на экран и навигировать по нему даже после отпускания клавиш. Перемещение возможно клавишами-стрелками или Tab (по кругу), выбор — Enter или мышью, отмена — Esc.
Для восстановления схемы Alt-Tab из XP можно удерживать левый Alt, затем нажать правый Alt, затем Tab.
Распространённой проблемой является случайное нажатие комбинации Alt-Shift вместо Alt-Tab, что по умолчанию приводит к смене раскладки клавиатуры. Решение — перенастройка или отключение данной горячей клавиши в панели управления (Региональные настройки — Языки).
Аналоги в других системах
На macOS сходный функционал обеспечивается сочетанием ⌘ Command+Tab ↹, при этом переключение осуществляется между приложениями, а не окнами. В macOS также возможна навигация по переключателю мышью, а к значку приложения можно «перетаскивать» файлы для открытия. Выделенное приложение можно быстро скрыть («H») или завершить («Q»), не закрывая меню. Переключение между окнами внутри одного приложения выполняется через ⌘ Command+`. После вызова Command-Tab сочетание Command-` действует как Command-Shift-Tab (цикл в обратном порядке). Навигацию также можно выполнять стрелками влево/вправо.
Если в приложении свёрнуты все окна, их необходимо предварительно восстановить.
В Classic Mac OS изначально не было горячей клавиши для переключения приложений — её добавляли сторонние панели управления.
В iOS реализовано аналогичное сочетание ⌘ Command+Tab ↹, позволяющее переключаться между недавно запущенными приложениями (до девяти в альбомной и шести в портретной ориентировке). Понятие «открытого» приложения менее выражено, чем в настольных ОС. Для движения назад используется ⌘ Command+⇧ Shift+Tab ↹.
В UNIX-подобных средах (например, fvwm, KDE, Xfce, GNOME) реализованы совместимые функции. В некоторых случаях (например, в Sun CDE или старых fvwm) комбинация Alt-Tab лишь циклически переключается между окнами или вызывает аплет со списком для выбора мышью/стрелками. В отдельных оконных менеджерах (например, WindowLab) список не отображается — окна просто выводятся на передний план по очереди.
Не все оконные менеджеры предоставляют такую функцию по умолчанию — в Blackbox необходим сторонний инструмент (например, bbkeys).
Compiz Fusion реализует аналогичный переключатель с отображением миниатюр окон и их иконок. Также поддерживается движение назад (Alt-Shift-Tab) и эффект пространственного 3D-переключения (аналог Flip 3D в Windows — Win-Tab).
Оконный менеджер Metacity обеспечивает похожий функционал на Windows до Vista, однако показывает только контур выбранного окна. В Windows отображается всё содержимое окна, что упрощает выбор.
История
Комбинация Alt-Tab присутствует во всех версиях Windows начиная с Windows 1.0[1]. Визуальное отображение списка окон появилось только в Windows 3.1x, где оно называлось CoolSwitch и включалось через соответствующую опцию («Fast "Alt+TAB" Switching») в апплете настроек экрана[16].
Ранее Alt-Tab работал схоже с Alt-Esc (переключение между окнами), но последнее перерисовывало каждое окно сразу при нажатии, а Alt-Tab — лишь после отпускания клавиши Alt.
Несовместимости и особенности в приложениях
Иногда отдельные программы нарушают ожидаемую схему работы Alt-Tab. Например, Adobe Reader 7.0.x (подобно новым версиям Microsoft Word) заводит отдельный значок в переключателе Alt-Tab для каждого документа MDI. Однако Adobe Reader перемещает в начало списка две записи при выборе документа Alt-Tab — иконку основного окна и иконку документа. Таким образом, однократное нажатие Alt-Tab переключает на вторую запись (иконку PDF-документа), что лишает пользователя привычного поведения «переключения на предыдущее приложение». Корректность работы Alt-Tab зависит от реализации приложения.
Примечания
Литература
- Raymond Chen, The Old New Thing: What is the Alt+Tab order? (англ.). Дата обращения: 23 июня 2024.