Get(ActiveModifierKeys)で「押されているキー」を活用しよう
スクリプトを実行するときに、「Shiftを押しながらクリックしたら詳細モード」「Ctrlを押していたら別の動き」など、ユーザーのちょっとした操作の違いで処理を切り替えたいことはありませんか?
FileMakerでは、Get ( ActiveModifierKeys ) 関数を使うことで、今どの修飾キー(Shift・Ctrl・Alt・Commandなど)が押されているかを数値で取得できます。これを利用すると、ひとつのボタンやスクリプトを、押し方の違いで「多機能ボタン」に変えることができます。
この記事では、Get ( ActiveModifierKeys ) で検出できるキーの意味と、実際のスクリプトでの使い方を、できるだけ分かりやすい言葉で解説します。
Get(ActiveModifierKeys)とは?基本の考え方
Get ( ActiveModifierKeys ) は、「今この瞬間に押されている修飾キー」を表す数値を返す関数です。修飾キーとは以下のようなキーを指します。
- Shiftキー
- Ctrlキー(Windows)/Commandキー(macOS)
- Altキー(Windows)/Optionキー(macOS)
この関数のポイントは、「キーごとに決まった数値が割り当てられていて、それらを合計した値が返ってくる」という仕組みです。たとえば、Shiftだけ押しているときと、Shift+Ctrlを同時に押しているときでは、返ってくる数値が変わります。
各修飾キーに割り当てられている数値
代表的な割り当ては次のようになっています(FileMaker公式仕様を簡単に整理したものです)。
- Shift:1
- Ctrl(Windows)/Command(macOS):2
- Alt(Windows)/Option(macOS):4
これらは「足し算」で組み合わさります。例えば:
- Shiftだけ押している:
1 - Ctrl/Commandだけ押している:
2 - Alt/Optionだけ押している:
4 - Shift+Ctrl/Command:
1 + 2 = 3 - Shift+Alt/Option:
1 + 4 = 5 - Ctrl/Command+Alt/Option:
2 + 4 = 6 - Shift+Ctrl/Command+Alt/Option:
1 + 2 + 4 = 7
つまり、Get ( ActiveModifierKeys ) が返した数値を見れば、「どのキーの組み合わせが押されているか」が分かる仕組みです。
よくある利用シーン:ボタンの動きを変える
実際の活用イメージをひとつ挙げてみます。たとえば、一覧レイアウトにある「印刷」ボタンに、次のような動きをさせたいとします。
- 通常クリック:プレビューせず、そのまま印刷
- Shiftを押しながらクリック:プレビュー画面を表示してから印刷
- Ctrl/Commandを押しながらクリック:PDFとして保存
この場合、ボタンに割り当てるスクリプトの先頭で Get ( ActiveModifierKeys ) を評価して、次のように条件分岐させます。
// アクティブな修飾キーを取得
Set Variable [ $mod ; Value: Get ( ActiveModifierKeys ) ]
If [ $mod = 1 ] // Shiftのみ
# プレビュー印刷
Enter Preview Mode
Pause/Resume Script [ Indefinitely ]
Print [ ]
Else If [ $mod = 2 ] // Ctrl/Commandのみ
# PDFに出力
Save Records as PDF [ どこに保存するか指定 ]
Else
# 何も押していない、またはその他のキー
Print [ ] // そのまま印刷
End If
このように、ひとつのボタンで複数の動作を切り替えられるようになります。ボタンを増やさなくて済むので、画面もすっきりさせやすくなります。
スクリプト設定の手順
実際にスクリプトを組むときの、基本的な流れを整理しておきます。
- メニューから「スクリプト」→「スクリプトワークスペース」を開く
- 新しいスクリプトを作成し、名前を付ける(例:
印刷_修飾キー対応) - スクリプトの先頭に「変数を設定」ステップを追加し、
$modにGet ( ActiveModifierKeys )を代入 - 「If」ステップを使って、
$modの値ごとに希望する処理を記述 - 仕上がったスクリプトをボタンに割り当てる
ボタンをクリックしながら、ShiftやCtrl/Commandを押して、想定した動きになっているかテストしてみてください。
分かりやすく保守しやすい書き方のコツ
条件分岐が増えると、あとから見たときに分かりにくくなりがちです。次のような工夫をすると、保守がしやすくなります。
- 「1=Shift」「2=Ctrl/Command」「4=Alt/Option」というルールをコメントで明記しておく
If [ $mod = 1 ]だけでなく、If [ $mod = 1 ] // Shiftのみとコメントを添える- よく使うパターンだけに絞り、やたらと多くの組み合わせを使わない
また、修飾キーの組み合わせが複雑になりそうな場合は、「Shiftだけをチェック」「Ctrl/Commandだけをチェック」といったように、Mod 関数や BitAnd 関数のようなビット演算用のカスタム関数を使う方法もあります。ただし、そこまで複雑にすると一般の利用者には理解しづらくなるため、まずは単純なパターンから始めると良いでしょう。
注意したいポイントと制限
便利な Get ( ActiveModifierKeys ) ですが、いくつか気をつけておきたい点があります。
- スクリプトが実行される「その瞬間」のキー状態を取得するため、タイミングによっては想定どおりの値が取れない場合があります。
- プラットフォーム(Windows/macOS)によって「Ctrl」と「Command」などキーの名称や使い方が異なるため、ヘルプテキストなどでユーザーへの案内を工夫すると親切です。
- ユーザーが修飾キーを押しながらクリックする操作に慣れていない場合、気づいてもらえないこともあります。必要に応じて説明書きやツールチップを用意しましょう。
まとめ:小さな工夫で操作性を一段アップ
Get ( ActiveModifierKeys ) は、単体では地味な関数ですが、「押し方の違いで挙動を変える」という、ユーザーの体感に直結する工夫を支えてくれる便利な機能です。
- ShiftやCtrl/Command、Alt/Optionの状態を数値で取得できる
- 数値の組み合わせで、どのキーが押されているか判定できる
- ひとつのボタンで複数の動作を実現でき、画面をシンプルに保てる
まずは、よく使うボタンに「Shiftを押すと詳細モード」「Ctrl/CommandでPDF出力」など、分かりやすい一工夫から試してみてください。日常的によく使う動きほど、修飾キーで切り替えられると作業効率が大きく変わります。