我想交换所需键盘布局上的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"))
}