如何在Ubuntu 16.04的Dvorak中获得点数?
我希望在Macbook Air 2013-mid的Ubuntu 16.04键盘中用点( Ä
/ ä
)键入A作为一级键绑定,输出setxkbmap -query
rules: evdev model: pc105 layout: us,us variant: dvorak, options: ctrl:nocaps
默认情况下,键盘中没有AltGr ,只有两个Alts。 这个命令使你的右键成为组合键( AltGr ),但维护你自己的自定义键盘配置等,将Capslock作为CTRL by caps:ctrl_modifier
,见这里
gsettings set org.gnome.desktop.input-sources xkb-options \ "$(gsettings get org.gnome.desktop.input-sources xkb-options \ | sed "s/]/, 'compose:ralt']/")"
如果要改变xmodmap
独立解决方案,那将是非常好的,因为它将被折旧。
两级键绑定方法
我们只能使用Dvorak International和死键进行两级键绑定方法。
- SeverusTux的答案是两级命令,如AltGr – Shift – Q + A ,它仅适用于
us-drovak, international with deadkeys
。 - SeverusTux。 Ctrl + Shift + u + e4 + Enter工作并给你
ä
。 如何将此映射到一级键绑定Alt – a ?
我在那里看到GUI在其他地方进行更改。 我真的想知道在哪里
masi@masi:~$ cat /usr/share/X11/locale/en_US.UTF-8/Compose > /home/masi/Desktop/test1 % I make here a change in the GUI as proposed by Severus: compose key = right Alt masi@masi:~$ cat /usr/share/X11/locale/en_US.UTF-8/Compose > /home/masi/Desktop/test2 masi@masi:~$ diff /home/masi/Desktop/test1 /home/masi/Desktop/test2 [ no output ]
这表明xserver没有快速更新。 您必须将键盘更改为其他内容并再次返回,以进行更改。
一级键绑定方法
我想要一个级别的命令作为AltGr – A用于ä
和AltGr – Shift – A用于Ä
英语(US-dvorak)。 我做xev -e keyboard
然后按AltGr
[ignore the beginning; press AltGr] KeyPress event, serial 28, synthetic NO, window 0x4400001, root 0xd6, subw 0x0, time 13661220, (186,522), root:(186,574), state 0x0, keycode 108 (keysym 0xffea, Alt_R), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyRelease event, serial 28, synthetic NO, window 0x4400001, root 0xd6, subw 0x0, time 13661284, (186,522), root:(186,574), state 0x8, keycode 108 (keysym 0xffea, Alt_R), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False
您可以通过more /usr/share/X11/xkb/rules/xorg.lst | grep lv3
获得所有可能的开关more /usr/share/X11/xkb/rules/xorg.lst | grep lv3
more /usr/share/X11/xkb/rules/xorg.lst | grep lv3
但我们只对lv3:ralt_switch
lv3:switch Right Ctrl lv3:menu_switch Menu lv3:win_switch Any Win key lv3:lwin_switch Left Win lv3:rwin_switch Right Win lv3:alt_switch Any Alt key lv3:lalt_switch Left Alt lv3:ralt_switch Right Alt lv3:ralt_switch_multikey Right Alt, Shift+Right Alt key is Compose lv3:ralt_alt Right Alt key never chooses 3rd level lv3:enter_switch Enter on keypad lv3:caps_switch Caps Lock lv3:bksl_switch Backslash lv3:lsgt_switch <Less/Greater> lv3:caps_switch_latch Caps Lock chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser lv3:bksl_switch_latch Backslash chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser lv3:lsgt_switch_latch <Less/Greater> chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser
我的键盘布局经过测试,但主要是英语(US-dvorak)
最终解决方案[Sneetsher]
我用AltGr – a设置英文点(dvorak)的A. 合并/usr/share/X11/xkb/symbols/us
的更改; 现在德语 – 德沃夏克因为它也适用于斯堪的纳维亚语言(从这里开始 )
// based on a keyboard map from an 'xkb/symbols/dk' file // Added A with dots and O with dots for AltGr-A and AltGr-O, respectively. Sneether and Masi, 17-June-2016. partial alphanumeric_keys xkb_symbols "dvorak" { name[Group1]= "English (Dvorak)"; key { [ grave, asciitilde, dead_grave, dead_tilde ] }; key { [ 1, exclam ] }; key { [ 2, at ] }; key { [ 3, numbersign ] }; key { [ 4, dollar ] }; key { [ 5, percent ] }; key { [ 6, asciicircum, dead_circumflex, dead_circumflex ] }; key { [ 7, ampersand ] }; key { [ 8, asterisk ] }; key { [ 9, parenleft, dead_grave] }; key { [ 0, parenright ] }; key { [ bracketleft, braceleft ] }; key { [ bracketright, braceright, dead_tilde] }; key { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] }; key { [ comma, less, dead_cedilla, dead_caron ] }; key { [ period, greater, dead_abovedot, periodcentered ] }; key { [ p, P ] }; key { [ y, Y ] }; key { [ f, F ] }; key { [ g, G ] }; key { [ c, C ] }; key { [ r, R ] }; key { [ l, L ] }; key { [ slash, question ] }; key { [ equal, plus ] }; key {[ a, A, adiaeresis, Adiaeresis ] }; key {[ o, O, odiaeresis, Odiaeresis ] }; key { [ e, E, ediaeresis, Ediaeresis ] }; key { [ u, U, udiaeresis, Udiaeresis ] }; key { [ i, I ] }; key { [ d, D ] }; key { [ h, H ] }; key { [ t, T ] }; key { [ n, N ] }; key { [ s, S, ssharp ] }; key { [ minus, underscore ] }; key { [ semicolon, colon, dead_ogonek, dead_doubleacute ] }; key { [ q, Q ] }; key { [ j, J ] }; key { [ k, K ] }; key { [ x, X ] }; key { [ b, B ] }; key { [ m, M ] }; key { [ w, W ] }; key { [ v, V ] }; key { [ z, Z ] }; key { [ backslash, bar ] }; include "level3(ralt_switch)" };
或者使用仍然有缺陷的脚本
# restore your current keyboard settings sudo apt-get install --reinstall xkb-data gsettings set org.gnome.desktop.input-sources xkb-options "['compose:ralt', 'caps:ctrl_modifier']" sudo sed -i.bak 's/[[ \t]*a,[ \t]*A[ \t]*]/[ a, A, adiaeresis, Adiaeresis ]/g;' /usr/share/X11/xkb/symbols/us; sudo sed -i.bak 's/[[ \t]*o,[ \t]*O[ \t]*]/[ o, O, odiaeresis, Odiaeresis ]/g;' /usr/share/X11/xkb/symbols/us; # German-Dvorak feels better #sudo sed -i.bak 's/[[ \t]*e,[ \t]*E[ \t]*]/[ e, E, ediaeresis, Ediaeresis ]/g;' /usr/share/X11/xkb/symbols/us; #sudo sed -i.bak 's/[[ \t]*u,[ \t]*U[ \t]*]/[ u, U, udiaeresis, Udiaeresis ]/g;' /usr/share/X11/xkb/symbols/us; #sudo sed -i.bak 's/[[ \t]*s,[ \t]*S[ \t]*]/[ s, S, ssharp ]/g;' /usr/share/X11/xkb/symbols/us; # add include "level3(ralt_switch)" to the end of the environment # https://unix.stackexchange.com/a/290407/16920 # https://unix.stackexchange.com/q/290405/16920 pos=( $( sed -n -f - /usr/share/X11/xkb/symbols/us <<END_SED /xkb_symbols "dvorak" {/,/^};/{ /xkb_symbols "dvorak" {/= /^};/= } END_SED ) ) sudo sed -i.bak "${pos[1]}i\ include \"level3(ralt_switch)\"" /usr/share/X11/xkb/symbols/us sudo dpkg-reconfigure xkb-data # Change your keyboard. Change Back. Should work. But some bug. I cannot get the script works stably.
错误
- 将键盘重新加载回xserver的TODO问题https://unix.stackexchange.com/q/290449/16920手动更改不起作用。
- 并发症:Xserver不会快速加载这些密钥,即使在重启/注销后的所有情况下都不会。
系统:Ubuntu 16.04
Linux内核:4.4 – 4.6
键盘型号:pc105
用于两级键绑定方法的键盘布局:带有死键的US-dvorak international
一级键绑定方法的键盘布局: 英语(Dvorak) = US-dvorak ,还有英语(Classic Dvorak)
-
要输入ä,unicode是U00E4
-
要键入Ä,unicode是U00C4
如果你想要其他角色的unicodes,你可以从gucharmap
获得它们
要手动输入,请按ctrl + shift + u然后按00e4并按Enter键 ,这应键入ä
但是使用Compose Keys有更好的方法。
如果要 使用命令行将 Right alt 设置 为撰写键:只需执行以下命令 :
gsettings set org.gnome.desktop.input-sources xkb-options "['compose:ralt']"
如果你想设置起诉GUI:
通过进入系统设置 – >键盘 – >键入 – >右Alt来启用撰写键。 (如果你愿意,你可以选择不同的钥匙)
就这样 !!
现在转到您喜欢的文本编辑器并执行以下操作:
按下并释放右Alt,然后按“ a 。然后你应该看到ä 。
对于Ä ,按下并释放右Alt,然后是“接着是A ” ,也可以这样做
注意:您可能需要按Shift + '才能获得“
小费:
如果您希望查看所有类似的快捷方式,请查看此文件: /usr/share/X11/locale/en_US.UTF-8/Compose
英语(德沃夏克,国际用死键) – dvorak-intl
工作正常!
我可以使用Shift AltGr q在默认设置下输入Ä
。 请参阅文件/usr/share/X11/xkb/symbols/us
,其中q
键声明为
key { [ q, Q, adiaeresis, Adiaeresis ] };
并且在底部使用level3(ralt_switch)
来使用Right Alt / AltGr作为第3级移位
- 第1列
q
← q - 第2列
Q
← Shift q - 第3栏
ä
← AltGr q - 第4列
Ä
← Shift AltGr q
可视化
-
dvorak-intl
只定义了4个级别,我在XKB支持的情况下绘制了所有8个级别,因此您可以获得一般概述。 - Shift是标准的2级移位, AltGr是大多数布局的默认3级移位,需要3级和4级。 只有少数布局定义了level5,6,7,8,因此level5 shift键,我使用RCtrl只是为了解释。
- 定义
键的所有4行都是等效的。
在英语(德沃夏克) a
密钥的第3和第4级设置ä
& Ä
– dvorak
布局
加上ö
& Ö
关键。 (它不会出现在屏幕截图中,因为它是在屏幕截图后添加的)
与dvorak-intl
相同,我们可以为dvorak
进行相同的设置。
-
清除以前的修改
sudo apt-get install --reinstall xkb-data gsettings set org.gnome.desktop.input-sources xkb-options "[]"
-
检查站
-
试试英语(德沃夏克,国际用死键) –
dvorak-intl
AltGr q打印
ä
。如果它不起作用,那么这个设置也会出现同样的问题。 有一些东西阻止Right Alt作为level3转换。 -
validation
dvorak
的当前地图 -
validation右Alt映射,它应该是
Alt_R
$ xev -e keyboard [ignore start things; press AltGr] KeyPress event, serial 28, synthetic NO, window 0x3400001, root 0x281, subw 0x0, time 1855861, (769,284), root:(834,336), state 0x10, keycode 108 (keysym 0xffea, Alt_R), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyRelease event, serial 28, synthetic NO, window 0x3400001, root 0x281, subw 0x0, time 1855965, (769,284), root:(834,336), state 0x18, keycode 108 (keysym 0xffea, Alt_R), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False
-
-
修改地图
$ sudo vim /usr/share/X11/xkb/symbols/us +224 key
{ [ slash, question ] }; key { [ equal, plus ] }; key { [ a, A, adiaeresis, Adiaeresis ] }; key { [ o, O, odiaeresis, Odiaeresis ] }; key { [ e, E ] }; -
将右Alt设置为level3 shift
$ sudo vim /usr/share/X11/xkb/symbols/us +248 key
{ [ v, V ] }; key { [ z, Z ] }; key { [ backslash, bar ] }; include "level3(ralt_switch)" }; // Dvorak international with dead keys 有许多键可以用作ISO_Level3_Shift。 检查可用选项
$ more /usr/share/X11/xkb/rules/xorg.lst | grep lv3: lv3:switch Right Ctrl lv3:menu_switch Menu lv3:win_switch Any Win key lv3:lwin_switch Left Win lv3:rwin_switch Right Win lv3:alt_switch Any Alt key lv3:lalt_switch Left Alt lv3:ralt_switch Right Alt lv3:ralt_switch_multikey Right Alt, Shift+Right Alt key is Compose lv3:ralt_alt Right Alt key never chooses 3rd level lv3:enter_switch Enter on keypad lv3:caps_switch Caps Lock lv3:bksl_switch Backslash lv3:lsgt_switch <Less/Greater> lv3:caps_switch_latch Caps Lock chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser lv3:bksl_switch_latch Backslash chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser lv3:lsgt_switch_latch <Less/Greater> chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser
例如,如果您想使用Caps Lock作为level3 shift,则输入
include "level3(caps_switch)"
而不是include "level3(ralt_switch)"
。 -
强制重新加载布局
sudo dpkg-reconfigure xkb-data
更改为另一个布局然后返回。
-
检查点
-
validation
dvorak
的当前地图 -
validation右Alt映射。 它应该是
ISO_Level3_Shift
$ xev -e keyboard KeyPress event, serial 35, synthetic NO, window 0x3600001, root 0x281, subw 0x0, time 4755266, (154,154), root:(219,206), state 0x0, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES, XKeysymToKeycode returns keycode: 92 XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyRelease event, serial 35, synthetic NO, window 0x3600001, root 0x281, subw 0x0, time 4755435, (154,154), root:(219,206), state 0x80, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES, XKeysymToKeycode returns keycode: 92 XLookupString gives 0 bytes: XFilterEvent returns: False
-
现在,它应该工作!
单线命令
cd /; \ echo -e "--- /usr/share/X11/xkb/symbols/us\t2016-01-22 09:38:25.000000000 +0100\n+++ /usr/share/X11/xkb/symbols/us\t2016-06-17 15:43:07.656076074 +0100\n@@ -221,8 +221,8 @@\n key { [\tslash,\tquestion\t]\t};\n key { [\tequal,\tplus\t\t]\t};\n \n- key { [\ta,\tA \t\t]\t};\n- key { [\to,\tO\t\t]\t};\n+ key { [\ta,\tA, adiaeresis, Adiaeresis ]\t};\n+ key { [\to,\tO, odiaeresis, Odiaeresis ]\t};\n key { [\te,\tE\t\t]\t};\n key { [\tu,\tU\t\t]\t};\n key { [\ti,\tI\t\t]\t};\n@@ -245,6 +245,8 @@\n key { [\tz,\tZ\t\t]\t};\n \n key { [ backslash, bar ] };\n+\n+ include \"level3(ralt_switch)\"\n };\n \n // Dvorak international with dead keys\n" \ | sudo patch -p1; \ sudo dpkg-reconfigure xkb-data; \ cl=$(gsettings get org.gnome.desktop.input-sources current); \ gsettings set org.gnome.desktop.input-sources current 0; \ gsettings set org.gnome.desktop.input-sources current 1; \ gsettings set org.gnome.desktop.input-sources current "$cl"