Найти в Дзене
PythonTalk

Ваш кот ходит по клавиатуре, пока вы работаете?

Знакомая ситуация? Отходишь на кухню за кофе, возвращаешься, а твой пушистый уже отправил в рабочий чат сообщение вида «жжжждлоjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjk» 😼. В лучшем случае. В худшем — закрыл важный документ без сохранения или оформил на твое имя микрокредит. Казалось бы, это вечная и нерешаемая проблема, одна из тех констант вселенной, с которыми приходится мириться. Но не для всех. Один разработчик решил, что с него хватит, и, как и положено настоящему инженеру, не стал ругаться с котом, а написал код. Так на свет появился гениальный в своей простоте проект — CatLock. CatLock — это крошечная утилита для Windows, которая делает одну простую вещь: по нажатию горячей клавиши (по умолчанию Ctrl+L) она полностью блокирует клавиатуру. Но фишка не в этом. Вместо того чтобы просто выключать ввод, программа создает поверх всех окон полупрозрачный слой. Вы продолжаете видеть свой экран — например, можете смотреть фильм или следить за графиками — но никакие нажатия к
Оглавление

Знакомая ситуация? Отходишь на кухню за кофе, возвращаешься, а твой пушистый уже отправил в рабочий чат сообщение вида «жжжждлоjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjk» 😼. В лучшем случае. В худшем — закрыл важный документ без сохранения или оформил на твое имя микрокредит.

Казалось бы, это вечная и нерешаемая проблема, одна из тех констант вселенной, с которыми приходится мириться. Но не для всех. Один разработчик решил, что с него хватит, и, как и положено настоящему инженеру, не стал ругаться с котом, а написал код.

Так на свет появился гениальный в своей простоте проект — CatLock.

Что это такое и как работает?

CatLock — это крошечная утилита для Windows, которая делает одну простую вещь: по нажатию горячей клавиши (по умолчанию Ctrl+L) она полностью блокирует клавиатуру.

Но фишка не в этом. Вместо того чтобы просто выключать ввод, программа создает поверх всех окон полупрозрачный слой. Вы продолжаете видеть свой экран — например, можете смотреть фильм или следить за графиками — но никакие нажатия клавиш не регистрируются. Ваш кот может устраивать на клавиатуре дискотеку, это ни на что не повлияет.

Чтобы снять блокировку, достаточно просто кликнуть мышкой.

Как это сделано под капотом? Магия на Python

Самое крутое, что вся эта магия реализована на Python с использованием нескольких известных библиотек. Это отличный пример того, как из простых «кубиков» можно собрать реально полезный продукт.

Давайте быстро пробежимся по основным компонентам:

  • keyboard: Сердце проекта. Эта библиотека позволяет глобально перехватывать и блокировать нажатия клавиш. С помощью keyboard.block_key(i) программа «отключает» все кнопки, а с помощью keyboard.unblock_key(key) возвращает их к жизни после клика мыши.
  • tkinter: Да, старый добрый tkinter! На нем создан тот самый полупрозрачный оверлей. Пара хитрых настроек (overrideredirect(True) для удаления рамок окна и attributes('-alpha', 0.3) для прозрачности) — и у вас есть полноэкранное окно, которое не мешает обзору.
  • pystray: Любое уважающее себя десктопное приложение должно жить в системном трее (это там, где часики). Эта библиотека позволяет создать иконку CatLock, по правому клику на которую появляется меню. Можно сменить горячую клавишу, настроить прозрачность или выйти из программы.
  • pyinstaller: Как превратить набор .py скриптов в один .exe файл, который можно просто запустить? pyinstaller в помощь. Автор проекта даже любезно оставил в README готовую команду для сборки.
Проект CatLock — это идеальный пример того, что для решения реальной проблемы не всегда нужны сложные фреймворки и нейросети. Иногда достаточно чистого Python и щепотки инженерной смекалки.

Почему это отличный pet-проект?

Я постоянно говорю, что лучшие учебные проекты — те, которые решают вашу личную боль. CatLock — идеальная иллюстрация этого тезиса.

  1. Простота и фокус. Программа не пытается быть комбайном. Она делает одну вещь, но делает ее хорошо.
  2. Полноценный продукт. Это не просто скрипт, а законченная утилита с настройками, иконкой в трее и проверкой обновлений.
  3. Отличная кодовая база для изучения. Хотите понять, как работают с GUI, глобальными хоткеями или как собрать .exe? Просто откройте исходники — там все наглядно и без лишних сложностей.

Так что в следующий раз, когда ваш кот решит помочь вам с кодом, знайте: решение есть. И оно, как и многое в нашем мире, написано на Python.Еще больше интересных находок, инсайтов и полезного кода для Python-разработчиков — в моем Telegram-канале PythonTalk.