2

我正在使用带有 Windows Mobile 6.0 的摩托罗拉MC67并使用c# 紧凑框架编写。

我想禁用按键重复,所以如果你长按“输入”,例如,我不会得到超过一个“输入”的按键。我搜索了摩托罗拉手册,并尝试了这里给出的建议,这样做:

Registry.SetValue(@"HKCU\ControlPanel\Keybd", "RepeatRate", "1000000");

但没有用。

谁能帮我?

明确一点:我可以从我的代码中更改注册表,但即使我将速率更改为最大可能,它也会忽略注册表中的值。

4

2 回答 2

1

硬件键盘可能不关心注册表设置,硬件驱动程序是 OEM 特定的。

重复率是 a) 非常高(超出规格),b) 将在首先重新启动后发生,c) 只能控制软件键盘。

这是一个最终得出 IOCtl 解决方案的长线程:http: //social.msdn.microsoft.com/Forums/en-US/5f322f80-1dba-477e-a77e-d667e8f2031f/keyboard-repeat-rate

于 2013-08-29T03:21:06.340 回答
1

如果此键是软件按钮,您可以禁用该按钮:

private void btnOK_Clicked(object sender, EventArgs e) {
  btnOK.Enabled = false;
  try {
    // Your code here
  } finally {
    btnOK.Enabled = true;
  }
}

如果这是用于您设备上的物理键,我真的不知道如何进入并设置“点击率”(或任何名称),但您可以尝试lock在您的例程中添加一个。

private object m_lock = new object();

private void textbox_Changed(object sender, EventArgs e) {
  lock (m_lock) {
    // Your code here
  }
}

不过,我不知道这是否会有所帮助。我无法测试,因为我这里的设备似乎没有同样的问题。

于 2013-08-28T21:33:08.887 回答