私が意味することをよりよく説明しようとします。また、質問を言語から解放しようとしますが、何かを参照することなく C# でやりたいことを行う方法があれば、それは素晴らしいことです. ともかく。
キーボード入力を処理し、文字列に変換しています。大丈夫だ。Shift キーと CapsLock キーのステータスを取得し、それを EXOR して、結果の文字列の大文字と小文字を区別します。
bool shift = KeyDown(SHIFT_KEY)
bool capslock = KeyToggled(CAPSLOCK)
bool stringCasing = shift ^ capslock //if both are true/false, the string will be lowercase. Otherwise uppercase.
foreach Key k in [list of keys passed as parameter]
char c = (char)k
if stringCasing
c = Char.ToUpper(c)
else
c = Char.ToLower(c)
end foreach
そして、今のところ問題はありません。Shift キーを押しながら、または capslock を切り替えた状態でユーザーが「a」を入力すると、「A」になります。
ただし、ユーザーが「!」(「1」にシフトを加えたもの) を入力すると、大文字の「1」は「1」のままであるため、1 しか取得できません。
この質問をする前にウェブを少し調べましたが、「キーを自分でマップする」というものしか得られませんでした。それが本当に唯一の答えですか?また、キーをマッピングした後で、別のキーボード レイアウトを持つユーザーがアプリケーションを使用しようとするとどうなるでしょうか。前もって感謝します。