Алгоритм назначения сочетаний клавиш

У меня есть несколько вариантов меню в моей программе, например:

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 ответ

Использованный мной базовый алгоритм выглядит следующим образом:

  1. Выберите первую букву (как в вашем примере). Следите за тем, какие буквы вы выбираете.
  2. Когда выбрана выбранная буква, выберите следующую букву, если она доступна.
  3. Если букв больше нет, выберите одну лексикографически (первая свободная буква из алфавита)
  4. Если больше нет букв, ничего не выбирайте, опция не будет адресуемой. Это имеет смысл с меню, которые также кликабельны.

Конечно, есть твики, которые вы можете применить:

  • различает ли ваш терминал / ОС соглашение между прописными и строчными буквами? Вы можете использовать это после шага 2 и до шага 3 (если больше не осталось букв для использования, используйте заглавную букву).

  • Вы можете использовать и обнаружить Alt, Ctrl, Win?

  • Есть ли предварительно назначенные ярлыки, которые вам нужно сохранить (например, s для сохранения)? Назначьте их перед первым шагом.

Другие вопросы по тегам