我将尝试更好地解释我的意思,并且我还将尝试使问题不受语言影响,尽管如果有一种方法可以在 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 或切换大写锁定时键入“a”,则它变为“A”。
但是,如果用户决定键入“!”,即“1”加上 shift,我只会得到 1,因为“1”大写仍然是“1”。
在问这个问题之前,我在网上看了一些,但我得到的只是“自己映射键”。这真的是唯一的答案吗?此外,如果我映射了按键,然后具有不同键盘布局的用户尝试使用我的应用程序,会发生什么情况?提前致谢。