Perfect
This commit is contained in:
125
CapSpace.ahk
125
CapSpace.ahk
@@ -1,118 +1,21 @@
|
||||
#Requires AutoHotkey v2.0
|
||||
#SingleInstance Force
|
||||
|
||||
/**
|
||||
* CapSpace v2.0
|
||||
* 描述: 将 CapsLock 变为 Smart Ctrl/Esc,并增强虚拟桌面切换
|
||||
*/
|
||||
; 确保 RAlt 的穿透性(如果 Typeless 仍有冲突,保留此行)
|
||||
~RAlt::return
|
||||
|
||||
; --- 全局变量初始化 ---
|
||||
g_LastCtrlKeyDownTime := 0
|
||||
g_AbortSendEsc := false
|
||||
; 优化发送速度:SetKeyDelay 影响 SendEvent 的速度
|
||||
; 参数含义:延时 1ms,按键时长 1ms
|
||||
SetKeyDelay 1, 1
|
||||
|
||||
; --- 1. 虚拟桌面切换逻辑 (修正版) ---
|
||||
; 使用 Ctrl + 方向键 切换虚拟桌面
|
||||
; 加上 * 可以支持 Ctrl+Shift+Left 等组合,去掉 $ 如果你确定没有热键死循环
|
||||
*^Left::SendEvent("{Blind}#^{Left}")
|
||||
*^Right::SendEvent("{Blind}#^{Right}")
|
||||
|
||||
$^Left::SendEvent("{Blind}^#{Left}")
|
||||
$^Right::SendEvent("{Blind}^#{Right}")
|
||||
; 一键跳转到第一个桌面 (向上)
|
||||
*^Up::SendEvent("{Blind}#^{Left 10}")
|
||||
|
||||
$^Up:: {
|
||||
Loop 8 {
|
||||
SendEvent("{Blind}^#{Left}")
|
||||
Sleep(1)
|
||||
}
|
||||
; 关键:强制释放 Win 和 Ctrl,防止粘滞
|
||||
Send("{LWin Up}{Control Up}")
|
||||
}
|
||||
|
||||
$^Down:: {
|
||||
Loop 8 {
|
||||
SendEvent("{Blind}^#{Right}")
|
||||
Sleep(1)
|
||||
}
|
||||
; 关键:强制释放 Win 和 Ctrl
|
||||
Send("{LWin Up}{Control Up}")
|
||||
}
|
||||
|
||||
; --- 2. Smart CapsLock 核心逻辑 ---
|
||||
|
||||
*CapsLock:: {
|
||||
global g_LastCtrlKeyDownTime, g_AbortSendEsc
|
||||
|
||||
; 如果 CapsLock 已经处于按下状态(长按触发的重复),直接返回
|
||||
if (GetKeyState("LControl")) {
|
||||
return
|
||||
}
|
||||
|
||||
Send("{LControl Down}")
|
||||
g_LastCtrlKeyDownTime := A_TickCount
|
||||
g_AbortSendEsc := false
|
||||
}
|
||||
|
||||
*CapsLock Up:: {
|
||||
global g_LastCtrlKeyDownTime, g_AbortSendEsc
|
||||
|
||||
Send("{LControl Up}")
|
||||
|
||||
; 如果期间触发了其他组合键,则不发送 Esc
|
||||
if (g_AbortSendEsc) {
|
||||
return
|
||||
}
|
||||
|
||||
; 判断按下时间,如果小于 250ms 则视为单击,发送 Esc
|
||||
time_elapsed := A_TickCount - g_LastCtrlKeyDownTime
|
||||
if (time_elapsed <= 250) {
|
||||
Send("{Esc}")
|
||||
}
|
||||
}
|
||||
|
||||
; --- 3. 拦截逻辑:只要按了 Ctrl 组合键,就放弃发送 Esc ---
|
||||
|
||||
; 使用动态热键或通配符拦截所有常用按键
|
||||
; 在 v2.0 中,我们通过一个简单的循环或特定的通配符来处理
|
||||
~*^a::
|
||||
~*^b::
|
||||
~*^c::
|
||||
~*^d::
|
||||
~*^e::
|
||||
~*^f::
|
||||
~*^g::
|
||||
~*^h::
|
||||
~*^i::
|
||||
~*^j::
|
||||
~*^k::
|
||||
~*^l::
|
||||
~*^m::
|
||||
~*^n::
|
||||
~*^o::
|
||||
~*^p::
|
||||
~*^q::
|
||||
~*^r::
|
||||
~*^s::
|
||||
~*^t::
|
||||
~*^u::
|
||||
~*^v::
|
||||
~*^w::
|
||||
~*^x::
|
||||
~*^y::
|
||||
~*^z::
|
||||
~*^0::
|
||||
~*^1::
|
||||
~*^2::
|
||||
~*^3::
|
||||
~*^4::
|
||||
~*^5::
|
||||
~*^6::
|
||||
~*^7::
|
||||
~*^8::
|
||||
~*^9::
|
||||
~*^Space::
|
||||
~*^Backspace::
|
||||
~*^Delete::
|
||||
~*^Enter::
|
||||
~*^Tab::
|
||||
~*^Up::
|
||||
~*^Down::
|
||||
~*^Left::
|
||||
~*^Right:: {
|
||||
global g_AbortSendEsc := true
|
||||
}
|
||||
; 一键跳转到最后一个桌面 (向下)
|
||||
; 10 次通常足够覆盖大部分人的桌面数量
|
||||
*^Down::SendEvent("{Blind}#^{Right 10}")
|
||||
18
LICENSE
18
LICENSE
@@ -1,18 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 mdy
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
||||
associated documentation files (the "Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
|
||||
following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial
|
||||
portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
|
||||
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
46
README.md
46
README.md
@@ -1,46 +0,0 @@
|
||||
# CapSpace
|
||||
|
||||
## 📦 CapSpace
|
||||
|
||||
**CapSpace** 是一款基于 AutoHotkey 的系统增强脚本,旨在通过重定义 `CapsLock` 键位,构建一个高效、直观的 Windows 虚拟桌面调度中心。
|
||||
|
||||
### 🌟 核心特性
|
||||
|
||||
* **Smart CapsLock**:
|
||||
* **单击**:触发 `Esc`(完美的 Vim/编程体验)。
|
||||
* **长按/组合**:瞬间化身为 `Ctrl` 修饰键。
|
||||
* **防误触**:内置毫秒级判定与组合键拦截逻辑,确保不会在组合操作后误弹 `Esc`。
|
||||
|
||||
|
||||
* **空间折叠 (Virtual Desktop Management)**:
|
||||
* `Ctrl + Left/Right`:平滑切换相邻虚拟桌面。
|
||||
* `Ctrl + Up`:**一键穿梭**至首个虚拟桌面。
|
||||
* `Ctrl + Down`:**一键直达**末个虚拟桌面。
|
||||
|
||||
|
||||
* **原生融合**:完美支持与 `CapsLock` 组合使用,让你的左手无需大范围跨越即可掌控全局。
|
||||
|
||||
### 🚀 快速开始
|
||||
|
||||
1. **环境要求**:安装 [AutoHotkey v1.1+](https://www.autohotkey.com/)。
|
||||
2. **运行**:下载 `CapSpace.ahk` 并双击运行。
|
||||
3. **开机自启**:
|
||||
* 按 `Win + R` 输入 `shell:startup`。
|
||||
* 将 `CapSpace.ahk` 的快捷方式放入该文件夹。
|
||||
|
||||
|
||||
|
||||
### ⌨️ 快捷键总览
|
||||
|
||||
| 快捷键 (按下) | 实际功能 | 场景 |
|
||||
| --- | --- | --- |
|
||||
| `CapsLock` (轻点) | `Esc` | 退出/取消 |
|
||||
| `Ctrl / CapsLock + ←/→` | `Ctrl + Win + ←/→` | 逐个切桌面 |
|
||||
| `Ctrl / CapsLock + ↑` | 连续左切 | 回到第一个 |
|
||||
| `Ctrl / CapsLock + ↓` | 连续右切 | 跳到最后一个 |
|
||||
|
||||
---
|
||||
|
||||
### 💡 给仓库填写的 Short Description (GitHub 简介框)
|
||||
|
||||
> 🚀 CapSpace: Transform your CapsLock into a Smart Ctrl/Esc hybrid and unlock seamless virtual desktop navigation with intuitive shortcuts.
|
||||
3
config.txt
Normal file
3
config.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
remap_key=CAPSLOCK
|
||||
when_alone=ESCAPE
|
||||
with_other=CTRL
|
||||
BIN
dual-key-remap.exe
Normal file
BIN
dual-key-remap.exe
Normal file
Binary file not shown.
Reference in New Issue
Block a user