在Dvorak布局处于活动状态时,有没有办法使用QWERTY的键盘快捷键位置?

我是Dvorak布局用户,我对开关感到满意。 我通过使用Microsoft的键盘布局创建器将控制键组合映射回他们的qwerty对应物,避免了Windows上的撤消/剪切/复制/粘贴短路缺点(z,c,x和v在Dvorak布局上相隔很远),但它正在窃听我不能在Ubuntu / Linux上做同样的事情,即使它有更高级的输入框架。

dvorak-querty应该可以实现这个目标但对我不起作用。

对先前类似问题所提到的错误的评论没有为此提供任何可行的解决方法。

那么有什么我可以做的,等待(多年)修复错误,比如编写自定义键盘布局或ibus插件?

澄清 (提出问题的另一种方式)

在Dvorak布局处于活动状态时,有没有办法使用QWERTY的键盘快捷键位置? 例如,对于’复制’,我必须按Ctrl + I(QWERTY上’我’的位置是Dvorak上的’C’,这是一个尴尬的延伸),然后对于’粘贴’,我必须按Ctrl + 。 (另一个尴尬的位置)。 我想按Ctrl + C和Ctrl + V目前我正在使用我从DOS时代学到的旧式快捷键,Shift-Del用于剪切,Ctrl + Insert用于复制…

我的第一次尝试是使控制键同时作为Control和第三级选择器,然后在级别1和2上使用Dvorak定义键盘布局,在级别3和4上定义Qwerty。这在XKB中似乎不可能但是。 另外,您链接的dvorak-qwerty程序源代码中的注释说明了这一点

尽管可以定义实现Dvorak-Qwerty的XKB布局,但这样做会在X应用程序中暴露出令人沮丧的数量的错误。 由于每个X应用程序都有责任解释键盘布局本身,而不是让X服务器完成工作,不同的GUI框架实际上往往会有不同的错误,这些错误在使用这样的布局时会起作用。 修复它们都是不可行的。

你最好的选择可能是让dvorak-qwerty黑客工作。 我要写的大部分内容都可能知道。 消息来源说用它来编译它

gcc xdq.c -o xdq -std=c99 -O2 -lX11 

然后运行它

 ./xdq 

或者给出绝对路径,以便将其放入启动项目中。

当我运行该程序时,它给了我以下警告:

无法抓取35个组合键。 这可能是因为系统已经抓住了一些热键。 遗憾的是,此工具无法自动重新映射这些系统范围的热键。 但是,您通常可以手动配置它们。

但是,我用^W^Q^C^X^V测试了它,它按预期工作。 如果您希望它获取其他修饰符( ALt+CtrlSuper )系统已经用于其他事物的组合,请将-DXQD_GREEDY不是 -DXDQ_GREEDY如源所示)添加到编译命令。

如果无法编译错误

xdq.c:87:22:致命错误:X11 / Xlib.h:没有终止此类文件或目录编译。

那么你应该安装包libx11-dev

 sudo apt-get install libx11-dev 

如果这不能使程序运行,请告诉我,我们可以尝试解决它。

TL;博士

你需要关闭NumLock。

说明

dvorak-querty的工作原理是“抓住”(更像是“窃取”)来自其他程序的键盘组合。 包含某些修饰符(Control,Control + Shift,Alt和Alt + Shift)的组合被盗,“qwerty’d”并返回原始程序。

问题是那些,只有那些,是唯一被盗的修饰语组合。 其他修饰符,如CapsLock和NumLock,都不会被盗。

因此,如果你有NumLock激活并按Ctrl + C,dvorak-qwery将“感知”NumLock + Ctrl + C,因此不会窃取它。

因此,请关闭键盘上显示的任何其他隐式修饰符。

替代解决方案

如果你想同时运行dvorak-qwerty并启用NumLock,你可能想尝试我的代码版本 (查看Arguments )

🙂