C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: CapsLock押下時のKeyイベント順序について


(過去ログ 117 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■69012 / inTopicNo.1)  CapsLock押下時のKeyイベント順序について
  
□投稿者/ ムドー (8回)-(2013/11/28(Thu) 14:25:09)

分類:[C#] 

・かなキーとCapsLockキーのイベント
http://bbs.wankuma.com/index.cgi?mode=al2&namber=68983

上記のトピックにて回答(No68998)していたムドーです。
該当レスにも記載しましたが、CapsLockを押した時のKeyDown、KeyUpイベントが下記のように発生しました。

・ボタン押下奇数回目「KeyUp→KeyDown」、偶数回目「KeyDown」

ちょっと気になって調べてみたのですが情報が見受けられなかったのでトピックを立てました。
これってどういうことなんですかね?ざっくばらんにご意見お聞かせいただければなと思います。


ちなみに下記のような構成でプログラムを作成し、実行しました。
----------------------------
OS:Windows8
開発ソフト:Visual Studio Express 2012 for Windows Desktop
言語:C#

画面Form1にTextBox(textBox1)、0と表示されているLabel(keydownCnt、keyupCnt)を配置し、
 textBox1にフォーカスを当てた状態でCapsLockを押す。

その際のイベント(textBox1_KeyDown、textBox1_KeyUp)でLabelのカウントを増やす。

-----ソース(一部抜粋)------
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    int cnt = Int32.Parse(this.keydownCnt.Text.ToString());
            
    cnt++;

    this.keydownCnt.Text = cnt.ToString();
}

private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
    int cnt = Int32.Parse(this.keyupCnt.Text.ToString());

    cnt++;

    this.keyupCnt.Text = cnt.ToString();
}


引用返信 編集キー/
■69014 / inTopicNo.2)  Re[1]: CapsLock押下時のKeyイベント順序について
□投稿者/ Hongliang (134回)-(2013/11/28(Thu) 15:01:57)
キーボードおよびキーボードドライバによる、じゃないですかね。

今の私の環境はDELLのSK-8115というUSBキーボード+Win7の標準ドライバですが、
[英数]キーと[ひらがな]キーが排他でトグルされるようになっています。
つまり
・[英数]キーと[ひらがな]キーのどちらかが常にトグル中
・[英数]キーがトグル中のときに[ひらがな]キー
 →[英数]キーアップ+[ひらがな]キーダウン、[ひらがな]キートグル中に、[英数]キートグル解除
・[英数]キーがトグル中のときに[英数]キー
 →[英数]キーダウン、[英数]キートグル継続
という動作を示しています。

// Win32APIのGetKeyboardState関数で定期的に監視してると腑に落ちるかも。

引用返信 編集キー/
■69039 / inTopicNo.3)  Re[2]: CapsLock押下時のKeyイベント順序について
□投稿者/ ムドー (9回)-(2013/11/29(Fri) 11:13:34)
No69014 (Hongliang さん) に返信
> キーボードおよびキーボードドライバによる、じゃないですかね。
>
> 今の私の環境はDELLのSK-8115というUSBキーボード+Win7の標準ドライバですが、
> [英数]キーと[ひらがな]キーが排他でトグルされるようになっています。
> つまり
> ・[英数]キーと[ひらがな]キーのどちらかが常にトグル中
> ・[英数]キーがトグル中のときに[ひらがな]キー
>  →[英数]キーアップ+[ひらがな]キーダウン、[ひらがな]キートグル中に、[英数]キートグル解除
> ・[英数]キーがトグル中のときに[英数]キー
>  →[英数]キーダウン、[英数]キートグル継続
> という動作を示しています。
>
> // Win32APIのGetKeyboardState関数で定期的に監視してると腑に落ちるかも。

Hongliang さん返信ありがとうございます。

あーそういうことか
イメージは理解できたので監視プログラム作ってやってみますね。(別件が入ったので報告遅くなるかも・・・)
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -