1. ホーム
  2. その他

AutoHotKeyでプログラマーが好むキーストロークを設定する

2022-02-24 15:58:49

昨日、AutoHotKeyについて読んでいて、自分でスクリプトを書いたのですが、今日、より良いものを見つけたので、試してみてください。

一番下のスクリプトは、このスクリプトを自分で改造して、以下の機能を追加したものです。

  • コピー Caps+c
  • 貼り付けます。Caps+v
  • 保存する Caps+s (実際には Ctrl+s を Caps+s にマップします)
  • 削除する。Caps+d (実際にはCtrl+dをCaps+dにマッピング。この削除機能は主にEclipseで使用される)


-------------------------------------------------------------- 以下、オリジナル ------------------------------------------------------------------------------ です。

http://ahk8.com/thread-5792.html

  • 機能 カスタマイズ スクリプトの設定ファイルを埋め込む コンフィギュレーションマッピング、トリガーキーを使用 一時的な マッピングを開くか <スパン ロック マッピングを開く 他の修飾キーも同時に使用可能(例:Ctrl、Shift) .
    キーゾーン・マッピング機能(CapsLock & j以上)
  • このデモでは、編集キーエリアとメインキーエリアとの部分的なキーマッピングを実装しています。このデモでは <スパン 上/下/左/右 / <スパン ホーム/エンド / PgUp/PgDw は、主キー領域にマッピングされます。 <スパン i/k/j/l <スパン /u/o /u/o <スパン y/h .
    もし、例えば
  • シナリオ
    • の右肩上がりを減らす。 主キー領域 を使って 編集キーエリア を切り替える消費になります。
    • 新しいキーゾーンに切り替える際のアライメント|位置決め操作を軽減します。
  • 使用方法 パターン : は
    • 一時的なもの マッピング:モディファイアキーを押し続けると、モディファイアキーを離すまでマッピングが保持されます。
    • <スパン ロック マッピング:モディファイアキーを押さずに、マッピングを閉じるまでマッピングが残ります。
  • 使用方法 メソッド : は
    • <スパン モディファイアキー CapsLockを取る。 左手で操作し、左手と右手が同期して動作するため、効率的です。
    • 一時的なマッピング:モディファイアキーを押しながらマッピングボタンをクリックします。例えば、通常のキーの組み合わせは <スパン <スパン CapsLock+j
    • ロックマッピングです。
      • で有効になります。 テンポラリーマッピングでは の前に、押された マッピングされたボタン リリース <スパン モディファイアキー . 例えば j & CapsLock up .
      • マッピングを閉じるには マッピングボタンが押されていないときは モディファイヤーボタンをクリックします。
  • コード
    追加で含まれるもの
    • m/,/. から <スパン BS/削除/入力 のマッピングは
    • 6~9: ^{左} ~ +^{Right} <スパン (単語を簡単にスキップ/選択するため)
    • レスポンスを行うためのカスタム関数(参照 25# @ gcy001 (推奨)
    • 詳しくはスクリプト内の設定をご覧ください。
    不安定な場合はV2.3をご利用ください。
    ;RobertL
    
    ;http://ahk8.com/thread-5792.html
    ;Key Zone Mapping V2.4
    ;============= user configuration section =============
    Map:={Modifier:"CapsLock" ;Specify modifier key
        TimeOut:0.4 ;Valid when the modifier key is a normal keystroke, in s
        ;Specify the mapped key.
        ,i:"up" ,k:"down" ,j:"left" ,l:"right"
        ,u:"Home" ,o:"End"
        ,y:"PgUp" ,h:"PgDn"
        ,M:"BS", ",":"Del" ,". ":"Enter"
        ,6:" ^{Left}",7:" ^{Right}",8:" +^{Left}",9:" +^{Right}"
        ,a:func("yourFunction")}
    yourFunction(){
        Msgbox your Function

    The ;============= auto-execute segment =============;{
    Hotkey,If
    modifier:=ObjDelete(Map,"Modifier")
    timeOut:=ObjDelete(Map,"TimeOut")
    ;~ if(nomarlKeyAsModifier:=(1=StrLen(modifier)))
        ;~ Hotkey,$%modifier%, ModifierKeyDown, On
    Hotkey,~*$%modifier% Up, ModifierKeyUp, On
    Hotkey,If, IsMapOn()
    for sourceKey in Map{
        Hotkey,*%sourceKey%, SourceKeyDown
        Hotkey,*%sourceKey% Up, SourceKeyUp
    }
    Hotkey,If
    ;===================================;}
    IsMapOn(){
        global IsMapOn,modifier,IsMapped
        IsMapOn:=IsMapped:=(IsMapOn | (GetKeyState(modifier,"P") && (IsMapOn:=true)))
        return IsMapOn
    }
    SourceKeyDown(){
        global Map,waiting
        targetKey:=Map[source:=SubStr(A_ThisHotkey,2)]
        if isfunc(targetKey){
            %targetKey%()
        }if(" "! =SubStr(targetKey,1,1)){
            if waiting
                Send % source
            SendLevel 1
            SetKeyDelay -1
            Send {Blind}{%targetKey% DownTemp}
        }else {
            Send % SubStr(targetKey,2)
        
        return
    }
    SourceKeyUp(){
        global Map
        targetKey:=Map[SubStr(A_ThisHotkey,2,-3)]
        if(" "! =SubStr(targetKey,1,1)){
            SendLevel 1
            SetKeyDelay -1
            Send {Blind}{%targetKey% Up}
        }
        return
    }
    ModifierKeyUp(){
        global Map,modifier,IsMapOn,nomarlKeyAsModifier
        if(IsMapOn && modifier="CapsLock")
            SetCapsLockState,% GetKeyState(modifier,"T")? "Off":"On"
        for sourceKey in Map
            if GetKeyState(sourceKey,"P")
                return
        IsMapOn:=false
        if(nomarlKeyAsModifier)
            Hotkey,$%modifier%, ModifierKeyDown, On
    }
    ModifierKeyDown(){
        global Map,IsMapOn,modifier,timeOut,IsMapped,waiting
        if(IsMapOn)
            return
        waiting:=true
        Input, _input, L1 T%timeOut%
        waiting:=false
        if(ErrorLevel="MAX"){
            if(_input=modifier){
                Hotkey,$%modifier%, ModifierKeyDown, Off
                Send {Blind}{%modifier% DownTemp}
            }else if(Map[_input]){
                KeyWait, %modifier%
                IsMapped:=false
            }else
                Send {Blind}{%modifier%}{%_input%}
        }else if(ErrorLevel="Timeout"){
            Hotkey,$%modifier%, ModifierKeyDown, Off
            Send {Blind}{%modifier% DownTemp}
        }else
            throw Exception("ModifierKeyDown:Un-used ErrorLevel=" ErrorLevel,-1)
    }
    #If IsMapOn()
    #If