Sacagawea
Посвящено Наталье Степуриной (Шмелёвой), никогда не оставлявшую меня в трудную минуту. Названо в честь Её игрового никнейма.
“What? Where? When?” has great popularity in the Russian language, not English, so the description of the package in Russian.
- Краткое описание
- Мотивация
- Ограничения к использованию
- Заявленное поведение
- Установка и настройка
- Опции
- Известные проблемы
- Примечания
- Программное обеспечение при тестировании
- TODO
- Разработка
- Благодарности
- Лицензии
1. Краткое описание ¶
Пакет для Sublime Text 3 — countdown timer для «Что? Где? Когда?».
2. Мотивация ¶
По интернету смотрю записи игр «Что? Где? Когда?». Стараюсь находиться в таких же условиях, что и знатоки, — это касается и времени, отведённому на раздумывание. Среди готовых программ мне не удалось найти таймера, симулирующего поведение таймера телевизионных версий «Что? Где? Когда?» и отвечающего следующим условиям:
- Тренирующемуся игроку перед компьютером (далее по тексту игрок) требуется нажать один раз одно сочетание клавиш → можно сосредоточиться на обдумывании вопроса.
- Проигрывается звук за 10 секунд до окончания обдумывания.
- Не нужно ничего перенастраивать, если обдумываешь блиц/суперблиц. Нажал другое сочетание клавиш → у тебя 20, а не 60 секунд на обдумывание.
Поэтому решил написать таймер сам.
3. Ограничения к использованию ¶
- Пакет должен корректно работать в Windows не раньше Windows XP, macOS и *nix-подобных операционных системах.
- Если не хотите производить действия, описанные в разделах «Установка» и «Настройка», пожалуйста, не пользуйтесь таймером. я ненавижу писать самостоятельно то, что уже качественно написано до меня.
На установку и настройку должно уйти не более нескольких минут.
4. Заявленное поведение ¶
4.1. Без использования third-party программ ¶
Sacagawea можно использовать, например, ведущему, если игра проходит оффлайн.
4.1.1. Режим Блиц/Суперблиц/Брейн Ринг ¶
В активном окне Sublime Text 3: игрок нажимает Ctrl+Alt+Context_Menu — или (зная о fuzzy-поиске) набирает в command palette Suricate: Sacagawea: Blitz/Supeblitz/Brain Ring → раздаётся звук + открывается вкладка, где 20 секунд происходит обратный отсчёт времени, → за 10 секунд до окончания отсчёта раздаётся другой звук → спустя ещё 10 секунд таймер доходит до нуля + раздаётся третий звук + вкладка с таймером закрывается.
При записи видео с экрана использовались следующие приложения:
- MarkdownEditing — цветовая схема для вкладки,
- SashaSublime — тема для Sublime Text,
- LastModifiedIndicator — отображает прямоугольники в gutter,
- KeypressOSD — отображает на экране нажатые клавиши.
4.1.2. 60-секундный режим ¶
В активном окне Sublime Text 3: игрок нажимает Ctrl+Context_Menu — или (зная о fuzzy-поиске) набирает в command palette Suricate: Sacagawea: “What? Where? When?” → раздаётся звук + открывается вкладка, где 60 секунд происходит обратный отсчёт времени → за 10 секунд до окончания отсчёта раздаётся другой звук → спустя ещё 10 секунд таймер доходит до нуля + раздаётся третий звук + вкладка с таймером закрывается.
4.2. C использованием сторонних программ ¶
Если игрок смотрит запись телепередач, использование Sacagawea без third-party программ неудобно, поскольку приходится переключаться между окнами браузера (или другой программы, где воспроизводится видео) и Sublime Text. К сожалению, вызвать команды Sublime Text, когда окно Sublime Text не находится в активном фокусе проблематично, без сторонних программ.
4.2.1. Windows ¶
Прозвучал вопрос → ведущий ТВ-передачи даёт сигнал к началу отсчёта — например, говорит «Время», — игрок нажимает Ctrl+Alt+Context_Menu (местонахождение клавиши Context_Menu) → запускается скрипт.
Скрипт автоматически выполняет следующие действия: нажимается пробел — клавишей Space в web-плейерах, которые знаю, останавливается воспроизведение видео, → Alt+Tab — переключение между приложениями, — в Sublime Text запускается процесс, описанный в разделе «Заявленное поведение», → вновь Alt+Tab → происходит возвращение во вкладку браузера со «Что? Где? Когда?».
При записи видео с экрана помимо вышеупомянутых использовались следующие приложения:
- TabCinema — дополнение для Firefox, разворачивающее видео в размеры окна, не экрана;
- AutoHotkey;
- nnCron.
5. Установка и настройка ¶
5.1. Установка ¶
5.1.1. Обязательно ¶
- Sublime Text 3, если ещё не установлен.
- Кроссплатформенный CLI-плейер mpg123. Для пользователей Windows рекомендовал бы установить Chocolatey, если ещё не установлен, → наберите в терминале:
choco install mpg123 -y
Установка стороннего плейера необходима, поскольку встроенные средства для воспроизведения аудио для Python, на котором написана Sacagawea, — ossaudiodev и winsound — не кроссплатформенные → придётся всё равно что-то дополнительно устанавливать.
- Пакет для Sublime Text FileCommands — нужен, чтобы принудительно закрыть вкладку с таймером.
- Пакет Sublime Suricate — чтобы активировать горячие клавиши. Аргументы, почему стоит использовать его, а не встроенный функционал Sublime Text.
- Установите пакет Sacagawea.
5.1.2. Опционально ¶
- Пакет Preferences Editor — если пожелаете использовать звуки, отличные от звуков по умолчанию.
- AutoHotkey, Sublime AutoHotkey, nnCron — для пользователей Windows и Firefox, см. ниже.
5.2. Настройка ¶
После установки.
5.2.1. Активация шорткатов ¶
В активном окне Sublime Text: Ctrl+Shift+P (⌘⇧p для Mac) → Suricate: Add Profile → Enter → Sacagawea → Enter.
→ горячие клавиши активированы.
Если данные хоткеи задействованы в других Ваших плагинах или программах, можете их деактивировать. В активном окне Sublime Text: Ctrl+Shift+P (⌘⇧p для Mac) → Suricate: Add Profile → Enter → Sacagawea → Enter.
5.2.2. AutoHotkey ¶
Создайте и сохраните 2 файла: Sacagawea-CHGK.ahk и Sacagawea-Blitz.ahk.
Sacagawea-CHGK.ahk:
WinActivate, Mozilla Firefox ahk_class MozillaWindowClass
Sleep, 300
Send, {Space}
Sleep, 300
Send, {LAlt Down}
Sleep, 300
Send, {Tab}
Sleep, 300
Send, {LAlt Up}
Sleep, 1000
WinActivate, Sublime Text ahk_class PX_WINDOW_CLASS
Send, {LControl Down}
Sleep, 300
Send, {LShift Down}
Sleep, 300
Send, {p}
Sleep, 300
Send, {LShift Up}
Sleep, 300
Send, {LControl Up}
Sleep, 300
Send, Suricate: Sacagawea: “What? Where? When?”
Sleep, 300
Send, {Enter}
Sleep, 300
Send, {LAlt Down}
Sleep, 300
Send, {Tab}
Sleep, 300
Send, {LAlt Up}
Sleep, 300
ExitApp
Sacagawea-Blitz.ahk:
WinActivate, Mozilla Firefox ahk_class MozillaWindowClass
Sleep, 300
Send, {Space}
Sleep, 300
Send, {LAlt Down}
Sleep, 300
Send, {Tab}
Sleep, 300
Send, {LAlt Up}
Sleep, 1000
WinActivate, Sublime Text ahk_class PX_WINDOW_CLASS
Send, {LControl Down}
Sleep, 300
Send, {LShift Down}
Sleep, 300
Send, {p}
Sleep, 300
Send, {LShift Up}
Sleep, 300
Send, {LControl Up}
Sleep, 300
Send, Suricate: Sacagawea: Blitz/Superblitz/Brain Ring
Sleep, 300
Send, {Enter}
Sleep, 300
Send, {LAlt Down}
Sleep, 300
Send, {Tab}
Sleep, 300
Send, {LAlt Up}
Sleep, 300
ExitApp
#esc::ExitApp
Скомпилируйте оба файла — это можно сделать в Sublime Text 3, если использовать пакет Sublime AutoHotkey.
5.2.3. nnCron ¶
Добавьте в кронтаб следующие строки:
#( Sacagawea-CHGK
WatchHotKey: "^{APP}"
Action:
StartIn: "D:\AutoHotkey"
START-APP: D:\AutoHotkey\Sacagawea-CHGK.exe
)#
#( Sacagawea-Blitz
WatchHotKey: "^@{APP}"
Action:
StartIn: "D:\AutoHotkey"
START-APP: D:\AutoHotkey\Sacapawea-Blitz.exe
)#
Где:
- D:AutoHotkeySacagawea-CHGK.exe и D:AutoHotkeySacagawea-Blitz.exe — пути к скомпилированным файлам Sacagawea-CHGK.ahk и Sacagawea-Blitz.ahk соответственно,
- D:AutoHotkey — папка, в которой содержатся скомпилированные файлы из предыдущего пункта списка,
^@{APP}
и^{APP}
— горячие клавиши nnCron: Ctrl+Context_Menu и Ctrl+Alt+Context_Menu соответственно.
6. Опции ¶
- Вы можете использовать звуки, отличные от звуков по умолчанию.
7. Известные проблемы ¶
7.1. Sacagawea ¶
7.2. Зависимости ¶
- По состоянию на май 2017 Package Control не поддерживает автоматическую установку зависимых пакетов. Было бы неплохо, если больше людей напишут в этой теме, что им нужен данный функционал, или хотя бы оставят комментарий вроде +1, дабы повысились шансы, что разработчики займутся проблемой.
8. Примечания ¶
- Сочетания Ctrl+Context_Menu и Ctrl+Alt+Context_Menu выбраны по следующим причинам:
- находятся близко к середине клавиатуры, что удобно для правшей и левшей;
- доступны для нажатия одной рукой, тогда как другая записывает вопрос;
- если Вы используете другие пакеты для Sublime Text, эти другие пакеты занимают наиболее распространённые сочетания клавиш → возникают конфликты шорткатов.
я использую/использовал более 400 пакетов → в кеймапе ни одного из них не была задействована клавиша Context_Menu.
Если:
- Вас не устраивают данные сочетания,
или:
- на Вашей клавиатуре нет клавиши Context_Menu,
см. инструкцию, как в Sublime Text задавать собственные сочетания горячих клавиш.
9. Программное обеспечение при тестировании ¶
- Windows 10 Enterprise LTSB 64-bit EN,
- Sublime Text 3 Build 3126,
- mpg123 1.24.0.
10. TODO ¶
- Unit-тесты?
11. Разработка ¶
Приветствуются любые конструктивные добавления, исправления ошибок и рефакторинг. При этом:
- Python-код должен соответствовать flake8 и pydocstyle. Это необходимо для поддержания качества кода.
- я считаю неконструктивным писать то, что уже качественно написано другими. Пожалуйста, не встраивайте прямо в пакет возможности, которые есть и хорошо работают в сторонних приложениях.