我一直在使用罗技无线桌面 MX3100我已经使用键盘很长时间了。除了偶尔打错字外,我从来没有遇到过任何问题。
然而,我注意到我经常把“Load”写成“Laod”,这比其他拼写错误要多得多。这让我很烦,于是我决定做一些测试。
我发现,当我写小写的“load”时,我绝不会打错。如果全部大写,或者只是大写 L,我就会经常打错。我实际的(非常科学的)测试可能最好通过显示输出来描述:
moatmoatmoat
MoatMoatMoat
loatloatloat
LaotLaotLaot
loafloafloaf
LaofLaofLaof
hoathoathoat
HoatHoatHoat
hoadhoadhoad
HoadHoadHoad
lortlortlort
LrotLrotLrot
我发现,无论何时按下 Shift 键,如果下一个字符是“o”,则输入大写字母“L”会导致明显的滞后,相比任何其他键的滞后:
High "o" lag:
LoLoLoLoLoLo
No "a" lag:
LaLaLaLaLaLa
No lag for neither "o" nor "a":
lolololololo
lalalalalala
意识到这一点后,我稍微恢复了理智,因为我知道自己没有患上帕金森病。我实际上是在正确打字,只是延迟错误地解读了它。
现在,真正让我烦恼的是,我无法理解这是怎么发生的。我实际输入的物理顺序是:L - o - a - d,然而,尽管“o”是在“a”之前按下的,但“a”却在“o”之前输出。
因此,当键盘处理“Lo”组合时,“a”优先插入,在“o”处理完成之前插入,结果变成 Laod 而不是 Load。而且这种情况只发生在输入“Lo”时,而不是输入小写“lo”时。
这个问题可能源于键盘硬件、接收器硬件或键盘软件驱动程序。然而,无论故障位置如何,我都无法想象除了 FIFO 队列之外,它还能如何实现。一般的延迟,当然,我可以忍受,尽管我会很恼火。但延迟对不同按键的影响不同,甚至导致不可预测的结果——这根本说不通。
我通过切换到有线键盘解决了这个问题。但我就是无法摆脱它;什么样的错误/错误/场景会导致这种情况?
编辑:有人建议我停止喝红牛,改喝水。虽然这可能有助于解决问题,但我真的不想寻找这样的解决方案。我更感兴趣的是解释这种情况是如何发生的,因为我无法想象任何可行的技术解决方案会导致这种行为。
答案1
我想到的是参考无线键盘发送的键码和所涉及的延迟:
每个按下的键都会发送一个 DOWN 和 UP 代码...
- 你按下 SHIFT,它会发送“SHIFT-DOWN”
- 按“l”,发送“l-DOWN”
- 释放‘l’,发送‘l-UP’
- 释放 SHIFT,发送‘SHIFT-UP’
- 按“o”,发送“o-DOWN”
- 释放“o”,发送“o-UP”
- 按“a”,发送“a-DOWN”
- 释放‘a’,发送‘a-UP’
- ... 等等
听起来好像 Logitech 无线在发送换档笔划(或者可能是“修饰”笔划……ctrl、shift、alt……)时受到了某种影响。
我有一个罗技无线键盘(型号 K270),但我从未注意到任何类似的事情,尽管我知道从我自己的打字风格来看,我经常将“make”误打成“maek”和“mkae”...这是我的问题,我在编写代码的每个键盘和计算机上都保持一致...所以我为 bash 和 vim 添加了别名,这样我每次这样做时就不会(形象地)感到头脑混乱。
这是可见或可察觉的延迟吗?仅基于您的打字速度而发生?
我要在这里提出一些想法:我能想到的可能相关的随机事物......
- 发送的特定位模式可能存在无线干扰吗?您是否尝试过将无线重新同步到接收器?
- 由于“L”和“O”通常位于同一“列”线上,因此可能存在键矩阵干扰?(可能是行......但你明白我的意思)
- 您感染了极其罕见且可能致命的“老挝”病毒。(没听说过?告诉过您这种病毒很罕见……)
我会尝试将键盘重新同步到接收器,不,我不知道这两种方法是否可行,但奇怪的事情已经奏效了。不会造成伤害吧?
答案2
我通常会将此写为评论,但我的声誉不够,所以我会尽可能地让它有所帮助。
我有一个非常相似的问题,只是我的延迟来自于OM
组合。
我有时会写FROM
(在数据库查询中),我的SPACEBAR
笔画会先处理,最后会得到FRO
。问题并不完全一样,因为我的笔画M
实际上从未出现过,但非常相似。此外,只有当我按住 时才会出现这种情况SHIFT
。如果我改用CAPSLOCK
,则不会出现延迟。或者,当CAPSLOCK
启用时,我按住SHIFT
,然后小写字母o
和m
会导致相同的延迟。问题肯定出在 上SHIFT
。
我也有罗技键盘,虽然是G110,而且是有线的;
我刚刚测试了您的特定场景,没有发现任何问题,因此每种键盘型号(或其对应的驱动程序)一定存在自身的不一致性,并且无论出于何种原因,都无法正确更新按键队列。(假设像您所说的那样,它是一个队列,我不明白为什么不行)。