我在https://autohotkey.com/board/topic/1257-half-qwerty-one-handed-typing/
找到了这个脚本此脚本的作用是将空格键重新映射为修饰符。当保持空间时,键盘倒置,g和h之间的对称线。因此,e将变为i,b将变为n,p将变为q,依此类推。如果空格键被按下并释放而没有按任何其他键,则会发送一个空格。诸如shift或control之类的修饰键可以与Half-qwerty结合使用。
问题是,当大写锁定开启时,它对大写字母不起作用。
任何帮助都会很棒!!
;QWERTY half-keyboard emulator
mirror_1 = 0
mirror_2 = 9
mirror_3 = 8
mirror_4 = 7
mirror_5 = 6
mirror_q = p
mirror_w = o
mirror_e = i
mirror_r = u
mirror_t = y
mirror_a = `;
mirror_s = l
mirror_d = k
mirror_f = j
mirror_g = h
mirror_z = /
mirror_x = .
mirror_c = ,
mirror_v = m
mirror_b = n
mirror_6 = 5
mirror_7 = 4
mirror_8 = 3
mirror_9 = 2
mirror_0 = 1
mirror_y = t
mirror_u = r
mirror_i = e
mirror_o = w
mirror_p = q
mirror_h = g
mirror_j = f
mirror_k = d
mirror_l = s
mirror_n = b
mirror_m = v
;This key may help, as the space-on-up may get annoying, especially if you type fast.
Control & Space::Suspend
;These keys are optional, but they may help if you are typing on the left-hand side.
CapsLock::Send, {BackSpace}
+Capslock::Capslock
;Capslock is backspace and Shift+Capslock works for Capslock.
Space & `::Send, {-}
Space & CapsLock::Send, {Enter}
If spacebar didn't modify anything, send a real space keystroke upon release.
space::
Send {space}
return
space & 1::
space & 2::
space & 3::
space & 4::
space & 5::
space & q::
space & w::
space & e::
space & r::
space & t::
space & a::
space & s::
space & d::
space & f::
space & g::
space & z::
space & x::
space & c::
space & v::
space & b::
space & `;::
space & ,::
space & .::
space & /::
space & 6::
space & 7::
space & 8::
space & 9::
space & 0::
space & y::
space & u::
space & i::
space & o::
space & p::
space & h::
space & j::
space & k::
space & l::
space & n::
space & m::
;Determine the mirror key, if there is one:
if A_ThisHotkey = space & `;
MirrorKey = a
else if A_ThisHotkey = space & ,
MirrorKey = c
else if A_ThisHotkey = space & .
MirrorKey = x
else if A_ThisHotkey = space & /
MirrorKey = z
else ; To avoid runtime errors due to invalid var names, do this part last.
{
StringRight, ThisKey, A_ThisHotkey, 1
StringTrimRight, MirrorKey, mirror_%ThisKey%, 0 ; Retrieve "array" element.
if MirrorKey = ; No mirror, script probably needs adjustment.
return
}
Modifiers =
GetKeyState, state1, LWin
GetKeyState, state2, RWin
state = %state1%%state2%
if state <> UU ; At least one Windows key is down.
Modifiers = %Modifiers%#
GetKeyState, state1, Control
if state1 = D
Modifiers = %Modifiers%^
GetKeyState, state1, Alt
if state1 = D
Modifiers = %Modifiers%!
GetKeyState, state1, Shift
if state1 = D
Modifiers = %Modifiers%+
Send %Modifiers%{%MirrorKey%}
return
请注意,AutoHotKey变量名称不区分大小写。
答案 0 :(得分:4)
; Associative array that mirrors the left and right side of the keyboard.
keyA := {"1" : "0"
,"2" : "9"
,"3" : "8"
,"4" : "7"
,"5" : "6"
,"q" : "p"
,"w" : "o"
,"e" : "i"
,"r" : "u"
,"t" : "y"
,"a" : ";"
,"s" : "l"
,"d" : "k"
,"f" : "j"
,"g" : "h"
,"z" : "/"
,"x" : "."
,"c" : ","
,"v" : "m"
,"b" : "n"
,"0" : "1"
,"9" : "2"
,"8" : "3"
,"7" : "4"
,"6" : "5"
,"p" : "q"
,"o" : "w"
,"i" : "e"
,"u" : "r"
,"y" : "t"
,";" : "a"
,"l" : "s"
,"k" : "d"
,"j" : "f"
,"h" : "g"
,"/" : "z"
,"." : "x"
,"," : "c"
,"m" : "v"
,"n" : "b"}
; Make Hotkeys
for index, value in keyA
Hotkey, % "$*" index, FlipFlop, On
return
; Disables space from being sent if it's held down for more than 300ms
$*Space::
KeyWait, Space, T0.3
if (ErrorLevel = 1)
KeyWait, Space
Else
Send, {Space}
return
; Removes the hook and wildcard modifiers
FlipFlop:
StringReplace, hk, A_ThisHotkey, % "$*"
; If space is held
if GetKeyState("Space", "P")
; Send the mirror of the keys along with any held modifiers
Send, % "{Blind}" keyA[hk]
Else
; Send the actual key pressed along with modifiers
Send, % "{Blind}" hk
return
答案 1 :(得分:1)
使用关联数组代替mirror_a
等,并包括大写字母。