トップページ > 記事閲覧
キーの定義について
名前:チップ 日時: 2015/11/20 08:37

すみません、質問させてください。 キー入力の定義でフルキーとテンキーは別扱いになっているかと思います。 例えば KEY_INPUT_NUMPAD1 // テンキー1 KEY_INPUT_1 // 1キー は別のキーとして認識されるように。 なのですが何故かEnteキーrの KEY_INPUT_RETURN // Enterキー KEY_INPUT_NUMPADENTER // テンキーのエンターキー だけは定義は別なのですが挙動としては同一キーとして認識されているようなのですが (どちらを使っても両方のキーに反応する) これはこういう動作で正常なのでしょうか? よろしくお願い致します。
メンテ

Page: 1 |

Re: キーの定義について ( No.1 )
名前:管理人 日時:2015/11/22 19:59

正常といえば正常です・・・ DXライブラリは以前は DirectInput を使用してキー入力の状態を取得していたのですが、 WindowsVista 以降では DirectInput を使用したキー入力の状態取得に不具合があったので ( すみません、どんな不具合だったかは失念してしまいました )、現在では通常の Win32 API を使用して キー入力の状態を取得するようになっています ただ、Win32 API より DirectInput を使用した方が取得できる情報は正確(?)になります 本件の フルキーのEnterキー と テンキーのEnterキー が別々の押下情報として取得できるのもその一つです ( Win32 API では何故かどちらかを押すとどちらも押してしまったことになりますが、DirectInput を 使用した場合は別々に押下状態を取得することができます ) 現在のバージョンでも DxLib_Init の呼び出し前に SetUseDirectInputFlag( TRUE ) ; という記述を追加すれば キー入力の状態取得に DirectInput を使用するようにできますので、もしフルキーのEnterキーとテンキーの Enterキーの押下状態を別々に取得したい場合はお使いください ただ、申し訳ないことに失念してしまったのですが、何か WindowsVista 以降では不具合があって ( しかも回避ができない不具合で )デフォルトでは DirectInput を使用しないようにしたはずですので、 使用される際は何か不具合があるかもしれないことを承知の上でお使いください m(_ _;m
メンテ
Re: キーの定義について ( No.2 )
名前:チップ(解決済) 日時:2015/11/22 22:49

丁寧なご返信ありがとうございます。 助かります。試してみます。
メンテ
Re: キーの定義について ( No.3 )
名前:チップ 日時:2015/11/23 00:05

ご指摘の方法で確認しました。 挙動で GetHitKeyStateAll( FALSE ); にした場合も不具合かもしれない挙動がありましたので念のため報告します。 ※キーは毎フレーム GetHitKeyStateAll(); で取得 ■GetHitKeyStateAll( FALSE ); にした場合  Capsキーが取得できない。  カナキーを一度押下するとその後ずっと押しっぱなしの状態になってしまう(何故かCapsキーを押すとカナキーの押下が解除される)。 ■GetHitKeyStateAll( TRUE ); にした場合  Capsキーとカナキーが押すたびにOn/Offのトグル切り替え状態になっている。  ※1回押すとずっと押したままの状態が取得され、もう1回押すと解除される。   これはこういうものなのでしょうか?
メンテ
Re: キーの定義について ( No.4 )
名前:管理人 日時:2015/11/24 00:32

> これはこういうものなのでしょうか? はい、Capsキーやカナキーなどが特殊な挙動をするのは以前からです Win32 API や DirectInput から取得できる情報がそのままなので、 申し訳ありませんが仕様とさせてください
メンテ
Re: キーの定義について ( No.5 )
名前:チップ(解決) 日時:2015/11/24 19:19

上記仕様という旨、了解致しました。 迅速なご返答ありがとうございました!
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存