使 Windows 和 UNIX 操作系统之间的按键重复行为保持一致

使 Windows 和 UNIX 操作系统之间的按键重复行为保持一致

我把时间平均分配在 Linux、macOS 和 Windows 上。这是因为 3 个系统上都有一些独特的软件,我需要在工作和休闲之间经常使用这些软件。

最近,我看到在所有这些环境中引入终端内的共享工作环境(我在终端界面中大量使用 tmux 和 vim)取得了很多成功。当然,我最初是从 Linux 开始走这条路的,但将这些工具过渡到 macOS 非常容易,而 Windows 则是一个更难攻克的难题。以前我使用过 Git Bash 和 MSYS shell 等工具,但现在通过 WSL2 有了更好的解决方案。我最近发现 Windows Terminal Preview 非常强大且速度很快,所以我现在打算在 Windows 上花更多时间。

不管怎样,现在很多软件都运行得非常好,唯一剩下的区别就是操作系统之间实际上非常深层的特性。

其中之一就是按键重复的行为。

在 macOS 中,在典型的应用程序中,按键重复并不是一件大事。如果您按住字母键,它会在短暂的停顿后弹出一个菜单,让您选择重音字母等。但是,在 alacritty 和 iTerm 等终端应用程序中,按键重复是有效的,这对我来说很重要,因为我使用 vim 和 h、j、k 和 l 等键在文本中移动和滚动。

在 Linux 中,行为更简单,与 Windows 类似。

但是 Windows 和 Linux/macOS 之间存在差异,即:如果您按住某个键开始重复该键,在 Windows 上,如果此时按下 Shift,它将停止重复。在 macOS 和 Linux 上,该键将变为 Shift 并继续重复。

我其实更喜欢后一种行为,但实际上我认为这是不寻常的,因为我实际上想不出需要这种行为的典型用例,除了对于我使用绑定的方式,我实际上绑定在 vim 中H向左移动 7 个字符(h默认绑定向左移动一个字符)。也就是说,我想出了自己的非标准键绑定,结果发现可以在某种程度上利用 macOS 和 Linux 中的这种键盘行为,在按住移动键的同时点击 shift 可以在导航时实现一种非常灵敏的“涡轮”模式。

不幸的是,这种肌肉记忆已经有点扎根了,当我在 Windows 终端中编辑代码时,它会引起一些摩擦!

最初我打算研究配置终端来调整这一点,但我不太确定这是否是执行此操作的正确抽象层,因为考虑到该行为似乎在整个系统范围内是一致的。

因此,我想问一下,是否有 Windows 专家知道可以通过操作系统调整将键盘处理行为更改为我习惯的行为?如果我按住某个键A,它就会开始为我输入“aaaaaaaaaaaa”,此时当我按下时Shift,我希望它立即地开始发出“AAAAAAA”。

相关内容