Написал комментарий к посту Умные кавычки
Из личного опыта
Я не всегда печатаю в редакторах. Иногда это заметки, поля ввода, мессенджеры или IDE. Настраивать автозамену везде - невозможно. Поэтому я сделал эту утилиту для себя.
Делиться стал на случай, если кому-то тоже пригодится.
Техническое объяснение
Но вы не совсем правы в том, что «это вообще не нормально» - для низкоуровневых хуков (WH_KEYBOARD_LL) администраторские права не требуются по умолчанию.
Проблема была в библиотеке «keyboard», которую я использовал. Она требует прав из-за своего внутреннего устройства (работа с драйверами на Linux и особенности реализации на Windows).
Да, она на питоне. Простая, переносимая, без установки. Можно за минуту сделать при помощи любой ИИ.
Попробую.
Написал комментарий к посту Умные кавычки
Поясню:
«keyboard» - это библиотека для языка программирования Python, которая позволяет программе полностью управлять клавиатурой: отслеживать нажатия клавиш в любой программе, имитировать ввод с клавиатуры и создавать глобальные «горячие клавиши».
«pyautogui» - это библиотека для Python, которая позволяет программно управлять мышью и клавиатурой, а также работать с экраном (делать скриншоты, искать изображения на экране). В отличие от keyboard, она не перехватывает глобальные события, а просто имитирует действия пользователя в активном окне.
Без прав администратора Windows НЕ позволяет перехватывать нажатия глобально (пока ты в браузере, мессенджере, Ворде и тд, а программа в фоне). Это ограничение ОС, не моя прихоть. Альтернативы без админ-прав (SendInput, блокировка через фильтр-драйвер, DLL-инжект) либо сложны, либо требуют прав, либо не подходят для автозамены кавычек.
Если хотите - сделать версию без админ-прав, тогда она будет работать ТОЛЬКО внутри самой программы, а не во всех приложениях.
Смысл тогда?
Автозамена в редакторе - это 10 разных настроек в 10 разных местах.
А с моей программой - запустил 1 раз и забыл. Работает везде: Word, Telegram, браузер, IDE.
Попробуйте сделать две демо-версию - увидите разницу.
Прежде чем умничать, вы хотя бы в нейронке спросите, зачем и почему.
В той же нейронке возьмите мои ответы и вставьте и там вам разжуёт, а то из пустого в порожни.
Я говорю: она позволяет глобально использовать кавычки.
Вы мне: Дак можно использовать библиотеки, которые не выполняют твою задачу!
В техническом: глобальный перехват нажатий вне вашего окна в Windows без прав невозможен в принципе. Именно это делает keyboard (и pynput, и любой низкоуровневый хук). pyautogui без прав не может отслеживать нажатия, пока вы переключились в Telegram — он только отправляет события, но не слушает их глобально.
Ключевая ошибка: «легко накатать скрипт на питоне, который будет отправлять нажатия без админских прав»
— Отправлять (эмуляция) — да.
— Слушать глобально (чтобы заменить [1] на [«] в чужом приложении) — нет.
Без прав Windows блокирует SetWindowsHookEx с WH_KEYBOARD_LL.
Поэтому либо админские права для глобальной автозамены, либо локальная автозамена только внутри своего окна (бесполезно). Третьего не дано.
Единственное уточнение: администраторские права нужны не всегда для WH_KEYBOARD_LL (на десктопных Windows без UAC-обхода — да, но есть нюансы с режимом совместимости и старыми версиями). Однако библиотека keyboard на Windows действительно часто их запрашивает из-за способа установки хука через внедрение в системный поток.
Так что итог: программа с глобальной автозаменой кавычек под Windows без прав администратора - миф. Либо права, либо не работает.