作成日:2024年09月04日
ショートカットキーで操作を楽にする(3)

オリジナルショートカット
オリジナルショートカットなんて言うと大げさですが、スクリプトトリガ「OnLayoutKeystroke」を使用してキー入力からスクリプトを起動させる事で、自分の思い通りにショートカットを割り当てる事ができます
例えば、ちょっと(かなり?)雑ですが下図の様なレイアウトがあるとします

ボタンがいくつか配置してあり、通常はマウスを操作してボタンをクリックする事になります
しかし、前動作がキーボードで完結していた場合などでは、この画面でのアクションもキーボードで行えると操作性は向上すると言えます
まずはどのボタンのスクリプトをどのキーで実行するかを決定します

次にキー入力を判断して実行するスクリプトを判断するスクリプトを作成します
「キー入力判定」
# ################################################## # キー入力でスクリプトを実行する # ################################################## 変数を設定 [$キー入力; 値: Upper ( Get ( トリガキー入力 ) )] If [$キー入力 = "Q"] スクリプト実行 [指定: 一覧; 「見積表示」; 引数: ] Else If [$キー入力 = "C"] スクリプト実行 [指定: 一覧; 「受注表示」; 引数: ] Else If [$キー入力 = "M"] スクリプト実行 [指定: 一覧; 「製造表示」; 引数: ] Else If [$キー入力 = "D"] スクリプト実行 [指定: 一覧; 「納品表示」; 引数: ] Else If [$キー入力 = "I"] スクリプト実行 [指定: 一覧; 「請求表示」; 引数: ] Else If [$キー入力 = "N"] スクリプト実行 [指定: 一覧; 「新規見積」; 引数: ] Else If [$キー入力 = "L"] スクリプト実行 [指定: 一覧; 「見積一覧」; 引数: ] Else If [$キー入力 = "S"] スクリプト実行 [指定: 一覧; 「見積検索」; 引数: ] End If 全スクリプト終了
最後にスクリプトトリガに上記スクリプトを割り当てます

これでキー入力するだけでボタンクリックと同じスクリプトが実行できるようになります
※日本語入力モードの場合は文字確定まではスクリプトは実行されません
※日本語入力モードで「I」を入力した場合は「い」として認識されるため、上記スクリプトでは何も実行されません
フィールド入力とのコンフリクト
先ほどのレイアウトの様にボタンだけであれば問題ないのですが、下図の様に入力フィールドがあるレイアウトでは同様に処理する訳にはいきません

このレイアウトで同様に設定した場合、フィールド内に「Q」「C」「M」「D」「I」「S」を入力しようとするとスクリプトが実行されてしまう為、入力できない事になります
対策はいくつかありますが、今回はフィールドがアクティブになっている場合はボタンのショートカットは無効にする様にしてみましょう
「キー入力判定」
# ################################################## # キー入力でスクリプトを実行する # ################################################## If [Get ( アクティブフィールド名 ) = ""] 変数を設定 [$キー入力; 値: Upper ( Get ( トリガキー入力 ) )] If [$キー入力 = "Q"] スクリプト実行 [指定: 一覧; 「見積表示」; 引数: ] Else If [$キー入力 = "C"] スクリプト実行 [指定: 一覧; 「受注表示」; 引数: ] Else If [$キー入力 = "M"] スクリプト実行 [指定: 一覧; 「製造表示」; 引数: ] Else If [$キー入力 = "D"] スクリプト実行 [指定: 一覧; 「納品表示」; 引数: ] Else If [$キー入力 = "I"] スクリプト実行 [指定: 一覧; 「請求表示」; 引数: ] Else If [$キー入力 = "N"] スクリプト実行 [指定: 一覧; 「新規見積」; 引数: ] Else If [$キー入力 = "L"] スクリプト実行 [指定: 一覧; 「見積一覧」; 引数: ] Else If [$キー入力 = "S"] スクリプト実行 [指定: 一覧; 「見積検索」; 引数: ] End If 全スクリプト終了 End If
こうすればフィールド入力中はショートカット処理を行わない様にする事ができます
複数キーでのショートカット
1つのキーだけでショートカットが実行できるのは便利ではあるのですが、誤操作が起こりやすいとも言えます
複数キーを押してショートカットを実行する方法を考えたい所ですが、残念ながら制限があります
Macの「Command」、Windowsの「Ctrl」「Alt」は「OnLayoutKeystroke」では使用できず、使用可能なのは「Shift」(Macであれば「option」も)となります
これらのキーも押されているかは「Get ( トリガ修飾キー )」で判別可能ですので、使用する場合はIFの条件に含めてください

以上で今日のメモ書きは終了です
内容はいかがでしたか?
もしご意見やご要望、誤りの指摘などありましたら、下記フォームよりお気軽にご連絡ください