Skip to content

Commit

Permalink
v3.3.0 keymapTray
Browse files Browse the repository at this point in the history
* [+] add `keymapTray`
  • Loading branch information
cataerogong committed Feb 24, 2024
1 parent 067ac16 commit 35aae68
Show file tree
Hide file tree
Showing 6 changed files with 137 additions and 10 deletions.
41 changes: 36 additions & 5 deletions exe/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# 谱匣 - “键谱”网页的辅助增强程序

> 增加: “谱匣”的辅助增强程序 `KeymapTray.exe` ^_^
## 功能

* 让“键谱”像一个独立的单机程序一样运行(其实还是需要系统的浏览器)
Expand Down Expand Up @@ -32,18 +34,47 @@

如果“键谱”网页有更新版本了,直接下载 `keymap.html` 覆盖就行。

## KeymapTray.exe - “谱匣”的辅助增强程序

### 功能

* 全局热键呼出【键谱】窗口

* 可根据当前窗口显示对应的“键谱”

### 配置文件 `keymapTray.ini`

```ini
[Default]
; 两种【键谱】热键模式:
; 注:使用 AHK 热键格式,=空 表示不设置该热键
; 1. 组合键(常用 AHK 修饰键:^:Ctrl, !:Alt, +:Shift, #:Win)
hotkey1=^!k
; 2. 单键双击
hotkey2=Esc
[Keymaps]
; “键谱”与应用窗口对应关系
; 应用窗口标题关键字 = “谱匣”参数
; "应用窗口标题关键字"格式同 AHK 的 WinTitle,唯一限制是不能包含“=”
EmEditor = -P EmEditor -V k -S 1 -X 0 -H 1 -M t
```

## 安装

下载后解压缩,将 `keymap.html` 放到与 `keymap.exe` 同一个目录。

## 运行

双击 `keymap.exe`
两种方式:

* 直接运行“谱匣” `keymap.exe`

* 运行 `keymapTray.exe`

## 彩蛋
> 无需预先运行 `keymap.exe`
1. 既然 `keymap.html` 可以随意修改,那把任意网页文件改名为 `keymap.html` 然后运行 `keymap.exe` 呢?
+ 运行后在右下角“系统托盘”中会显示 `KeyMap Tray` 图标,右键单击显示菜单。

2. 再进一步,仿照 `keymap.html` 里代码写法,别的网页也能获得文件存储能力吗?
+ 按热键即可呼出【键谱】窗口,在【键谱】窗口中按热键可隐藏【键谱】窗口。

3. 少年,`Notepad.html` 在向你招手……
+ 右键菜单中选择 `Exit` 退出时会同时退出【谱匣】程序。
3 changes: 3 additions & 0 deletions exe/build.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@ mkdir dist\keymap\data
"%base%" encode.ahk2 keymap.py keymap.pye
"%compiler%" /base "%base%" /in keymap.ahk2 /out dist\keymap\keymap.exe %icon%
xcopy /s _runtime dist\keymap\_runtime\

"%compiler%" /base "%base%" /in keymapTray.ahk2 /out dist\keymap\keymapTray.exe %icon%
copy /y keymapTray.ini dist\keymap\
2 changes: 2 additions & 0 deletions exe/keymap.ahk2
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
;@Ahk2Exe-AddResource keymap.pye, #2

FileEncoding("UTF-8-RAW")
DetectHiddenWindows True

Console := False
stdout := 0
Expand Down Expand Up @@ -117,6 +118,7 @@ sys.argv[0] = r"{2}"
}

ActWin() {
WinShow("键谱 【精装礼盒版 *^____^* 】")
If (Mod(A_Args.Length, 2)) {
MsgBox("Error Args.")
ExitApp
Expand Down
88 changes: 88 additions & 0 deletions exe/keymapTray.ahk2
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
#Requires AutoHotkey v2.0
#SingleInstance Force

FileEncoding("UTF-8-RAW")
DetectHiddenWindows True
InstallKeybdHook

KEYMAP_TITLE := "键谱 【精装礼盒版 *^____^* 】"

SplitPath(A_ScriptFullPath, , &_DIR, &_EXT, &_NAME, &_DRIVE)

IniFile := A_ScriptDir . "\" . _NAME . ".ini"

ExeFile := A_ScriptDir . "\keymap.exe"
If (FileExist(ExeFile))
ExeFile := "`"" . ExeFile . "`""
Else {
MsgBox("Can not find 'keymap.exe' !")
ExitApp
}

hotkey1 := IniRead(IniFile, "Default", "hotkey1", "")
hotkey2 := IniRead(IniFile, "Default", "hotkey2", "")
kms := IniRead(IniFile, "Keymaps")
keymaps := Array()
Loop Parse, kms, "`n", A_Space A_Tab
{
a := StrSplit(A_LoopField, "=", A_Space A_Tab, 2)
If (a.Length == 2) {
keymaps.Push(a)
}
}

ToggleKeyMap(params*) {
If WinActive(KEYMAP_TITLE)
HideKeymap()
Else
ShowKeymap()
}
ToggleKeyMap2(params*)
{
if (A_ThisHotkey == A_PriorHotkey) && (A_TimeSincePriorHotkey < 300) {
ToggleKeyMap()
}
}
ShowKeymap(params*) {
Global keymaps
P := ""
For km In keymaps {
If km[1] && WinActive(km[1]) {
P := " " . km[2]
Break
}
}
Run(ExeFile . P)
}
HideKeymap(params*) {
If WinExist(KEYMAP_TITLE) {
WinHide(KEYMAP_TITLE)
}
}
ExitKeymap(ExitReason, ExitCode) {
If WinExist(KEYMAP_TITLE) {
WinClose(KEYMAP_TITLE)
}
}

If (hotkey1) {
Hotkey(hotkey1, ToggleKeyMap)
}
If (hotkey2) {
Hotkey("~" . hotkey2 . " UP", ToggleKeyMap2)
}

OnExit(ExitKeymap)

A_TrayMenu.Insert("1&", "显示【键谱】", ShowKeymap)
A_TrayMenu.Insert("2&", "隐藏【键谱】", HideKeymap)
A_TrayMenu.Insert("3&")
A_TrayMenu.Insert("4&")
A_TrayMenu.Rename("4&", "热键(组合键): " . hotkey1)
A_TrayMenu.Insert("5&")
A_TrayMenu.Rename("5&", "热键(双击键): " . hotkey2)
A_TrayMenu.Insert("6&")
A_TrayMenu.Default := "1&"
A_TrayMenu.Disable("4&")
A_TrayMenu.Disable("5&")
A_IconTip := "Keymap Tray"
Binary file added exe/keymapTray.ini
Binary file not shown.
13 changes: 8 additions & 5 deletions release.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,26 @@ exit /b

:html
if exist release\keymap-%__version__%-html.zip del release\keymap-%__version__%-html.zip
zip release\keymap-%__version__%-html.zip keymap.html README.md LICENSE js\* *.example.* keymaps\*
zip release\keymap-%__version__%-html.zip keymap.html README.md MANUAL.md LICENSE js\* *.example.* keymaps\*
exit /b

:exe
if exist pack_tmp rmdir /s /q pack_tmp
mkdir pack_tmp
mkdir pack_tmp\data

copy /y keymap.html pack_tmp\
copy /y README.md pack_tmp\
::copy /y keymap.html pack_tmp\
::copy /y README.md pack_tmp\
::copy /y MANUAL.md pack_tmp\
copy /y LICENSE pack_tmp\
xcopy /s exe\dist\keymap\keymap.exe pack_tmp
copy /y exe\dist\keymap\keymap.exe pack_tmp\
xcopy /s exe\dist\keymap\_runtime\ pack_tmp\_runtime\
copy /y exe\README.md pack_tmp\README-keymap-exe.md
copy /y exe\dist\keymap\keymapTray.exe pack_tmp\
copy /y exe\dist\keymap\keymapTray.ini pack_tmp\

if exist release\keymap-%__version__%-exe-x64.zip del release\keymap-%__version__%-exe-x64.zip
cd pack_tmp
..\zip -r ..\release\keymap-%__version__%-exe-x64.zip keymap.* README* LICENSE _runtime\ data\
zip -r ..\release\keymap-%__version__%-exe-x64.zip keymap.* keymapTray.* README-keymap-exe.md LICENSE _runtime\ data\
cd ..
exit /b

0 comments on commit 35aae68

Please sign in to comment.