cocoa、複数キー入力の取得

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
bonbo

cocoa、複数キー入力の取得

#1

投稿記事 by bonbo » 12年前

cocoaでキーイベントを受け取ろうと思い
以下のようなコードをかいたのですが、
これだと同時に複数のキーを取得することができません。
どうすればよいのでしょうか。

コード:

- (void)keyDown:(NSEvent*)event
{
    if ([event keyCode]==1){
        NSLog(@"key 's' is now being get pressed.");
    }
    if ([event keyCode]==2){
        NSLog(@"key 'd' is now being get pressed.");
    }
}
// 当然これだと片方のキーのチェックしかできない
// 環境はXcode5.0.2,
Mac64bitにて動作させています。

よろしくお願いします。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: cocoa、複数キー入力の取得

#2

投稿記事 by h2so5 » 12年前

キー状態を記録する配列か辞書配列を用意して、keyDownイベントとkeyUpイベントでフラグを切り替えて状態を記憶しておけば複数キーの状態を検出できます。

CocoaDev » Gamekeyboardhandling

bonbo

Re: cocoa、複数キー入力の取得

#3

投稿記事 by bonbo » 12年前

>h2so5さん
ありがとうございます。
返信が遅れてしまい申し訳ありません。

コード:

KeyM[256];
- (void)keyDown:(NSEvent*)event
{
    if ([event keyCode]==1){
        Key[1]=1;
    }
    if ([event keyCode]==2){
        Key[2]=1;
    }
}
- (void)keyUp:(NSEvent*)event
{
    if ([event keyCode]==1){
        Key[1]=0;
    }
    if ([event keyCode]==2){
        Key[2]=0;
    }
}
一応できました。
ただし、これだとSキー,Dキーを同時に押したときは
どちらかになってしまいます。
何か対策はありますでしょうか。

bonbo

Re: cocoa、複数キー入力の取得

#4

投稿記事 by bonbo » 12年前

済みません、キーごとに何度も呼び出されるのですね。
勘違いしていました。前記の問題は解決しました。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る