Как получить A с точками в Dvorak Ubuntu 16.04?
Я хочу набрать A с точками (Ä
/ ä
) как одноуровневое связывание клавиш в клавиатуре Ubuntu 16.04 Macbook Air 2013-mid, вывод setxkbmap -query
rules: evdev
model: pc105
layout: us,us
variant: dvorak,
options: ctrl:nocaps
По умолчанию в клавиатуре нет AltGr, только два Alts. Эта команда делает ваше право alt клавишей compose (AltGr), но поддерживает ваши собственные настройки клавиатуры и т. Д. С Capslock как CTRL 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 с помощью deadkeys.
- Ответ SeverusTux - это двухуровневая команда AltGr - Shift - Q + A, которая работает только в
us-drovak, international with deadkeys
, - SeverusTux. Ctrl + Shift + U + E4 + Enter работает и дает вам
ä
, Как вы можете сопоставить это с одноуровневым сочетанием клавиш Alt - a?
Я делаю, где вы видите, что графический интерфейс вносит изменения в другом месте. Я очень хочу знать где
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 для Ä
на английском (США-дворак). я делаю 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
но нас интересует только 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
Мои раскладки клавиатуры проверены, но основной английский (США-дворак)
Окончательное решение [Sneetsher]
Я установил A с точками на английском языке (дворак) от AltGr - 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 <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)"
};
Или используйте скрипт, который все еще глючит
# 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.
ошибки
- Проблема TODO с перезагрузкой клавиатуры обратно на xserver https://unix.stackexchange.com/q/290449/16920 Изменение вручную не всегда работает.
- Осложнения: Xserver не загружает эти ключи быстро и даже не во всех случаях после перезапуска / выхода из системы.
Системы: Ubuntu 16.04
Ядро Linux: 4.4 - 4.6
Модель клавиатуры: pc105
Раскладка клавиатуры для двухуровневого связывания клавиш: US-dvorak international с мертвыми клавишами
Раскладка клавиатуры для одноуровневого связывания клавиш: английский (Дворак) = американский-дворак, но также английский (Классический Дворак)
2 ответа
Чтобы набрать ä, Unicode это U00E4
Для ввода Ä, Unicode - это U00C4
Если вы хотите, чтобы Unicodes других персонажей, вы можете получить их от gucharmap
Чтобы ввести его вручную, нажмите Ctrl + Shift + U, а затем 00e4 и нажмите Enter, это должно ввести ä
Но есть лучший способ сделать это с помощью Compose Keys.
Если вы хотите установить свой Right alt как ключ compose с помощью командной строки: просто выполните это:
gsettings set org.gnome.desktop.input-sources xkb-options "['compose:ralt']"
Если вы хотите установить его в графическом интерфейсе:
Включите клавишу "Создать", перейдя в " Системные настройки" -> "Клавиатура" -> "Ввод" -> "Справа" (вы можете выбрать другой ключ, если хотите)
Это все!!
Теперь перейдите в ваш любимый текстовый редактор и сделайте это:
Нажмите и отпустите правую клавишу "Alt", а затем "и затем. Теперь вы должны увидеть ä.
То же самое можно сделать для Ä, нажмите и отпустите кнопку " Alt Right ", затем " A " и " A".
ПРИМЕЧАНИЕ: вам может понадобиться нажать Shift + ', чтобы получить "
СОВЕТ:
Если вы хотите увидеть все похожие ярлыки, просмотрите этот файл: /usr/share/X11/locale/en_US.UTF-8/Compose
Английский (Дворак, международный с мертвыми ключами) - dvorak-intl
работает отлично!
я могу печатать Ä
используя Shift AltGr q с настройками по умолчанию. Посмотреть файл /usr/share/X11/xkb/symbols/us
где q
ключ объявлен как
key <AB02> { [ q, Q, adiaeresis, Adiaeresis ] };
и с level3(ralt_switch)
внизу, чтобы использовать Right Alt / AltGr в качестве сдвига 3-го уровня, так что
- 1-я колонна
q
← д - 2-я колонна
Q
← Shift q - 3-я колонна
ä
← AltGr q - 4-я колонна
Ä
← Shift AltGr q
Визуализация
dvorak-intl
определяет только 4 уровня, я рисую все 8 уровней, поскольку XKB поддерживает, так что вы можете получить общий обзор.- Сдвиг - это стандартное смещение уровня 2, AltGr - это сдвиг уровня 3 по умолчанию для большинства макетов, для которых требуется уровень 3 и 4. Только несколько макетов определяют уровни 5,6,7,8, и поэтому клавиша Shift уровня 5, я использовал RCtrl только для объяснения.
- Все эти 4 строки, которые определяют
<AB02>
Ключ эквивалентен.
настройка ä
& Ä
на 3-м и 4-м уровне a
ключ на английском (дворак) - dvorak
расположение
плюс ö
& Ö
в o
ключ. (Он не отображается на снимке экрана, так как он был добавлен после снимка экрана)
Такой же как 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 работать как сдвиг уровня 3.Проверьте текущую карту
dvorak
Проверьте правильность Alt mapping, оно должно быть
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
изменять
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 ] };
Установка Right Alt как сдвиг level3
$ 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
Есть много ключей, которые можно использовать как 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 в качестве сдвига уровня 3, введите
include "level3(caps_switch)"
вместоinclude "level3(ralt_switch)"
,Принудительная перезагрузка макетов
sudo dpkg-reconfigure xkb-data
Перейдите на другой макет, затем вернитесь
Контрольно-пропускной пункт
Проверьте текущую карту
dvorak
Проверьте правильность Alt mapping. Так должно быть
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 <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"