Клавиатура важнее мыши

30.08.2026 · 5 мин

Вы только что закончили задачу в терминале, скопировали результат, переключились в GUI-приложение — и теперь руки тянутся к мыши, чтобы вставить текст. Знакомо?

Посмотрите на любое «современное» веб-приложение: редактирование профиля требует пяти кликов мышью, потому что кнопка Save физически не имеет фокуса при Tab-навигации.

На прошлой неделе я наткнулся на пост, который призывал разработчиков перестать делать TUI (terminal user interfaces — терминальные интерфейсы) и сосредоточиться на GUI (graphical user interfaces — графических интерфейсах). Пост попал на главную страницу HN и вызвал бурную дискуссию.

GUI-фреймворки теоретически мощнее TUI. Значит ли это, что интерфейсы должны быть мышезависимыми?

Почему аргумент про tui не работает

Как активный пользователь терминала, я ценю все TUI, которые позволяют мне оставаться в командной строке. Но я хочу разобраться с повторяющимся аргументом в защиту терминальных интерфейсов, у которого, по-моему, нет твёрдого фундамента.

TUI чаще поддерживает клавиатуру. Но это не аргумент против GUI. Это диагноз для конкретных приложений.

Если случайно взять GUI и TUI — второй с большей вероятностью окажется полностью keyboard-driven. Но это не значит, что нужно выбирать TUI вместо GUI. Это значит, что у конкретных GUI проблемы с клавиатурной навигацией.

Keyboard Navigation Gap
───────────────────────
┌────────────────────────┬─────────────┬───────────────────┬─────────────────────────────────┐
│ Действие               │ Мышь        │ Клавиатура        │ Проблема                         │
├────────────────────────┼─────────────┼───────────────────┼─────────────────────────────────┤
│ Навигация между полями │ Клик        │ Tab / Shift+Tab   │ Фокус не переходит?              │
│ Открытие меню          │ Клик        │ Alt / F10         │ Меню не появляется?              │
│ Выбор элемента в списке│ Клик        │ Стрелки           │ Список не реагирует?             │
│ Закрытие диалога       │ Клик на ×   │ Esc               │ Кнопка × есть, Esc не работает   │
└────────────────────────┴─────────────┴───────────────────┴─────────────────────────────────┘
Типичные gap’ы между декларацией и реальностью keyboard-driven интерфейсов

Ничто не мешает GUI быть полностью keyboard-driven — так же, как TUI, или даже лучше.

На самом деле, гайдлайны многих GUI-фреймворков явно рекомендуют поддержку клавиатурной навигации для всего функционала. Например, GNOME Human Interface Guidelines заявляют: каждое действие должно быть доступно с клавиатуры так же, как с мышью. Можно перемещаться и взаимодействовать с любой частью интерфейса без мыши.

Я сам так работаю и не хочу иначе.

Как я делаю интерфейсы

Когда я сажусь за код, я делаю так, чтобы приложения были дружелюбны к клавиатуре.

Моё первое GUI-приложение, Klisi, я сразу строил keyboard-driven. Это заняло время, но не потребовало rocket science. Результат — лучший UX.

Vim, VS Code, Figma (частично) — примеры приложений, где клавиатура основной инструмент. Пользователи выбирают их не из эстетики, а из скорости.

Это не вопрос сложности. Это вопрос воли разработчика.

Keyboard-first workflow
───────────────────────
┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│ Открыть      │ ▶  │ Выполнить    │ ▶  │ Закрыть      │
│ приложение   │    │ действие     │    │ без мыши     │
└──────────────┘    └──────────────┘    └──────────────┘
       ↑                   ↑                    ↑
   Tab / Hotkey        Enter / Space          Esc
Хороший интерфейс позволяет пройти весь сценарий без мыши

Чек-лист keyboard-driven интерфейса

Чек-лист: сработал ли ты на клавиатуре?

Если хотя бы один пункт не работает — интерфейс не keyboard-driven. Это не рекомендация, а критерий качества.

Вывод

GUI не обязан быть мышезависимым. Клавиатурная доступность — это не бонус, а базовое требование к качественному интерфейсу.

Если приложение нельзя полноценно использовать без мыши, проблема не в GUI как классе. Проблема в реализации.

Ссылки

Дмитрий Полухин — продуктовый дизайнер. Пишу про разработку, AI и дизайн интерфейсов. Обо мне, контакты и профили.