我希望通过检测某些无法键入的组合键(转义序列)的按键来模拟 C# 中的串行通信的超级终端功能,例如 Ctrl+C、Ctrl+Z 等。我知道这些键有其 ASCII等价物,并且可以按原样传输。但我在检测多个按键时遇到问题。我提供一些代码作为参考:
private void Transmitted_KeyDown(object sender, KeyEventArgs e)
{
if (e.Modifiers == Keys.Control || e.Modifiers== Keys.Shift || e.Modifiers==Keys.Alt)
{
var test = (char)e.KeyValue; // Only able to detect a single keypress!
ComPort.Write(test.ToString());
}
}
如果您正在寻找常规密钥,则可以将它们存储在列表中:在 KeyDown 上,将密钥添加到列表中。在 Key Up 上,将其从列表中删除。在 KeyDown 上,检查列表中的内容。
但是,我不确定 ctrl、shift、alt 等修饰键是否有 keydown/keyup 事件。对于那些你可以做这样的事情:
bool CtrlDown = ((e.Modifiers & Keys.Control) > 0);
bool CtrlOnlyModifierDown = ((e.ModifierKeys & Keys.Control) == Keys.Control)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)