Saturday, August 6, 2016

openMSXコマンド:bind / unbind / bind_default / unbind_default /activate_input_layer / deactivate_input_layer

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