![如何在 Windows 10 上将 2 个键交换为特定语言/KB 布局?](https://linux22.com/image/1616817/%E5%A6%82%E4%BD%95%E5%9C%A8%20Windows%2010%20%E4%B8%8A%E5%B0%86%202%20%E4%B8%AA%E9%94%AE%E4%BA%A4%E6%8D%A2%E4%B8%BA%E7%89%B9%E5%AE%9A%E8%AF%AD%E8%A8%80%2FKB%20%E5%B8%83%E5%B1%80%EF%BC%9F.png)
我想交换所需键盘布局上的W和]键,即 'ჯ' 和 'ჟ',这样 键W输出后一个字符,]键输出前一个字符,并且仅在使用所述键盘时才输出。我该怎么做?
我知道 AutoHotKey,但我不知道它是否有这个确切的功能。我也考虑过编写一个 Python 脚本,但同样,我不确定这是否足够简单,以致于这个问题在我的技能水平之内。
答案1
首先运行此 Autohotkey 脚本并按 F1 来检索 KeyboardLocale:
; Script 1
F1:: MsgBox, % InputLocaleID()
InputLocaleID() {
ControlGetFocus, Focused, A
ControlGet, CtrlID, Hwnd,,% Focused, A
ThreadID := DllCall("GetWindowThreadProcessId", "Ptr", CtrlID, "Ptr", 0)
Return, Format("{:X}", DllCall("GetKeyboardLayout", "UInt", ThreadID, "Ptr"))
}
检索后,您可以使用#IF 指令到重映射另一个脚本中所需键盘布局上的键,例如:
; Script 2
#IF InputLocaleID() = 4090409 ; english
w::l
l::w
#IF
InputLocaleID() {
ControlGetFocus, Focused, A
ControlGet, CtrlID, Hwnd,,% Focused, A
ThreadID := DllCall("GetWindowThreadProcessId", "Ptr", CtrlID, "Ptr", 0)
Return, Format("{:X}", DllCall("GetKeyboardLayout", "UInt", ThreadID, "Ptr"))
}