Answers:
我第一次没有明白你的意思,因为我对此很熟悉。如果可以预期的结果,我认为可以。
该行为是Unicode双向算法的标准。因此,主要的BiDi方向是从该段落中的第一个强角色得出的。
所以我认为在这种情况下会发生什么:
文本框为空的第一个方向来自语言环境/语言配置。如您所说,阿拉伯语是RTL语言。因此,将光标放在右侧。
输入,<
但显示为>
。它是中性字符,因此不会影响方向。为什么它被翻转?简短的答案:Unicode标准,:)仍然接受。好吧,它的名称是小于号,因此...在RTL /阿拉伯语中,公式从右侧开始,应该翻转。您怎么看……不?!
输入拉丁字符g
。这是一个很强的L(左)字符,因此该段被检测为LTR。
退格键删除g
。但是请注意光标所在的位置。
现在,例如[
,它被错误地命名为Left方括号。应该是像方括号这样的东西(BiDi是中性的,在RTL中是翻转的)
所有开发人员都尝试遵循标准。因此,无论如何,它们都将强制文本框为RTL或LTR,对于大多数用户而言,“自动”是最好的。
因此,对您来说,我能提供的最好的方法是使用Unicode BiDi Control Char。
U+200F right-to-left mark (RLM)
在空白的地址栏中,Ctrl+ Shift+ u,出现带下划线的小框,然后u
输入200f
Enter
看到<
没有翻转为LTR。
Ctrl+ Shift+ u是特定于GTK / Gnome的。KDE错过了这种选项,而且似乎没有得到解决,因为此错误报告提到了KDE / Qt / Xorg Need在Kubuntu中插入任意Unicode字符之间的冲突。
由于只是几个字符,您可以重新映射不需要的键或映射未使用的键。例如,我使用的是美国英语(国际AltGr死键)
打开其xkb
布局文件以进行编辑:
sudo nano /usr/share/X11/xkb/symbols/us
查找具有相同名称的组定义:
xkb_symbols "altgr-intl" {
name[Group1]= "English (international AltGr dead keys)";
让我们以以下示例为例r
(易于记忆):AltGr+ r→RLM,Shift++ AltGr+ rLRM。代替ë
&Ë
。更换:
key <AD04> { [ r, R, ediaeresis, Ediaeresis ] };
带有:
key <AD04> { [ r, R, U200F, U200E ] };
更新xkb
sudo dpkg-reconfigure xkb-data
切换到另一个布局然后返回,它将立即处于活动状态。
笔记:
如果您希望能够从两种布局中使用它,请使用相同的方法将它们添加到阿拉伯布局中。
如果U+061C arabic letter mark (ALM)
您是阿拉伯用户,则可以使用而不是RLM。
xkb
支持其他Unicode码输入格式,0x100200f
EQ。U200F
(即0x100
作为前缀)
为了避免通过xkb-data
更新覆盖修改后的键映射,最好的方法是创建一个新的自定义XKB映射。请参阅如何添加新的键盘布局(自定义键盘布局定义)或在ubuntu上创建新的键盘布局需要什么步骤?
可以添加所有其他Unicode控制字符。某些应用程序在多行输入文本框的弹出菜单中已经有一个选项。示例Poedit:
很高兴阅读以进一步了解:
参考文献:
如何输入键盘上不可用的任何Unicode,请参见在匈牙利布局中无法输入“ć”
0x100
前缀的引用)0x100200F
,但我不知道它是否与相同U200F
。