From ca396ffdc074997b615b5b02020736a24c5304a7 Mon Sep 17 00:00:00 2001 From: Xuesong Peng Date: Sun, 8 Sep 2024 22:44:28 +0800 Subject: [PATCH] feat: toggle suspend in tray menu --- .github/workflows/ci.yaml | 2 +- Lib/RabbitCommon.ahk | 1 + Lib/RabbitTrayMenu.ahk | 16 ++++++++++++++-- README.md | 2 +- Rabbit.ahk | 7 +------ 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 7c03fd9..cf27f8e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -57,7 +57,7 @@ jobs: make -C ${JIANDAO_DIR}/deps/opencc-tonggui cp ${JIANDAO_DIR}/deps/opencc-tonggui/opencc/* ${JIANDAO_DIR}/schema/opencc/ fi - rm ${JIANDAO_DIR}/schema/recipe.yaml + rm -f ${JIANDAO_DIR}/schema/recipe.yaml ${JIANDAO_DIR}/schema/rime.lua mkdir -p ${WORK}/schemas/jiandao cp -r ${JIANDAO_DIR}/schema/* ${WORK}/schemas/jiandao/ diff --git a/Lib/RabbitCommon.ahk b/Lib/RabbitCommon.ahk index c479268..671ce37 100644 --- a/Lib/RabbitCommon.ahk +++ b/Lib/RabbitCommon.ahk @@ -41,6 +41,7 @@ global RABBIT_FULL_MAINTENANCE := "2" global TRAY_MENU_GRAYOUT := false global STATUS_TOOLTIP := 2 +global box := 0 global ASCII_MODE_FALSE_LABEL := "中文" global ASCII_MODE_TRUE_LABEL := "西文" global ASCII_MODE_FALSE_LABEL_ABBR := "中" diff --git a/Lib/RabbitTrayMenu.ahk b/Lib/RabbitTrayMenu.ahk index 0560631..c184d9b 100644 --- a/Lib/RabbitTrayMenu.ahk +++ b/Lib/RabbitTrayMenu.ahk @@ -36,6 +36,7 @@ A_TrayMenu.add() A_TrayMenu.add("仓库主页", (*) => Run("https://github.com/amorphobia/rabbit")) A_TrayMenu.add() A_TrayMenu.add("重新部署", (*) => Deploy()) +A_TrayMenu.add("禁用/启用玉兔毫", (*) => ToggleSuspend()) A_TrayMenu.add("退出玉兔毫", (*) => ExitApp()) Sync() { @@ -46,6 +47,16 @@ Deploy() { Run(A_AhkPath . " " . A_ScriptDir . "\RabbitDeployer.ahk deploy 1") ExitApp() } +ToggleSuspend() { + global rime, session_id, box, STATUS_TOOLTIP + ToolTip() + if box + box.Show("Hide") + rime.clear_composition(session_id) + Suspend(-1) + ToolTip(A_IsSuspended ? "禁用" : "启用", , , STATUS_TOOLTIP) + SetTimer(() => ToolTip(, , , STATUS_TOOLTIP), -2000) +} if TRAY_MENU_GRAYOUT { ; A_TrayMenu.Disable("输入法设定") @@ -58,7 +69,7 @@ if TRAY_MENU_GRAYOUT { } ClickHandler(wParam, lParam, msg, hWnd) { - if !rime || !IsSet(session_id) || !session_id + if !rime || !IsSet(session_id) || !session_id || A_IsSuspended return if lParam == WM_LBUTTONUP { local old_ascii_mode := rime.get_option(session_id, "ascii_mode") @@ -77,8 +88,9 @@ UpdateTrayTip(schema_name := TRAY_SCHEMA_NAME, ascii_mode := TRAY_ASCII_MODE, fu TRAY_ASCII_MODE := !!ascii_mode TRAY_FULL_SHAPE := !!full_shape TRAY_ASCII_PUNCT := !!ascii_punct + local ss := A_IsSuspended ? "(禁用) " : "" A_IconTip := Format( - "玉兔毫 {}`n左键切换模式,右键打开菜单`n{} | {} | {}", TRAY_SCHEMA_NAME, + "玉兔毫 {}{}`n左键切换模式,右键打开菜单`n{} | {} | {}", ss, TRAY_SCHEMA_NAME, (TRAY_ASCII_MODE ? ASCII_MODE_TRUE_LABEL : ASCII_MODE_FALSE_LABEL), (TRAY_FULL_SHAPE ? FULL_SHAPE_TRUE_LABEL : FULL_SHAPE_FALSE_LABEL), (TRAY_ASCII_PUNCT ? ASCII_PUNCT_TRUE_LABEL : ASCII_PUNCT_FALSE_LABEL) diff --git a/README.md b/README.md index c97aaca..2d2634a 100644 --- a/README.md +++ b/README.md @@ -43,4 +43,4 @@ - 因热键冲突而取消了一些按键注册 - 与某些软件适配较差 - 桌面版 QQ 的密码输入框无法使用:[QQ密码输入框(防键盘钩子)原理分析](https://blog.csdn.net/muyedongfeng/article/details/49308993), -([页面存档备份](https://web.archive.org/web/20240907052640/https://blog.csdn.net/muyedongfeng/article/details/49308993),存于互联网档案馆),请使用 LCtrl + Space 禁用 / 启用玉兔毫(左控制键加空格键,暂不支持自定义按键) +([页面存档备份](https://web.archive.org/web/20240907052640/https://blog.csdn.net/muyedongfeng/article/details/49308993),存于互联网档案馆),可右键点击任务栏图标选择禁用/启用玉兔毫,或是在 `rabbit.custom.yaml` 里设置 `suspend_hotkey` 指定快捷键来禁用/启用玉兔毫 diff --git a/Rabbit.ahk b/Rabbit.ahk index 8054eaa..023cf49 100644 --- a/Rabbit.ahk +++ b/Rabbit.ahk @@ -339,12 +339,7 @@ ProcessKey(key, mask, this_hotkey) { if (suspend_hotkey and suspend_hotkey_mask) and (key = suspend_hotkey or SubStr(key, 2) = suspend_hotkey) and (mask = suspend_hotkey_mask) { - ToolTip() - box.Show("Hide") - rime.clear_composition(session_id) - Suspend(-1) - ToolTip(A_IsSuspended ? "禁用" : "启用", , , STATUS_TOOLTIP) - SetTimer(() => ToolTip(, , , STATUS_TOOLTIP), -2000) + ToggleSuspend() return }