VHKT — мой pet-проект для изучения горячих клавиш разных приложений
Введение
Горячие клавиши существенно ускоряют работу с GUI приложениями и говорят о профессиональном уровне владения ими, а для консольных программ зачастую просто являются необходимым условием их использования. Когда я осваивал Vim, я почувствовал потребность в каком-то интерактивном обучающем горячими клавишами инструменте и хотя есть встроенный vimtutor, справочные материалы как https://vim.rtorr.com/ и даже игры https://vim-adventures.com/ и https://renzorlive.github.io/vimmaster/, я решил написать свой небольшой проект. А после реализации первой версии, я решил добавить поддержку обучения горячим клавишам не только для Vim, но и для других программ, таких как Chrome и bash (список планируется расширять далее). Так появился VHKT Hot Keys Tutor («V» сначала, как легко догадаться, значила «Vim», а потом название стало рекурсивным акронимом). Надеюсь, проект будет полезен не только мне, поэтому делюсь.
Установка
В данный момент проект не добавлен в какой-либо репозиторий пакетов и для использования нужно выкачать его с GitHub https://github.com/Gim6626/vhkt:
$ git clone https://github.com/Gim6626/vhkt.git
и установить зависимости:
$ pip3 install -r requirements.txt
Конечно лучше это делать в виртуальное окружение, если это вам знакомо, иначе просто используйте команду выше.
Пример использования
Посмотрим на работу программы на примере обучения горячим клавишам для bash, для этого запустим:
$ python3 vhkt.py hotkeys/bash.yaml
В первую очередь после запуска отобразится приветственный экран:
далее случайным образом будут выбираться действия, для которых нужно выбрать правильное сочетание клавиш из списка, как здесь:
Если вы выбрали правильный вариант, вы увидите следующее сообщение:
В противном случае вам будет предложено показать правильный вариант:
Чтобы запомнить горячую клавишу или команду, необходимо ввести её правильно три раза. Ошиблись? Минус один, попробуйте ещё раз.
Ранее в VHKT была возможность не выбирать вариант горячих клавиш из списка, а непосредственно вводить его нажатием нужного сочетания клавиш, но с этим режимом были сложности из-за того, что не все сочетания можно отловить средствами ncurses, а некоторые могут перехватываться самим приложением терминала. Поэтому такой режим более не поддерживается, хотя пока что и остался в коде.
Краткая статистика вашего обучения отображается в верхней части экрана, а некоторые горячие клавиши управления самим приложением — в нижней, например, Ctrl+e для выхода.
Если вы не уверены в правильности горячей клавиши или команды, нажмите Ctrl+h и вы увидите подсказку:
Или, если вы нашли действие, которое не хотите запоминать, нажмите Ctrl+k, чтобы пропустить его, и вы увидите сообщение:
После завершения вы увидите следующее сообщение:
Затем вы можете перейти к изучению горячих клавиш другого приложения.
Внутренности
Стартовая точка приложения — скрипт vhkt.py, а основная логика сосредоточена в директории vhkt, в ней стоят внимание три файла:
basic.py— базовая логика хранения горячих клавиш и результатов обучения, а также самого процесса обучения;filestorage.py— реализация абстрактных классов хранения горячих клавиш и результатов обучения, где хранилищем является YAML файл;cursestui.py— реализация ncurses консольного интерфейса пользователя (файлыsimpletext.pyиcursestext.pyсодержат два других режима интерфейса, но больше не поддерживаются).
В папке tests планируется реализация тестового покрытия логики и интерфейса приложения, но сейчас там практически ничего нет.
Расширение
Пожалуй основная возможность расширения приложения — добавление поддержки других приложений. Для этого смотрите примеры из папки hotkeys/, создавайте подобные файлы для других приложений и просто укажите новый файл параметром vhkt.py.
Участие в проекте
В https://github.com/Gim6626/vhkt/issues уже есть небольшой список запланированных улучшений. Вы очень поможете проекту, если попробуете приложение и добавите туда свои пожелания или найденные проблемы, например запросы на файлы горячих клавиш для других приложений. А если захотите участвовать в разработке — пишите в Telegram @gim6626 или на почту gim6626@gmail.com, обсудим.








