bind / unbind / bind_default / unbind_default / activate_input_layer / deactivate_input_layer
(キーを押す、などの)イベントをコマンドと関連付けます。(なる特定のキーを押すなど)イベントを指定すると常に対応するコマンドが実行されます。単体のTclコマンドや;で区切られた一連のコマンドが(通常のTclの書式で)使用できます。キーバインドをカスタマイズするにはbind/unbindを使用してください。機能的に必要なデフォルトのキーバインドを提供するにはbind_defaultを使います。これは、異なった設定をデフォルトで上書きします。イベントが繰り返すとわかっている場合(キーを押し続けた時のキーイベントなど)は-repeatオプションをつかうことで、コマンドが同様の繰り返しをします。
全体のキーバインドのセットを必要とするTclスクリプトやある条件下でのみこれらを有効化するキーバインドはinput layerシステムが使えます。これは特定のレイヤーとのキーバインド設定を可能にし、その後特定のレイヤーを有効化、無効化します。このようなレイヤーはブロックモードで有効化することもできます。ブロックモードとはレイヤーがある特定のイベントととのキーバインドを持たない場合でも、そのイベントがエミュレートしているMSX側にまだ渡されない、ということを意味します。これはある(バーチャルOSDキーボードのような)OSDウィジェットを実装する時に便利です。
指定できるイベント:
<key>[,release] | keyb <key>[,release]の省略形です。 |
keyb <key>[,release] | <key>を押します [もしくは離します] |
mouse button<n> <up/down> | マウスボタン <n> が、上がるか下がります。 |
mouse motion <x> <y> | マウスが<x>と<y>の移動をします。 |
joy<n> button<m> <up/down> | ジョイスティック<n>のボタン<m>が上がるか、下がります。 |
joy<n> axis<m> <value> | ジョイスティック<n>の方向キー<m>から値を取得[訳注:要確認] |
focus <boolean> | openMSXのウィンドウがフォーカスを取得(1)もしくはフォーカスを失います(0) |
OSDcontrol <button> PRESS|RELEASE | バーチャルOSD制御用 <button>を押します、もしくは離します |
使用法
bind | すべてのバインドを表示します。 |
bind -layer <layername> | 特定のレイヤーですべてを表示します。 |
bind <event> [-layer <layername>] | イベントのバインドを表示します。オプションでレイヤーを指定できます。 |
bind <event> [-layer <layername>] [-repeat] <command> | 新しいバインドを作成します。オプションで特定のレイヤーにバインドを作成できます。また、オプションで(キーが押されたままの時など)一時的なバインドを再定義できます。 |
bind -layers | 現在バインドがあるすべてのレイヤー名を表示します。 |
unbind [-layer <layername>] <event> | このイベントに対するすべてのバインドを取り消します(オプションで特定のレイヤーを指定できます)。 |
unbind -layer <layername> | 特定のレイヤーのバインドを取り消します。 |
activate_input_layer | 現在アクティブなレイヤーを表示します。 |
activate_input_layer [-blocking] <layername> | 特定の入力レイヤーを有効化します。オプションでこのレイヤーをブロックモードの状態で有効化できます。 |
deactivate_input_layer <layername> | 特定の入力レイヤーを無効化します。 |
使用例:
bind PAGEUP "set speed 100"
bind PAGEDOWN "set speed 50"
F9が押されている間、フルスロットルで実行します (BrMSXと同様):
unbind F9
bind F9 "set throttle off"
bind F9,release "set throttle on"
ウィンドウがフォーカスを失うと停止します(fMSXと同様):
bind "focus 0" "set pause on"
bind "focus 1" "set pause off"
マウスの真ん中ボタンでインプット切り替え:
bind "mouse button2 down" "toggle grabinput"
ジョイスティックのボタン8をF2キーに割り当てます:
bind "joy1 button8 down" "keymatrixdown 6 0x40"
bind "joy1 button8 up" "keymatrixup 6 0x40"
エミュレーション速度をPageUp/Downキーで増加、減少できます:
bind PAGEUP -repeat "incr speed 1"
bind PAGEDOWN -repeat "incr speed -1"
ジョイスティックの左と右をボリューム増加、減少に使います:
bind "joy1 hat0 left" -repeat "incr speed -5"
bind "joy1 hat0 right" -repeat "incr speed 5"
ALTとENTERでフルスクリーン表示を切り替えます。
bind ALT+RETURN toggle fullscreen
TCLスクリプト中でのジョイスティックもしくはカーソルの上の反応:
bind_default "OSDcontrol UP PRESS" -repeat {osd_menu::menu_action UP }
TCLスクリプト中でのジョイスティックの1ボタンもしくはスペースキーの反応:bind_default "OSDcontrol A PRESS" -repeat {osd_menu::menu_action A }
No comments:
Post a Comment