Pull to refresh

Корявых интерфейсов пост (keys/shortcuts)

Interfaces *
Давно хотел высказаться на одну тему. А именно «Клавиши-Модификаторы» (Shift, Alt, CTRL, Win/CMD/Apple/Amiga).

Имеют ли они право (при нажатии на них) выполнять какое-либо действие?

Я вот считаю, что не имеют. Взять, например, ALT — он используется в комбинациях клавиш типа ALT+F4 (win) или ALT+F2 (Far), или (прости господи) ALT+SHIFT (rus/lat).

Однако человек может передумать нажимать комбинацию клавиш или нажать клавишу-модификатор случайно. И что же тогда произойдёт? На «безопасных», нормальных клавишах-модификаторах — ничего.

К ним в Windows можно отнести Shift и CTRL. А на «опасных» типа WIN или ALT-а — произойдёт совершеннейшая ерунда: ALT — сменит фокус ввода, переместив курсор в строку меню. WIN — вообще может выкинуть вас из полноэкранного режима приложения, только для того, чтобы радостно показать вам меню «пуск».

Отсюда первое правило клавиатурного пользовательского интерфейса: клавиша-модификатор сама по себе должна быть инертна. (При нажатии на неё ничего не должно происходить.)

Далее, есть ужасное сочетание ALT+SHIFT, которое в некоторых случаях используется в Windows для переключения раскладок клавиатуры. Чем же оно ужасно? Если вы промахнулись по SHIFT-у или недостаточно чётко его нажали и он не сработал — сработает одиночный ALT, который изменит фокус ввода и выплюнет вас в строку меню. А так как вы в это время писали текст — вы этого можете не заметить и ваши нажатия в худшем случае могут привести к выполнению каких-либо команд меню, либо просто к неприятному вводу нескольких букв в пустоту.

Сочетание CTRL+SHIFT не особо лучше, так как оно хоть и является «безопасным» и инертным (то есть при несрабатывании той или иной клавиши — ничего не произойдёт), обратная сторона этой «безопасности» — это то, что в фокусе внимания невозможно узнать произошло ли переключение (индикатор рус/лат, как правило находится вне поля зрения во время набивки текста).
А всё почему? Потому что нарушено второе правило: сочетания клавиш-модификаторов друг с другом также должны оставаться инертны (то есть нельзя назначать на сочетания типа CTRL+SHIFT или CTRL+SHIFT+ALT какие-либо действия — во-первых потому, что если это действие молчаливое и незаметное — невозможно будет сразу однозначно определить совершилось оно или нет, а во вторых, любое исключение из правила инертности клавиш-модификаторов разрушает ощущение «безопасности»).

Какое сочетание было бы более удачным для переключения раскладки? (раз уж его привели в пример). А вот хотя-бы то же CTRL+Space (или CMD+Space на Mac). Почему оно лучше? 1) используется сочетание безопасной клавиши-модификатора и условно-безопасной клавиши «пробел» (она условно-безопасна при вводе текста — так как знак пробела не портит текст). 2) в случае несрабатывания клавиши-модификатора, мы сразу увидим это — вместо переключения раскладки введётся пробел.

В общем, для полного счастья в windows необходимо: 1) сделать все клавиши-модификаторы инертными и избавить, наконец ALT и WIN от этих ужасных побочных действий. 2) отключить все действия назначенные на сочетания клавиш-модификаторов.

И тогда, возможно, управление приложениями (и самой системой) с помощью горячих клавиш — станет удобнее (начнут, наконец, полномасштабно использовать кнопку «WIN» наравне со всеми).

(p.s. этот пост — ответ на подзамочную публикацию. Чтобы прочитать её, подпишитесь на блог «эти пользовательские интерфейсы».)

N.B. Друзья, переключение раскладки — всего лишь один из примеров. Не стоит его принимать близко к сердцу =) Главный вопрос звучит так: «должны ли клавиши-модификаторы и их сочетания быть инертны».
(Иными словами: стоит ли ради сомнительного удобства вызывать какую-либо одну функцию одной клавишей — получать неудобство от использования данной клавиши во всех сочетаниях с ней?)
Tags:
Hubs:
Total votes 100: ↑71 and ↓29 +42
Views 2.7K
Comments Comments 149