【发布时间】:2012-06-05 06:46:23
【问题描述】:
将键盘的修饰键应用于字符以获取其修改值(对于当前文化)的最佳方法是什么?
例如,按下 shift 键(对于英国键盘):
Assert.AreEqual('!', Modify('1'));
Assert.AreEqual('"', Modify('2'));
Assert.AreEqual('A', Modify('a'));
Assert.AreEqual('B', Modify('b'));
Assert.AreEqual(':', Modify(';'));
Assert.AreEqual('?', Modify('/'));
我有办法判断是否按下了修饰键,但我没有办法在给定这组修饰键的情况下映射到正确的字符。
【问题讨论】:
-
我会说是一本字典,但它的可扩展性不是很好,尤其是当您必须支持多种键盘布局时。
-
@JeffMercado 如果用户使用修改后的自定义键盘布局,情况会更糟!
-
@JeffMercado 我考虑过,但这是针对可能在许多地区使用的应用程序,因此我自己解决问题是不可行的。
-
这不是你可以从编码或文化中得到的。这些关系(仅)在键盘驱动软件中定义。
-
这根本不可能。 Modify('1') 必须并且应该返回结果列表(例如,在英文布局上它是“!”和“结束”)。并且高度依赖于键盘语言环境。