

コンソールアプリでキーの同時押しを検出する方法がわかりません。
GUIならおとなしくDirectInputに逃げることが出来たかもしれませんが、
コンソールなのでそれも出来ずに悩んでいます。
環境はVisualC++2005(ExpressEdition)、WindowsXPです。
_getch()や_kbhit()だけではどうにも無理そうですし、残された手段は
_inp()程度でしょうか。昔はPC-9801でBASICからINP()関数でI/Oポートを
直接叩いてキー入力を読み出していたものでしたが、AT互換機となると
若干勝手が違ってくるように思えます。ましてや9xではないWindowsXPで
I/Oポートなんかすんなり読ませてくれるのか若干不安が残っています。
どなたかその辺の処理で詳しい方いらっしゃいませんでしょうか?
No.1ベストアンサー
- 回答日時:
★アドバイス
>残された手段は_inp()程度でしょうか。
>昔はPC-9801でBASICからINP()関数でI/Oポートを直接叩いて
>キー入力を読み出していたものでした
↑
私も昔はI/Oポートを直接読み出していました。
懐かしいですね。
・コンソールアプリでも Win32 API は呼び出せるので次の関数で出来ると思います。
http://msdn.microsoft.com/library/ja/default.asp …→『GetKeyState』
http://msdn.microsoft.com/library/ja/default.asp …→『GetKeyboardState』
この2つのどちらかで取得できると思います。
『#include <windows.h>』をインクルードしておきましょう。
・以上。
参考URL:http://wisdom.sakura.ne.jp/system/winapi/win32/w …
ご回答ありがとうございます。
こちらでも自力で調べてましたが最終手段としてGIVEIO.SYS導入した上で
_inp(0x60)と_inp(0x64)を拾って後はKIAIで値の法則性を掴もうかと
考えていましたが助かりました。GetKeyState()がコンソールで動くとは
正直目からウロコです。早速試してみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
8000番や8080番のポー...
-
Dell Inspiron 14 5415 をコン...
-
EXCEL VBAで、PnPでCOMポート番...
-
ポートの80と443
-
Supermodelのエミュレーターに...
-
8080ってなんですか?
-
コマンドプロンプトで、ポート...
-
プリンタのUSB接続について(LP...
-
ワイヤレスマウスUSBレシーバー...
-
スイッチのポート番号について
-
無線LANルータのアクセスログの...
-
FTP接続時のポートの設定につい...
-
メールサーバーのポート番号とは?
-
DNSサーバーにアクセスする際の...
-
microsoft-ds(445)とnetbios(13...
-
USBメモリ増設アダプターについて
-
パソコンUSBポートの不良なんと...
-
サーバーにLANポートが多いとど...
-
EC2 ポート587の開放について
-
割り当てられたCOMポートの内容...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
8000番や8080番のポー...
-
スイッチのポート番号について
-
ワイヤレスマウスUSBレシーバー...
-
ポートの名前 スマホやWiFiなど...
-
Windows 11のパソコンで、ポー...
-
Dell Inspiron 14 5415 をコン...
-
コマンドプロンプトで、ポート...
-
プリンタのUSB接続について(LP...
-
Windows10におけるUSB-RS232C機...
-
ポートの80と443
-
EXCEL VBAで、PnPでCOMポート番...
-
サーバーにLANポートが多いとど...
-
自分のパソコンのデバイスマネ...
-
ポート80を閉じたいのですが
-
バンジージャンプのデータを貰...
-
マザーボードにSATAのHDDを接続...
-
Port9100印刷の説明
-
microsoft-ds(445)とnetbios(13...
-
Supermodelのエミュレーターに...
-
縦続 と 直列
おすすめ情報