トップページ > 記事閲覧
Android:Altキーと上下キーが同時に取得できない
名前:大和団次郎 日時: 2020/10/24 08:15

Dxライブラリで、Android用アニメーションエディタをつくっています。 Android のキーボード入力を取得する関数 int CheckHitKey( int KeyCode ) ; ですが、 Ver 3.19d では、Shiftキーや Altキーが反応しなかったのが Ver 3.22a にするとなおっていたので感激しました! ところが、1点だけ、Altキーと上下矢印キーを同時におしたときに 上下キー(↑↓)が反応しなくなるようです。 左右キー(←→)は反応するので不思議です。 上下左右に整列するショートカットキーにつかいたいので 修正できたらうれしいです。 Chromebookでも動くので、キーボード対応はとてもうれしいです。 今後ともよろしくお願いします。
メンテ

Page: 1 |

Re: Android:Altキーと上下キーが同時に取得できない ( No.1 )
名前:管理人 日時:2020/10/26 00:31

> Android のキーボード入力を取得する関数 > int CheckHitKey( int KeyCode ) ; ですが、 > Ver 3.19d では、Shiftキーや Altキーが反応しなかったのが > Ver 3.22a にするとなおっていたので感激しました! Android 4.0 やもっと古い AndroidOSバージョンの頃は Ver3.19d の頃の処理ではないと正常に キー入力が取得できなかったのですが、最近の AndroidOS のバージョンでは逆に 3.22a 等の 最近のDXライブラリの処理ではないと正常に取得できない、といった状態で…ややこしいです 大和団次郎さんの環境では正常に取得できたようで何よりです (・・; > ところが、1点だけ、Altキーと上下矢印キーを同時におしたときに > 上下キー(↑↓)が反応しなくなるようです。 > 左右キー(←→)は反応するので不思議です。 現在はキー個別に特殊な処理を行っていないので AndroidOS の仕様の関係の可能性が高いですが、確認してみますので数日ほどお時間をください m(_ _;m > Chromebookでも動くので、キーボード対応はとてもうれしいです。 > 今後ともよろしくお願いします。 なんと、Chromebook で Androidアプリが動くのですね…!( すみません、今調べて知りました )
メンテ
Re: Android:Altキーと上下キーが同時に取得できない ( No.2 )
名前:大和団次郎 日時:2020/10/27 17:37

Chromebook には、ARMとインテル系の2種類あるみたいです。 ARM の Chromebook で、 ARMのDXライブラリをつかったアプリが普通にインストールできて、動きました。 マウス、キーボード、タッチパッドがちゃんとDXライブラリから使えました。 すばらしいです。 インテル系のChromebook で、ARM のDXライブラリを使ったアプリが動くかどうかはわかりません。 Googleのドキュメントによると、動くかもしれないと書いてあったような・・
メンテ
Re: Android:Altキーと上下キーが同時に取得できない ( No.3 )
名前:管理人 日時:2020/10/28 21:40

お待たせしました、確認してみました 手元のスマートフォンにキーボードを接続して、以下の『全てのキー入力の状態を表示するプログラム』を 実行しながらAltキーを押しながら上下キーを押したところ、問題無く上下キーも反応しました #include "DxLib.h" int android_main( void ) { char KeyBuf[ 256 ] ; int i , j ; // DXライブラリの初期化 if( DxLib_Init() == -1 ) { return -1 ; } SetDrawScreen( DX_SCREEN_BACK ); while( ProcessMessage() == 0 ) { ClearDrawScreen() ; // 全てのキーの入力状態を描画 GetHitKeyStateAll( KeyBuf ) ; for( i = 0 ; i < 16 ; i ++ ) { for( j = 0 ; j < 16 ; j ++ ) { DrawString( j * 16, i * 16 + 48, KeyBuf[ i * 16 + j ] ? "1" : "0", KeyBuf[ i * 16 + j ] ? GetColor( 255,0,0 ) : GetColor( 255,255,255 ) ) ; } } ScreenFlip() ; } DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 } よろしければ大和団次郎さんの環境では上記のプログラムでAltキーと上下キーを 押した場合は上下キーが反応しないかどうかお試しになってみてください m(_ _)m > インテル系のChromebook で、ARM のDXライブラリを使ったアプリが動くかどうかはわかりません。 なるほど… DXライブラリには AndroidOS の x86用と x86_64用の aファイルも同梱していますので 恐らくですが、x86版としてビルドしたアプリであればインテル系の Chromebookでも 動作するのではないでしょうか…?
メンテ
Re: Android:Altキーと上下キーが同時に取得できない ( No.4 )
名前:大和団次郎です。 日時:2020/11/01 07:10

ありがとうございます。 試してみます。 ところで スマホの場合、ほとんどキーボードがついていないので、 毎回、すべてのキーを取得するより、必要なキーだけ取得したいほうが 処理が軽いかとおもって、必要なキーだけ CheckHitKey でキーの状態を 取得していました。 毎回、キーを全部取得する方法に変更してみるとして、さきに、 CheckHitKeyAll( DX_CHECKINPUT_KEY ) ; で、キーの押し下げを検出してから、 GetHitKeyStateAll( char *KeyStateBuf ) ; を使ったほうがよいでしょうか。 それとも、内部的には同じ処理をやっていて 毎回、GetHitKeyStateAll を実行しても速度に違いはない というような感じでしょうか ともかく CheckHitKey から、GetHitKeyStateAll に変更して動作するかどうか ためして報告します。 ありがとうございました。
メンテ
Re: Android:Altキーと上下キーが同時に取得できない ( No.5 )
名前:管理人 日時:2020/11/02 19:14

> それとも、内部的には同じ処理をやっていて > 毎回、GetHitKeyStateAll を実行しても速度に違いはない > というような感じでしょうか はい、毎回 GetHitKeyStateAll を実行してもほぼ速度に違いはないです DXライブラリ側は常に全キーの押下状態を保持していて、CheckHitKey や GetHitKeyStateAll が呼ばれた際は、その保持しているデータから指定された キーの情報を返すだけですので、『CheckHitKey が呼ばれたらキーの押下状態を 取得する為の AndroidOS の API を呼ぶ』というような重い処理は行われて いませんので、毎回 GetHitKeyStateAll を呼んでいただいて大丈夫です
メンテ
Re: Android:Altキーと上下キーが同時に取得できない ( No.6 )
名前:大和団次郎 日時:2020/11/03 14:18

サンプルプログラムありがとうございました。 1.Android Ver.6.0.1 (Nexus 5) で試したところ、Altキーと上下左右キーの同時押しは正しく検出できました。 ところが、 2。Chromebook Lenovo S330 (Chrome OS 86.0.4240.112 32bit) だと、 Altキーと上下キーを同時押しした場合、上キー、下キーのひとつ上(右隣)のフラグが1になっていました。 ひょっとしたら、Fnキーと上下キーを押したときの動作になっているのかもしれません。 (Lenovo S330にはFnキーはないのですが) ともかく、検出する方法がわかりました。ありがとうございました!! この返事は、Chromebookで書いているのですが、( )キーがずれているとか、記号キーの割当てがすこしおかしいです。 ブラウザの応答は速いです。
メンテ
Re: Android:Altキーと上下キーが同時に取得できない ( No.7 )
名前:大和団次郎 日時:2020/11/03 14:50

Chromebookで( )キーがずれていたのは、日本語入力(日本語キーボード)になっていたせいでした。 日本語入力(USキーボード)にすると正しく動作するようになりました。おさわがせしました。 Altキーをおすと、上下キーの反応がひとつずれる症状は、日本語入力(USキーボード)にしても同じ症状でした。 プログラムとしては、Altキーと上下キーをおしたとき、上下キーまたは、上下キー+1の反応があったときに応答する ようにすると、Androidでも、Chromebook(Lenovo S330)でも動くようになりました。
メンテ
Re: Android:Altキーと上下キーが同時に取得できない ( No.8 )
名前:kanamaru 日時:2020/11/03 16:28

調べたら原因がわかりました。 ChromebookではAltキ−と上下キーで1ページ分上下に移動するショートカットになっているようです。 とはいっても書き方を見るにウェブブラウザ用っぽいですけど。たぶん実際はブラウザ以外でも使えるんでしょう。 ブラウザでのみ動作するショートカットとかまず難しいですし。 で、そのショートカットの動作はPageUPとPageDownと同じです。 Fnキーと上下キーでも同じくPageUPとPageDownの動作となります。 おそらく内部的にキーコードが同じなんでしょう。 ttps://support.google.com/chromebook/answer/183101?hl=ja
メンテ
Re: Android:Altキーと上下キーが同時に取得できない ( No.9 )
名前:管理人 日時:2020/11/04 23:13

> kanamaruさん、大和団次郎さん > Altキーと上下キーを同時押しした場合、上キー、下キーのひとつ上(右隣)のフラグが1になっていました。 > ひょっとしたら、Fnキーと上下キーを押したときの動作になっているのかもしれません。 > で、そのショートカットの動作はPageUPとPageDownと同じです。 > Fnキーと上下キーでも同じくPageUPとPageDownの動作となります。 『上キー、下キーのひとつ上(右隣)のフラグ』の値は PageUP( KEY_INPUT_PGUP ) と PageDown( KEY_INPUT_PGDN ) ですので、 確かに PageUP と PageDown のキーが押されたことになっているようです 手元のスマホでは Altキーを押しながら上下キーを押しても PageUP と PageDown を押したことにはならなかったので、 Chromebook での OS の仕様なのか、Chromebook のキーボードのハード的な仕様なのかは不明ですが とりあえず Chromebook ではそのような動作となるようです
メンテ
Re: Android:Altキーと上下キーが同時に取得できない ( No.10 )
名前:大和団次郎(解決) 日時:2020/11/14 08:58

長い間、解決フラグをどうやってつけるのかわからなかったのですが・・ ふと、名前の後ろに自分で書くのかも、と、気が付きました。 いろいろ、情報ありがとうござました。 結論として、 ChromeBook でも動かしたい場合、Altキー+上下キーは、 ・Altキー+上下キー ・Altキー+PageUP( KEY_INPUT_PGUP ) と PageDown( KEY_INPUT_PGDN ) キー の両方を検出するとよいです。
メンテ

Page: 1 |

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

   クッキー保存