Tôi muốn nhập A bằng dấu chấm ( Ä
/ ä
) làm liên kết phím một cấp trong bàn phím Macbook Air 2013-giữa của Ubuntu 16.04, đầu ra củasetxkbmap -query
rules: evdev
model: pc105
layout: us,us
variant: dvorak,
options: ctrl:nocaps
Theo mặc định, không có AltGrtrong bàn phím, chỉ có hai Alts. Lệnh này làm cho alt bên phải của bạn là phím soạn thảo ( AltGr) nhưng vẫn duy trì cấu hình bàn phím tùy chỉnh của riêng bạn, v.v. có Capslock là CTRL caps:ctrl_modifier
, xem tại đây
gsettings set org.gnome.desktop.input-sources xkb-options \
"$(gsettings get org.gnome.desktop.input-sources xkb-options \
| sed "s/]/, 'compose:ralt']/")"
Sẽ thật tuyệt vời khi có xmodmap
giải pháp độc lập nếu điều này sẽ được thay đổi bởi vì nó sẽ bị khấu hao.
Cách tiếp cận keybinding hai cấp
Chúng tôi chỉ có thể thực hiện phương pháp liên kết phím hai cấp với Dvorak International với các phím tắt.
- Câu trả lời của SeverusTux là lệnh hai cấp là AltGr- Shift- Q+ A, chỉ hoạt động trong
us-drovak, international with deadkeys
. - SeverusTux. Ctrl+ Shift+ u+ e4+ Enterhoạt động và cung cấp cho bạn
ä
. Làm thế nào bạn có thể ánh xạ điều này đến một liên kết phím một cấp Alt- a?
Tôi làm ở nơi bạn thấy rằng GUI tạo ra sự thay đổi ở nơi khác. Tôi thực sự muốn biết nơi
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 ]
Điều này cho thấy xserver không cập nhật nhanh. Bạn phải thay đổi bàn phím của bạn sang một thứ khác và quay lại, để thay đổi.
Phương pháp liên kết khóa một cấp
Tôi muốn chỉ huy một cấp như AltGr- Acho ä
và AltGr- Shift- Acho Ä
trong English (US-Dvorak). Tôi làm xev -e keyboard
và nhấnAltGr
[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
Bạn có thể nhận được tất cả các công tắc có thể bằng more /usr/share/X11/xkb/rules/xorg.lst | grep lv3
nhưng chúng tôi chỉ quan tâm đếnlv3: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
Bố trí bàn phím của tôi đã được kiểm tra nhưng tiếng Anh chính (US-dvorak)
Giải pháp cuối cùng [Sneetsher]
Tôi đặt A bằng dấu chấm bằng tiếng Anh (dvorak) bởi AltGr- a. Hợp nhất các thay đổi trong /usr/share/X11/xkb/symbols/us
; bây giờ là tiếng Đức-Dvorak vì nó cũng hoạt động rất tốt cho các ngôn ngữ Scandinavia (từ đây )
// 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)"
};
Hoặc sử dụng tập lệnh vẫn còn lỗi
# 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.
Lỗi
- Sự cố TODO với việc tải lại bàn phím trở lại xserver https://unix.stackexchange.com/q/290449/16920 Thay đổi thủ công không hoạt động luôn.
- Biến chứng: Xserver không tải các khóa đó nhanh và thậm chí không trong mọi trường hợp sau khi khởi động lại / đăng xuất.
Hệ thống: Ubuntu 16.04
Linux kernel: 4.4 - 4.6
Kiểu
bàn phím
: pc105
Bố cục bàn phím cho cách tiếp cận gõ phím hai cấp: US-dvorak quốc tế với deadkey
Bố trí bàn phím cho cách tiếp cận gõ phím một cấp: Tiếng Anh (Dvorak) = US-dvorak , nhưng cũng bằng tiếng Anh (Cổ điển Dvorak)
ctrl+shift+u
rồi gõe4
và nhấn enter. Nếu điều này hoạt động thì bạn có thể thử thêm để có được một chìa khóa đơn giản cho điều đó.