Skip to content

WinputAlert 是一款基于 Python 开发的输入法状态切换提示的GUI应用

License

Notifications You must be signed in to change notification settings

isinvon/WinputAlert

Repository files navigation

Clash

WinputAlert 是一款基于 Python 开发的输入法状态切换提示的GUI应用

🎈展示

Clash Clash
Clash Clash
Clash Clash
Clash Clash

💬简单聊聊

用过宏碁Acer电脑的小伙伴应该都知道,安装了宏碁的 QuickAccess 这个东西之后,按下 Caps 大小写按键会显示大小写的切换,但是由于外国人都是用英文,所以就没有显示中文的功能,于是我就用 Python做了一个能提示大小写和中英文的软件,笔者使用的电脑屏幕缩放非常小,所以打字切换输入法的时候看状态栏的切换变化是很累眼的。但是又不想使用一直悬浮着的输入法状态栏,对于喜欢简洁的笔者来说过于碍眼。

另外部分 Windows 的用户因该遇到过按下输入法却发现输入法没有被切换的情况,曾经在贴吧有很多人反馈,所以做了这个软件,虽然不呢解决微软系统 cao dan 的 bug,但是通过这个软件切换输入法的时候能够直观看到切换状态,算是比较安心。

这个软件主要原理是识别shiftctrl+spacecaps切换输入法、大小写来判断输入法GUI是否显示,其他情况下不会显示。

目前仅支持Window,还不打算做MacLinuxPyside6开发难度实在比使用html来的艰难。

👋使用方式

方式一(通过main.py启动)

git clone 源代码到本地

git clone https://gitee.com/sinvon/WinputAlert.git

进入WinputAlert根目录

cd ./WinputAlert

创建虚拟环境

python -m venv venv

安装必要的库

pip install -r requirements.txt

运行

briefcase dev

方式二(通过 msi 安装(msi即windows专用安装程序))

系统支持: windows11、Windows10 在🔗WinputAlert安装包下载 中找到msi后缀的安装包下载后按指导安装即可

✈️原理

🚀 通过 win32Api 检测键盘状态找到句柄,只有在按下shift(shift为左右shift任一)、caps、ctrl+space(ctrl为左右ctrl任一)时检测输入法和大写锁定状态的变化,并相应地显示合适的 GUI 窗口,且能在一定时间后自动隐藏窗口,而不是重新建立GUI示例,从而提高GUI切换的响应速度,同时节约CPU资源。

🚀 关键点:在最后一次按下按键之后开始对GUI的隐藏延迟时间开始计时(重置计时器),避免计时之后连续按下按键导致GUI瞬间消失。

✨使用的库

  • psutil
  • PySide6
  • PySide6-stubs 解决PySide6语法提示问题
  • PySide6_Addons
  • PySide6_Essentials
  • pywin32
  • briefcase
  • keyboard

⚠️注意(可能遇到的问题)

🚀改进

  1. 从PyQt5换成了PySide6(PySide6部分组件向下兼容PyQt5)
  2. 使用 Briefcase 构建重构项目,可将Python项目打包成可执行文件 msi、exe、dmg、deb等等

😮‍💨最后

开始是想用electron开发,但是觉得大材小用,体积可能太大,然后用Thinter + Python + Pyinstaller开发了样品,但是Think对圆角支持不太好,Pyinstaller打包各种报错,所以用了briefcase + PySide6,写了差不多结束发现 PySide 和 PyQt 写的东西虽然运行的时候占用小,但是磁盘占用较大,打包的可执行文件也挺大的,主要是PyQt、PySide依赖的库都非常多,大概有几百个库吧,这点比较可惜。且由于我对PyQt生态不太熟悉,所以组件封装的代码可读性可能较差。程序运行占用如下:

Clash

About

WinputAlert 是一款基于 Python 开发的输入法状态切换提示的GUI应用

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages