Sacagawea

Page loading, please, little wait
Version 0.1.0
Posted —
Last modified —
Посвящено Наталье Степуриной (Шмелёвой),
никогда не оставлявшую меня в трудную минуту.
Названо в честь Её игрового никнейма.

Header image

“What? Where? When?” has great popularity in the Russian language, not English, so the description of the package in Russian.

  1. Краткое описание
  2. Мотивация
  3. Ограничения к использованию
  4. Заявленное поведение
    1. Без использования third-party программ
      1. Режим Блиц/Суперблиц/Брейн Ринг
      2. 60-секундный режим
    2. C использованием сторонних программ
      1. Windows
  5. Установка и настройка
    1. Установка
      1. Обязательно
      2. Опционально
    2. Настройка
      1. Активация шорткатов
      2. AutoHotkey
      3. nnCron
  6. Опции
  7. Известные проблемы
    1. Sacagawea
    2. Зависимости
  8. Примечания
  9. Программное обеспечение при тестировании
  10. TODO
  11. Разработка
  12. Благодарности
  13. Лицензии

1. Краткое описание

Пакет для Sublime Text 3 — countdown timer для «Что? Где? Когда?».

2. Мотивация

По интернету смотрю записи игр «Что? Где? Когда?». Стараюсь находиться в таких же условиях, что и знатоки, — это касается и времени, отведённому на раздумывание. Среди готовых программ мне не удалось найти таймера, симулирующего поведение таймера телевизионных версий «Что? Где? Когда?» и отвечающего следующим условиям:

  1. Тренирующемуся игроку перед компьютером (далее по тексту игрок) требуется нажать один раз одно сочетание клавиш → можно сосредоточиться на обдумывании вопроса.
  2. Проигрывается звук за 10 секунд до окончания обдумывания.
  3. Не нужно ничего перенастраивать, если обдумываешь блиц/суперблиц. Нажал другое сочетание клавиш → у тебя 20, а не 60 секунд на обдумывание.

Поэтому решил написать таймер сам.

3. Ограничения к использованию

  1. Пакет должен корректно работать в Windows не раньше Windows XP, macOS и *nix-подобных операционных системах.
  2. Если не хотите производить действия, описанные в разделах «Установка» и «Настройка», пожалуйста, не пользуйтесь таймером. я ненавижу писать самостоятельно то, что уже качественно написано до меня.

На установку и настройку должно уйти не более нескольких минут.

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 секунд таймер доходит до нуля + раздаётся третий звук + вкладка с таймером закрывается.

При записи видео с экрана использовались следующие приложения:

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 → происходит возвращение во вкладку браузера со «Что? Где? Когда?».

При записи видео с экрана помимо вышеупомянутых использовались следующие приложения:

5. Установка и настройка

5.1. Установка

5.1.1. Обязательно

  1. Sublime Text 3, если ещё не установлен.

  2. Кроссплатформенный CLI-плейер mpg123. Для пользователей Windows рекомендовал бы установить Chocolatey, если ещё не установлен, → наберите в терминале:

    choco install mpg123 -y
    

    Установка стороннего плейера необходима, поскольку встроенные средства для воспроизведения аудио для Python, на котором написана Sacagawea, — ossaudiodev и winsoundне кроссплатформенные → придётся всё равно что-то дополнительно устанавливать.

  3. Пакет для Sublime Text FileCommands — нужен, чтобы принудительно закрыть вкладку с таймером.

  4. Пакет Sublime Suricate — чтобы активировать горячие клавиши. Аргументы, почему стоит использовать его, а не встроенный функционал Sublime Text.

  5. Установите пакет Sacagawea.

5.1.2. Опционально

  1. Пакет Preferences Editor — если пожелаете использовать звуки, отличные от звуков по умолчанию.
  2. AutoHotkey, Sublime AutoHotkey, nnCron — для пользователей Windows и Firefox, см. ниже.

5.2. Настройка

После установки.

5.2.1. Активация шорткатов

В активном окне Sublime Text: Ctrl+Shift+P (⌘⇧p для Mac) → Suricate: Add ProfileEnterSacagaweaEnter.

Sacagawea

→ горячие клавиши активированы.

Если данные хоткеи задействованы в других Ваших плагинах или программах, можете их деактивировать. В активном окне Sublime Text: Ctrl+Shift+P (⌘⇧p для Mac) → Suricate: Add ProfileEnterSacagaweaEnter.

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
)#

Где:

6. Опции

  1. Вы можете использовать звуки, отличные от звуков по умолчанию.

7. Известные проблемы

7.1. Sacagawea

7.2. Зависимости

  1. По состоянию на май 2017 Package Control не поддерживает автоматическую установку зависимых пакетов. Было бы неплохо, если больше людей напишут в этой теме, что им нужен данный функционал, или хотя бы оставят комментарий вроде +1, дабы повысились шансы, что разработчики займутся проблемой.

8. Примечания

  1. Сочетания Ctrl+Context_Menu и Ctrl+Alt+Context_Menu выбраны по следующим причинам:

    1. находятся близко к середине клавиатуры, что удобно для правшей и левшей;
    2. доступны для нажатия одной рукой, тогда как другая записывает вопрос;
    3. если Вы используете другие пакеты для Sublime Text, эти другие пакеты занимают наиболее распространённые сочетания клавиш → возникают конфликты шорткатов.

    я использую/использовал более 400 пакетов → в кеймапе ни одного из них не была задействована клавиша Context_Menu.

    Если:

    • Вас не устраивают данные сочетания,

    или:

    • на Вашей клавиатуре нет клавиши Context_Menu,

    см. инструкцию, как в Sublime Text задавать собственные сочетания горячих клавиш.

9. Программное обеспечение при тестировании

10. TODO

  1. Unit-тесты?

11. Разработка

  1. Приветствуются любые конструктивные добавления, исправления ошибок и рефакторинг. При этом:

    1. Python-код должен соответствовать flake8 и pydocstyle. Это необходимо для поддержания качества кода.
    2. я считаю неконструктивным писать то, что уже качественно написано другими. Пожалуйста, не встраивайте прямо в пакет возможности, которые есть и хорошо работают в сторонних приложениях.

12. Благодарности

13. Лицензии

  1. правила использования звуков,
  2. лицензия на Sacagawea — MIT.