我想在 Macbook Air 2013-mid 的 Ubuntu 16.04 键盘中输入带点( Ä
/ ä
) 的A作为一级键绑定,输出为setxkbmap -query
rules: evdev
model: pc105
layout: us,us
variant: dvorak,
options: ctrl:nocaps
Run Code Online (Sandbox Code Playgroud)
默认情况下,AltGr键盘中没有,只有两个 Alt。此命令使您的右 alt 成为组合键 ( 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']/")"
Run Code Online (Sandbox Code Playgroud)
xmodmap
如果要改变它,因为它会折旧,所以拥有独立的解决方案真的很棒。
我们只能使用带有死键的 Dvorak International 进行两级键绑定方法。
us-drovak, international with deadkeys
.ä
. 您如何将其映射到单级键绑定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 ]
Run Code Online (Sandbox Code Playgroud)
这说明 xserver 更新不快。您必须将键盘更改为其他东西,然后再返回以进行更改。
我想要一级命令AltGr- Aforä
和AltGr- Shift- AforÄ
英语(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
Run Code Online (Sandbox Code Playgroud)
您可以获得所有可能的开关,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
Run Code Online (Sandbox Code Playgroud)
我的键盘布局经过测试,但主要是英语(美国-dvorak)
我用英语(dvorak)的点设置 A 由AltGr- a。合并 中的更改/usr/share/X11/xkb/symbols/us
;现在是 German-Dvorak,因为它也适用于斯堪的纳维亚语言(来自这里)
// 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 <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
key <AE01> { [ 1, exclam ] };
key <AE02> { [ 2, at ] };
key <AE03> { [ 3, numbersign ] };
key <AE04> { [ 4, dollar ] };
key <AE05> { [ 5, percent ] };
key <AE06> { [ 6, asciicircum, dead_circumflex, dead_circumflex ] };
key <AE07> { [ 7, ampersand ] };
key <AE08> { [ 8, asterisk ] };
key <AE09> { [ 9, parenleft, dead_grave] };
key <AE10> { [ 0, parenright ] };
key <AE11> { [ bracketleft, braceleft ] };
key <AE12> { [ bracketright, braceright, dead_tilde] };
key <AD01> { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] };
key <AD02> { [ comma, less, dead_cedilla, dead_caron ] };
key <AD03> { [ period, greater, dead_abovedot, periodcentered ] };
key <AD04> { [ p, P ] };
key <AD05> { [ y, Y ] };
key <AD06> { [ f, F ] };
key <AD07> { [ g, G ] };
key <AD08> { [ c, C ] };
key <AD09> { [ r, R ] };
key <AD10> { [ l, L ] };
key <AD11> { [ slash, question ] };
key <AD12> { [ equal, plus ] };
key <AC01> {[ a, A, adiaeresis, Adiaeresis ] };
key <AC02> {[ o, O, odiaeresis, Odiaeresis ] };
key <AC03> { [ e, E, ediaeresis, Ediaeresis ] };
key <AC04> { [ u, U, udiaeresis, Udiaeresis ] };
key <AC05> { [ i, I ] };
key <AC06> { [ d, D ] };
key <AC07> { [ h, H ] };
key <AC08> { [ t, T ] };
key <AC09> { [ n, N ] };
key <AC10> { [ s, S, ssharp ] };
key <AC11> { [ minus, underscore ] };
key <AB01> { [ semicolon, colon, dead_ogonek, dead_doubleacute ] };
key <AB02> { [ q, Q ] };
key <AB03> { [ j, J ] };
key <AB04> { [ k, K ] };
key <AB05> { [ x, X ] };
key <AB06> { [ b, B ] };
key <AB07> { [ m, M ] };
key <AB08> { [ w, W ] };
key <AB09> { [ v, V ] };
key <AB10> { [ z, Z ] };
key <BKSL> { [ backslash, bar ] };
include "level3(ralt_switch)"
};
Run Code Online (Sandbox Code Playgroud)
或者使用仍然有问题的脚本
# 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.
Run Code Online (Sandbox Code Playgroud)
错误
系统:Ubuntu 16.04
Linux 内核:4.4 - 4.6
键盘型号:pc105
两级键绑定方法的键盘布局:US-dvorak International with deadkeys
一级键绑定方法的键盘布局:English (Dvorak) = US-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']"
Run Code Online (Sandbox Code Playgroud)
如果你想设置它起诉 GUI :
通过转到System Settings --> Keyboard --> Typing --> Right Alt启用撰写键。(如果您愿意,您可以选择不同的键)
现在转到您最喜欢的文本编辑器并执行以下操作:
按下并松开Right Alt,"然后是a。现在你应该看到ä。
可以对Ä执行相同的操作,按下并松开Right Alt,"然后是A
注意:您可能需要按Shift+'才能获得"
提示:
如果您希望查看所有类似的快捷方式,请查看此文件:/usr/share/X11/locale/en_US.UTF-8/Compose
dvorak-intl
工作正常!我可以Ä
使用ShiftAltGrq默认设置键入。请参阅文件/usr/share/X11/xkb/symbols/us
,其中q
关键的声明
key <AB02> { [ q, Q, adiaeresis, Adiaeresis ] };
Run Code Online (Sandbox Code Playgroud)
并level3(ralt_switch)
在底部使用Right Alt/AltGr作为第 3 级移位,使得
q
←qQ
←Shiftqä
←AltGrqÄ
←ShiftAltGrq 可视化
dvorak-intl
只定义了 4 个级别,我绘制了 XKB 支持的所有 8 个级别,以便您可以大致了解。<AB02>
key 的4 行都是等效的。ä
&Ä
在a
英语 (Dvorak) 的第 3 和第 4 级键 -dvorak
布局加上ö
与Ö
在o
键。(它没有出现在屏幕截图中,因为它是在屏幕截图之后添加的)
同样dvorak-intl
,我们可以对 进行相同的设置dvorak
。
清除以前的修改
sudo apt-get install --reinstall xkb-data
gsettings set org.gnome.desktop.input-sources xkb-options "[]"
Run Code Online (Sandbox Code Playgroud)检查站
尝试英语(Dvorak,国际死键)- dvorak-intl
AltGrq打印ä
。如果它不起作用,那么此设置将出现相同的问题。有一些东西阻止了 Right Alt 作为 level3 shift 工作。
验证当前地图 dvorak
验证 Right 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
Run Code Online (Sandbox Code Playgroud)修改a
地图
$ sudo vim /usr/share/X11/xkb/symbols/us +224
key <AD11> { [ slash, question ] };
key <AD12> { [ equal, plus ] };
key <AC01> { [ a, A, adiaeresis, Adiaeresis ] };
key <AC02> { [ o, O, odiaeresis, Odiaeresis ] };
key <AC03> { [ e, E ] };
Run Code Online (Sandbox Code Playgroud)将右 Alt 设置为 level3 shift
$ sudo vim /usr/share/X11/xkb/symbols/us +248
key <AB09> { [ v, V ] };
key <AB10> { [ z, Z ] };
key <BKSL> { [ backslash, bar ] };
include "level3(ralt_switch)"
};
// Dvorak international with dead keys
Run Code Online (Sandbox Code Playgroud)
有许多键可以用作 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
Run Code Online (Sandbox Code Playgroud)
例如,如果您喜欢使用 Caps Lock 作为 level3 转换,请输入include "level3(caps_switch)"
而不是include "level3(ralt_switch)"
。
强制重新加载布局
sudo dpkg-reconfigure xkb-data
Run Code Online (Sandbox Code Playgroud)
更改为另一种布局,然后返回。
检查点
验证当前地图 dvorak
验证右 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
Run Code Online (Sandbox Code Playgroud)现在,它应该可以工作了!
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 <AD11> { [\tslash,\tquestion\t]\t};\n key <AD12> { [\tequal,\tplus\t\t]\t};\n \n- key <AC01> { [\t a,\tA \t\t]\t};\n- key <AC02> { [\t o,\tO\t\t]\t};\n+ key <AC01> { [\t a,\tA, adiaeresis, Adiaeresis ]\t};\n+ key <AC02> { [\t o,\tO, odiaeresis, Odiaeresis ]\t};\n key <AC03> { [\t e,\tE\t\t]\t};\n key <AC04> { [\t u,\tU\t\t]\t};\n key <AC05> { [\t i,\tI\t\t]\t};\n@@ -245,6 +245,8 @@\n key <AB10> { [\t z,\tZ\t\t]\t};\n \n key <BKSL> { [ 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"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1451 次 |
最近记录: |