0

コンソールでシフト + 数字の文字を入力すると、キーストロークの正しいコードを取得するのに苦労しました。たとえば、次を使用します。

cki = Console.ReadKey(True)
Console.WriteLine("You pressed the '{0}' key.", cki.Key)

Shift+2 を押すと、ascii 64 ('@' 文字の場合) を取得したいと考えていますが、代わりに 50 ('2' 文字の場合) を取得します。

さて、押されたキーの修飾子を取得できることはわかっていますが、それは、そのようなキーのすべての特殊なケースをプログラムする必要があることを意味し、それは正しくないようです.

Enterキーを押す必要なく、キーが押されたときにキーを読み取る機能があるため、この関数またはそれに似たものが必要です。それ以外の場合は、console.readを使用します。確かに私は何かを逃した。誰かが私が見逃したものを教えてもらえますか?

4

2 に答える 2

1

押された物理キーではなく実際の文字を返すKeyCharプロパティを探しています。
にキャストしたい場合がありintます。

于 2013-11-12T18:00:41.990 に答える
1

キーと文字を区別することは非常に重要です。鍵は世界中どこでも同じで、上段左の鍵です。常に ConsoleKey.D2 を生成するそのキーに頼ることができます

ただし、文字は非常に異なり、アクティブなキーボード レイアウトに大きく依存します。北アメリカのユーザーが Shift+2 を押します。フランスのユーザーが AltGr+0 を押​​します。ドイツのユーザーが AltGr+Q を押します。スペインのユーザーが AltGr+2 を押します。など。

キーのみを気にする場合は、ConsoleKeyInfo.Key を使用します。たとえば、ファンクション キーなどのすべての非入力キーに対してこれを行います。おそらく、典型的なゲームの WASD キーです。@ などの文字のみを気にする場合は、ConsoleKeyInfo.KeyChar を使用します。

于 2013-11-12T19:59:07.067 に答える