如何在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的答案是两级命令,如AltGrShiftQ + A ,它仅适用于us-drovak, international with deadkeys
  • SeverusTux。 Ctrl + Shift + u + e4 + Enter工作并给你ä 。 如何将此映射到一级键绑定Alta

我在那里看到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没有快速更新。 您必须将键盘更改为其他内容并再次返回,以进行更改。

一级键绑定方法

我想要一个级别的命令作为AltGrA用于äAltGrShiftA用于Ä英语(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]

我用AltGra设置英文点(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. 

错误

  1. 将键盘重新加载回xserver的TODO问题https://unix.stackexchange.com/q/290449/16920手动更改不起作用。
  2. 并发症: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列qq
  • 第2列QShift q
  • 第3栏äAltGr q
  • 第4列ÄShift AltGr q

可视化

X11 XKB布局级别

  • 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进行相同的设置。

  1. 清除以前的修改

     sudo apt-get install --reinstall xkb-data gsettings set org.gnome.desktop.input-sources xkb-options "[]" 
  2. 检查站

    • 试试英语(德沃夏克,国际用死键) – dvorak-intl

      AltGr q打印ä 。如果它不起作用,那么这个设置也会出现同样的问题。 有一些东西阻止Right Alt作为level3转换。

      英语(德沃夏克,国际用死键)

    • validationdvorak的当前地图

      英语(德沃夏克)

    • 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 
  3. 修改地图

     $ 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 ] }; 
  4. 将右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)"

  5. 强制重新加载布局

     sudo dpkg-reconfigure xkb-data 

    更改为另一个布局然后返回。

  6. 检查点

    • validationdvorak的当前地图

      英语(德沃夏克)

    • 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" 
Interesting Posts