Алгоритм назначения сочетаний клавиш
У меня есть несколько вариантов меню в моей программе, например:
Which option do you want? (choose one)
f: First option
s: Second option
t: Third option
Затем пользователь нажимает f
, s
или же t
сделать свой выбор. Для этого примера я выбрал буквы вручную, и должно быть понятно, как.
Но в некоторых случаях возникают конфликты: предположим, у меня был Fourth option
- Я не могу использовать f
, Разумный выбор включает F
, h
и другие, в зависимости от философии UX.
Существует ли алгоритм, который, учитывая список строк, генерирует уникальную мнемоническую букву для идентификации каждой строки? Под мнемоникой я подразумеваю, что опция должна предлагать букву (как в моем примере), так что легко запомнить, что есть что (в отличие от простого сопоставления всего с a, b, c или x, y, z).
Как я отметил выше, есть несколько способов сделать это, в зависимости от того, что вы предпочитаете: заглавные буквы, буквы в первом слове, буквы вторичных уникальных слов и т. Д. По этому вопросу меня это не особо волнует, поэтому не стесняйтесь использовать свои собственные правила - до тех пор, пока алгоритм дает достаточно удобные для пользователя результаты.
1 ответ
Использованный мной базовый алгоритм выглядит следующим образом:
- Выберите первую букву (как в вашем примере). Следите за тем, какие буквы вы выбираете.
- Когда выбрана выбранная буква, выберите следующую букву, если она доступна.
- Если букв больше нет, выберите одну лексикографически (первая свободная буква из алфавита)
- Если больше нет букв, ничего не выбирайте, опция не будет адресуемой. Это имеет смысл с меню, которые также кликабельны.
Конечно, есть твики, которые вы можете применить:
различает ли ваш терминал / ОС соглашение между прописными и строчными буквами? Вы можете использовать это после шага 2 и до шага 3 (если больше не осталось букв для использования, используйте заглавную букву).
Вы можете использовать и обнаружить Alt, Ctrl, Win?
Есть ли предварительно назначенные ярлыки, которые вам нужно сохранить (например, s для сохранения)? Назначьте их перед первым шагом.