2017-05-24 3 views
2

私はこのスクリプトを見つけましたhttps://autohotkey.com/board/topic/1257-half-qwerty-one-handed-typing/このAutoHotKey qwerty-halfキーボードスクリプトをcaps-lock onで動作させることはできますか?

このスクリプトは、スペースバーを修飾子に再マッピングします。スペースを保持すると、gとhの対称線でキーボードが反転されます。したがって、eはiになり、bはnになり、pはqになります。他のキーを押さずにスペースバーを押して放すと、スペースが1つだけ送信されます。 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の変数名では、大文字と小文字は区別されません。

答えて

3
; 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

mirror_aなどの代わりに連想配列を使用し、大文字も含めます。

関連する問題