ページ 1 / 1
フルスクリーン・ショートカットキーのコマンド入力化
Posted: 2017年11月18日(土) 19:38
by 土曜日
お世話になります。
以下の問題を解決できる方を探しております。
ツクールVXaceでは、フルスクリーンと通常画面表示を、「Alt+Enter」のショートカットキーで切り替えられます。
しかし、コントローラーで操作されているプレイヤー様に、わざわざキーボードに戻って頂くのは、大変申し訳なく思います。
そこで、わざわざキーボードのキーを押さずとも、メニューコマンドの中に、「画面サイズ切替」という項目を追加したいと思うのです。
この画面サイズ切替にカーソルを合わし、ボタンを押下するたびに、画面サイズが、通常と全画面を、切り替えられる、ようにしたいのですが、予想外に、このショートカットキーのスクリプトが見つかりません。
画面サイズ自体を変更するスクリプトは、何名かの方が公開しているのを存じておりますが、そこまで複雑にせず、ただ、この「AltプラスEnter」というショートカットキーさえ、コントローラー操作で押せれば良いのです。
どなたか、RGSS3にお詳しい方、ショートカットキーの押し方を、お教え願えませんか?
宜しくお願いします。
Re: フルスクリーン・ショートカットキーのコマンド入力化
Posted: 2017年11月18日(土) 22:27
by 奏ねこま
私もRGSS3(Ruby)はあまり詳しくありませんが、
ちょっと調べて試してみた感じ、以下のスクリプトでそれっぽく動きました。
コード: 全て選択
api = Win32API.new('user32.dll',
'keybd_event',
%w(i i i i),
'v')
sleep(0.2)
api.call(18, 0, 0, 0)
sleep(0.1)
api.call(13, 0, 0, 0)
sleep(0.1)
api.call(13, 0, 2, 0)
sleep(0.1)
api.call(18, 0, 2, 0)
説明を軽くつけると、
コード: 全て選択
api = Win32API.new('user32.dll',
'keybd_event',
%w(i i i i),
'v')
sleep(0.2) # 0.2秒待つ
api.call(18, 0, 0, 0) # Altキーを押す
sleep(0.1) # 0.1秒待つ
api.call(13, 0, 0, 0) # Enterキーを押す
sleep(0.1) # 0.1秒待つ
api.call(13, 0, 2, 0) # Enterキーを離す
sleep(0.1) # 0.1秒待つ
api.call(18, 0, 2, 0) # Altキーを離す
こんな感じです。
とりあえず調べてわかった範囲でやってみたという程度のものなので、
もしかしたらもっと良い方法があるかも知れません。
ちなみに、18とか13とかは「仮想キーコード」です。
仮想キーコードを調べれば、他のキー入力の再現もできると思います。
Re: フルスクリーン・ショートカットキーのコマンド入力化
Posted: 2017年11月18日(土) 22:32
by ゴリラ⤴ゴリラ⤵
メニューのコマンドに追加する方法はわかりませんが
フルスクリーンスクリプトのトリガーボタンをパッドに対応したものに変更すれば
パッドのボタン1つで変えられるのではないでしょうか。
http://cacaosoft.webcrow.jp/script/rgss3/wndsz.html
例えば↑のスクリプトならば36行目の :F7 を :X :Y :Z :L :R のどれかにすれば
パッドで変更できるようになります。(:A :B :C はデフォルトで使用されているボタンなので
使わない方がいいと思います)
私もスクリプトは殆どわかりませんので
どうしてもメニューのコマンドに追加したいとなるとお力になれそうもないです。すみません
Re: フルスクリーン・ショートカットキーのコマンド入力化
Posted: 2017年11月18日(土) 23:58
by 土曜日
奏ねこま様
ありがとうございます。
お書きになられたコードを、イベントのスクリプトに記述してみたところ、無事、フルスクリーン化することができました。
ゴリラゴリラ 様
ご紹介ありがとうございます。こちらも検討させて頂こうかと思います。
ショートカットキーの押し方がわかったので、後はこれを組み入れたメニュー画面が出来ればいいのですが、最近はMVが主流のようで、VXaceのスクリプトを組める方がなかなかいらっしゃらないようです。
メニュー一覧に、ボタン押下で上記スクリプトが走るようにしたいものですが、難しいですね。
Re: フルスクリーン・ショートカットキーのコマンド入力化
Posted: 2017年11月19日(日) 01:21
by ゴリラ⤴ゴリラ⤵
ヘルプにあるスクリプト入門の「あらすじ画面の作成」を元に
あらすじウィンドウを表示するスクリプトを消して、かわりに奏ねこま様が記載してくれていたコードを
貼り付けてみました。
コード: 全て選択
class Window_MenuCommand
alias window_size_add_original_commands add_original_commands
def add_original_commands
window_size_add_original_commands
add_command("画面サイズ", :window_size)
end
end
class Scene_Menu
alias window_size_create_command_window create_command_window
def create_command_window
window_size_create_command_window
@command_window.set_handler(:window_size, method(:command_window_size))
end
def command_window_size
SceneManager.call(Scene_Window_Size)
end
end
class Scene_Window_Size < Scene_MenuBase
def start
super
api = Win32API.new('user32.dll','keybd_event',%w(i i i i),'v')
sleep(0.2)
api.call(18, 0, 0, 0)
sleep(0.1)
api.call(13, 0, 0, 0)
sleep(0.1)
api.call(13, 0, 2, 0)
sleep(0.1)
api.call(18, 0, 2, 0)
return_scene
end
end
一応コマンドで画面サイズは変更できたのですが、なんだか一瞬ウィンドウが全て消えて
また表示されるみたいでちょっと見苦しいです……。
私はこのあたりが限界のようです。スクリプト難しいですよね

Re: フルスクリーン・ショートカットキーのコマンド入力化
Posted: 2017年11月19日(日) 04:05
by 奏ねこま
メニューコマンド増やすならこうですかね。
コード: 全て選択
class Window_MenuCommand
alias :__add_original_commands add_original_commands
def add_original_commands
__add_original_commands
add_command("全画面切替", :fullscreen, true)
end
end
class Scene_Menu
alias :__create_command_window create_command_window
def create_command_window
__create_command_window
@command_window.set_handler(:fullscreen, method(:command_fullscreen))
end
def command_fullscreen
api = Win32API.new("user32.dll", "keybd_event", %w(i i i i), "v")
sleep(0.2)
api.call(18, 0, 0, 0)
sleep(0.1)
api.call(13, 0, 0, 0)
sleep(0.1)
api.call(13, 0, 2, 0)
sleep(0.1)
api.call(18, 0, 2, 0)
@command_window.activate
end
end
Re: フルスクリーン・ショートカットキーのコマンド入力化
Posted: 2017年11月20日(月) 00:22
by 土曜日
皆様
ありがとうございます。
無事、作動しました。
お知恵を貸して頂き、とても感謝致します。
スクリプトは難しいですね。
こういうのに強い方がいてくれてらと思います。
今回はありがとうございました。