惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
MyScale Blog
MyScale Blog
N
Netflix TechBlog - Medium
I
InfoQ
Jina AI
Jina AI
Martin Fowler
Martin Fowler
Recent Announcements
Recent Announcements
量子位
月光博客
月光博客
罗磊的独立博客
雷峰网
雷峰网
The Cloudflare Blog
V
V2EX
小众软件
小众软件
人人都是产品经理
人人都是产品经理
博客园 - Franky
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
S
SegmentFault 最新的问题

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Воскрешение NumLockCalc после 17 лет забвения
Akudlay_ru · 2026-04-25 · via Все публикации подряд на Хабре

Уровень сложностиПростой

Время на прочтение4 мин

Охват и читатели92

Мнение

В прошлый раз я рассказывал про КругоЗор — камеру-кружок поверх всех окон, которая выросла из «маленькой фичи на за вечер» в инструмент, которым я веду все совещания.
Сегодня вторая серия про одержимость одной функцией. На этот раз про клавишу, на которой у меня с ≈2003 года выработан рефлекс.

Программа, достойная благодарности

Я про NumLock Calculator 3.3 Владимира Потапова из Иркутска. Кто пользовался – кивает прямо сейчас. Кто не пользовался – представьте: жмёшь NumLock, появляется калькулятор, жмёшь ещё раз, и он спрятался в трей. Всё. Одна клавиша, которая 99% времени ничего не делает (вот честно, кто из вас осознанно включает/выключает режим цифрового блока?), вдруг становится самым быстрым инструментом на рабочем столе. Последнее её обновление было

Почти 25 (Двадцать пять!!!) лет верой и правдой. Быстрее, чем ткнуть мышкой иконку калькулятора. Результат в буфер и далее в документ. И так сотню раз в неделю. До момента обновления Win10 → 11, и до запрета *.exe на корпоративной технике.

Главная проблема в том, что палец всё равно сам тянется к NumLock, а там пустота, т.к. рефлекс на подкорке. Но время идёт: встроенный калькулятор Windows подтянул внешний вид, обзавёлся функциями, плюс хочется ещё и прозрачности, изменения размера, стиля под интерфейс 11-ой.

Я пробовал новые аналоги. Я пробовал AutoHotkey-скрипты. Часто думал, что отстал от жизни, что нормальные люди уже давно открывают калькулятор через мышь и не страдают. Но нет, палец всё равно шёл на NumLock. И каждый раз был маленький укол: всё, больше не работает.

Три ночи на прототип

Я не разработчик, а жертва своей идеи. Как и в истории с КругоЗором, в роли исполнителя нейросеть; в роли заказчика, тестировщика, и я с кофе в три ночи.

Задача звучала на пять минут: перехватить NumLock, показать/спрятать калькулятор Windows, вернуть NumLock обратно в предыдущее положение, чтобы не мешать тем, кто им пользуется. На деле - пару неполных ночей.

import keyboard
keyboard.on_press(lambda e: toggle() if e.name == 'num lock' else None)

Проблема первая: Windows уже переключила состояние NumLock до того, как мы получили событие. Надо эмулировать обратное нажатие:

if not (GetKeyState(VK_NUMLOCK) & 1):
    keybd_event(VK_NUMLOCK, 0, 0, 0)
    keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0)

Проблема вторая: калькулятор в Windows 11 — это приложение. Он живёт внутри хостового окна ApplicationFrameWindow, и если его свернуть обычным ShowWindow(SW_MINIMIZE), следующее нажатие NumLock не разворачивает его, а создаёт второй экземпляр. Пришлось нейросети разбираться с cloaked-окнами через DwmGetWindowAttribute(DWMWA_CLOAKED).

Проблема третья: прозрачность. Нативного калькулятора Windows API не предоставляет, но можно навесить WS_EX_LAYERED на чужое окно и крутить альфу через SetLayeredWindowAttributes. Получилось через пять попыток.

Через три ночи я получил ровно то, что хотел: палец на NumLock → калькулятор появляется, ещё раз → прячется. Прозрачность — ползунком в трее. Выложил себе в одну папку, забыл.

Как и с КругоЗором, я думал — на этом всё.

Как и с КругоЗором, я ошибался.

Когда недоделки не дают спать

Одержимость — это не когда ты запускаешь новый стартап. Одержимость — это когда одна нереализованная функция не даёт спать, и пока не доделаешь, тебя будет трясти.

На следующий день я вбивал в калькулятор цифры, получал результат, копировал, вставлял в смету и дописывал руками «₽/м²». И думал: а почему эти единицы измерения я каждый раз вбиваю руками? У меня же иконка в трее, в ней меню, в меню всё что угодно.

Появилось подменю «Единицы измерения». Один клик – и в буфер добавляется «млн. ₽/м²» к уже скопированному числу. Категории: валюта, площадь, масса, стройматериалы. Список читается из простого текстового файла units_menu.txt, чтобы каждый настроил под свой рабочий контекст.

Ещё через неделю: заметки прямо в меню трея. Строка ввода, Enter, и в заранее указанный .md-файл для уважаемого Obsidian. Дописывается строка с датой-временем. Без открытия Obsidian, без Alt-Tab в Notion, без потери фокуса. Пришла мысль — зафиксировал за две секунды. Форматы: md / txt / rtf.


Что в итоге:

CalcNumLock v7.3. ≈3000 строк Python + PyQt5, 50 МБ onefile-exe.

  • NumLock открывает/прячет Windows Calculator. Или любой выбранный exe.

  • Прозрачность — ползунком в трее, запоминается.

  • Единицы измерения — меню в трее, клик → в буфер (с опцией автовставки в курсор).

  • Заметки — поле ввода прямо в меню трея, Enter пишет в md/txt/rtf.

  • Учёт времени — CSV по дням, категории процессов, пауза, HTML-отчёт с графиками, экспорт за период.

  • Скриншоты — по смене окна или по таймеру, с автоматическим замедлением при ВКС, исключениями по exe, лимитом по диску и дням.

  • Всё в одном дарк-меню и одном диалоге настроек — шесть вкладок, раздел «Пути» показывает все файлы программы.

Собирается в один .exe — Python на целевой машине не нужен.

Бесплатно | Без рекламы | Работает без интернета


Что это значит (по честному)

Как и КругоЗор – это не бизнес. Это мой инструмент. Если у вас такой же рефлекс на NumLock и такая же ностальгия по калькулятору Потапова – забирайте, пользуйтесь, правьте units_menu.txt под себя.

Я знаю, что это тоже не взлетит. Анар Бабайкин был прав в прошлой статье: сервис одной фичи не решает глобальной проблемы. Но есть чувство, которое ни один бизнес-консультант не отменит: когда ты 20 лет давишь на одну клавишу, потом эта клавиша перестаёт работать, а потом ты берёшь и заставляешь её снова работать своими руками, даже если под капотом там уже совсем другая программа, и при этом скрипт позволяет поставить любой exe, даже тот же NumLock Calculator 3.3 от Потапова

Просто починить мир в той точке, где лично тебе неудобно. Если тоже тянете палец к NumLock и испытываете фантомную боль, держите ссылку:

👉 CalcNumLockканал программы, дистрибутив и обратная связь

👉 Исходник открытыйGitHub репозиторий