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 (推奨)
-
詳しくはスクリプト内の設定をご覧ください。
コード (すべて選択);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
関連
-
合理的オブジェクトスクリプトコマンド
-
FcScript V1.0 ヘルプファイル(説明書付き
-
[解決済み】このリポジトリで別のgitプロセスが動作しているようです。
-
[解決済み】'const char*' から 'char*' への無効な変換。
-
[解決済み】non-constへの参照の初期値はlvalueでなければならない。
-
[解決済み】警告:制御が非ボイド関数の終わりに達する [-Wreturn-type].
-
[解決済み】JavaコンソールのプロンプトでENTERを入力してから次へ進む【重複あり
-
[解決済み】凡例に入れるラベルを持つハンドルが見つからない
-
[解決済み】C++ エラー: 'std::bad_alloc' のインスタンスを投げた後に呼び出されたターミネート
-
スクリプトエラーの解決方法 現在のページのスクリプトエラーの解決方法をまとめてみました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++エラー: 予想されるunqualified-idを修正する方法
-
[解決済み】Looper.prepare()を呼び出していないスレッド内でハンドラを作成できない。)
-
[解決済み】PythonでDatetimeの現在の年と月
-
[解決済み】エラー:Rの無効な添え字型'list'
-
[解決済み] 'std::out_of_range' のインスタンスを投げた後に呼び出された終了処理
-
[解決済み】C++ Cout & Cin & System "Ambiguous" 【クローズド
-
[解決済み】Javaのメソッド呼び出しが期待される
-
[解決済み】集約する数値型がない - groupby()の挙動が変わった?
-
[解決済み】TypeError: リストにはリストしか連結できない(「str」ではない)
-
[解決済み】Javascript Uncaught TypeError: 未定義のプロパティ'0'を読み取れない