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 ) キー
の両方を検出するとよいです。
|