ファンクションキーを無効にしたい

torisan
記事: 8
登録日時: 2017年6月26日(月) 12:15

ファンクションキーを無効にしたい

投稿記事by torisan » 2018年7月01日(日) 19:59

お世話になっております。

現在、所謂音ゲを作っているのですが、ゲーム中の操作の一環として、
楽曲プレイ中にESCキーを押した時に、
プレイ中の楽曲を途中中断し選曲画面に戻る、という機能を実装しました。

機能そのものは実装出来たのですが、
隣のF1キーを押してしまい意図しない画面が表示される事が考えられる為、
F1キーを無効化したいです。

デフォルトで設定してあるファンクション機能
(F1:ゲームのプロパティ F12:リセット 等)
を無効化する事は出来ますか?
(できれば他の機能を付加したい)

スクリプトヘルプのINPUTの欄を見ると
F5~F9 以外はシステムで予約されている的な
事が書かれているので通常の方法では難しそうですが。。

何か良い手があれば知恵をお貸しください、
また無理なら「無理」との回答が頂ければと思います。
よろしくお願いします。

TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: ファンクションキーを無効にしたい

投稿記事by TOMO » 2018年7月01日(日) 23:59

無理
torisan
記事: 8
登録日時: 2017年6月26日(月) 12:15

Re: ファンクションキーを無効にしたい

投稿記事by torisan » 2018年7月03日(火) 21:51

試しにスクリプトの無限ループ内で
F1キーを押してみたところ、問題なく(?)
F1キーを押した時に出るウィンドウが出てきました。
UPDATEに帰らなくても出るという事は
ウィンドウそのものに設定してある機能みたいですね。
回答ありがとうございました。
アバター
seea
記事: 84
登録日時: 2016年6月04日(土) 21:48
連絡を取る:

Re: ファンクションキーを無効にしたい

投稿記事by seea » 2018年7月05日(木) 22:40

無効にしてプレイヤー的に大丈夫なのかどうかはさておき、
無効にすることは可能です。
「RGSSDisableF1AltEnterF12」で検索してみてください。有志の方のGitHubが見つかると思います。

他の機能を付加するのは、自力でコードを書かないといけないです。結構面倒です。
torisan
記事: 8
登録日時: 2017年6月26日(月) 12:15

Re: ファンクションキーを無効にしたい

投稿記事by torisan » 2018年7月08日(日) 16:41

検索してみた所、サンプルプロジェクトを見つけました。

それを参考に『F1AltEnterF12.dll』を『System』フォルダに入れ、
以下のスクリプトを記述した所、
無事ファンクションキー(自分の場合はF1キー)を無効化することができました!

コード: 全て選択

Win32API.new("System/F1AltEnterF12", "hook", "III", "").call(1,0,0)

(1,0,0)は左からF1、F12、ALT+ENTER 、
1で無効化、0で有効(通常通り)のようです。

非常に助かりました、ありがとうございました!

※以下DLL起動用元ソース

コード: 全て選択

#==============================================================================
# Chainsawkitten's Disable F1, Alt+Enter, F12 v1.1
#------------------------------------------------------------------------------
# Disable the use of F1, Alt+Enter and F12 by registering a hook which consumes
# keypress events as well as setting the keyboard state.
#==============================================================================

module CskDisable
  # Whether to disable F1. 0 = enable, 1 = disable.
  DISABLE_F1 = 1
 
  # Whether to disable F12. 0 = enable, 1 = disable.
  DISABLE_F12 = 1
 
  # Whether to disable Alt+Enter. 0 = enable, 1 = disable.
  DISABLE_ALT_ENTER = 1
end

Win32API.new("System/F1AltEnterF12", "hook", "III", "").call(
  CskDisable::DISABLE_F1,
  CskDisable::DISABLE_F12,
CskDisable::DISABLE_ALT_ENTER)

“VX / Ace:質問” へ戻る