我是一个 Dvorak 布局用户,对于这次切换我感到很满意。
我使用微软的键盘布局创建器将控制键组合映射回 QWERTY 对应键,从而避免了 Windows 上撤消/剪切/复制/粘贴快捷键的缺点(在 Dvorak 布局中, 和z相距c甚远),但令我烦恼的是,我无法在 Ubuntu/Linux 上执行相同操作,即使它具有更高级的输入框架。xv
德沃夏克查询应该可以实现这一点,但对我来说不起作用。
那么除了等待(数年)修复错误之外我还能做什么吗,例如编写自定义键盘布局或 ibus 插件?
澄清(另一种提出问题的方式)
当 Dvorak 布局处于活动状态时,有没有办法使用 QWERTY 的键盘快捷键位置?
例如,要“复制”,我必须按Ctrl+ i(QWERTY 上“I”的位置在 Dvorak 上是“C”,这很尴尬),然后要“粘贴”,我必须按Ctrl+ .(另一个尴尬的位置)。我想按Ctrl+c和Ctrl+ v。
目前我正在使用从 DOS 时代学到的旧式快捷方式,Shift-Del表示剪切,Ctrl+Insert表示复制...
答案1
我的第一个尝试是让控制键同时充当 Control 和第三级选择器,然后定义一个键盘布局,其中 Dvorak 位于第 1 级和第 2 级,Qwerty 位于第 3 级和第 4 级。然而,这在 XKB 中似乎不可能实现。此外,您链接的 dvorak-qwerty 程序源代码中的注释指出
尽管可以定义一个实现 Dvorak-Qwerty 的 XKB 布局,但这样做会暴露 X 应用程序中大量令人沮丧的错误。由于每个 X 应用程序都负责解释键盘布局本身,而不是让 X 服务器完成这项工作,因此不同的 GUI 框架在使用此类布局时实际上往往会出现不同的错误。修复所有错误是不可行的。
你最好的选择可能是德沃夏克键盘hack 工作。我接下来要写的大部分内容你可能已经知道了。源代码说要用
gcc xdq.c -o xdq -std=c99 -O2 -lX11
然后运行
./xdq
或者提供绝对路径,以便您可以将其放入启动项中。
当我运行该程序时,它给出了以下警告:
无法获取 35 个组合键。这可能是因为某些热键已被系统获取。遗憾的是,此工具无法自动重新映射这些系统范围的热键。不过,您通常可以手动配置它们。
^W
但是,我用、^Q
、、 和进行了测试^C
,结果如预期一样。如果您希望它获取系统已用于其他事物的其他修饰符(和)组合,请添加(^X
^V
ALt+Ctrl
Super
-DXQD_GREEDY
不是 -DXDQ_GREEDY
正如来源所说)到编译命令。
如果编译失败并出现错误
xdq.c:87:22:致命错误:X11/Xlib.h:没有这样的文件或目录编译终止。
那么你应该libx11-dev
使用
sudo apt-get install libx11-dev
如果这不能使程序正常运行,请告诉我,我们可以尝试解决问题。
答案2
总结
您需要关闭 NumLock。
解释
dvorak-querty 的工作原理是从其他程序“抓取”(更像是“窃取”)键盘组合。包含某些修饰符(Control、Control+Shift和Alt+ )的组合被窃取,然后“qwerty 化”并返回到原始程序。AltShift
问题在于,只有这些修饰键组合被盗用。其他修饰键(例如 CapsLock 和 NumLock)并未被盗用。
因此,如果您激活 NumLock 并按下Ctrl+ C,则 dvorak-qwery 将“感知” NumLock+ Ctrl+C因此不会窃取它。
因此,请关闭键盘上看到的任何其他隐式修饰符。
替代解决方案
如果你想运行 dvorak-qwerty 并同时启用 NumLock,你可能需要尝试我的代码版本(查看参数)
:)
答案3
多年后我仍然使用自动键在 X11 上,有单独的键映射。很遗憾。
答案4
对于那些 7 年后甚至更久以后还在思考这个问题的人来说,以下是对我有用的方法(无需编码!):
- 下载https://github.com/ZeptByteS/dvorak-qwerty/tree/develop压缩文件
- 解压缩
- 运行 sudo ./install.sh
- (Ubuntu)转到“设置”/“区域和语言”/“输入源”
- 按加号按钮
- 选择英语(美国)
- 选择任何一种英语(Dvorak-Qwerty)布局,您喜欢的风格
- 现在将键盘布局切换为新添加的布局