Ubuntu 16.04のDvorakでドットを使用する方法


8

Macbook Air 2013-midのUbuntu 16.04のキーボードで1レベルのキーバインドとしてドット(Ä/ ä)を付けてAを入力したいのですが、setxkbmap -query

rules:      evdev
model:      pc105
layout:     us,us
variant:    dvorak,
options:    ctrl:nocaps

デフォルトではAltGr、キーボードにはありません。2つのAltのみです。このコマンドは、あなたの右Alt Composeキーを(作るAltGr)が、などによってCTRLとCapsLockキーを持つ独自のカスタムキーボード構成を維持し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減価償却が行われるため、これが変更される場合は、独立したソリューションがあると非常に便利です。

2レベルのキーバインドアプローチ

デッドキーを使用したDvorak Internationalでは、2レベルのキーバインドアプローチしか実行できません。

  • SeverusTuxの答えは、2レベルのコマンドであるAltGr- Shift- Q+ A、だけで動作していますus-drovak, international with deadkeys
  • SeverusTux。Ctrl+ Shift+ u+ e4+ Enter動作しますä。どのように1レベルのキーバインドにこれをマッピングすることができますか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が高速に更新されないことを示しています。変更するには、キーボードを別のキーボードに変更して、もう一度元に戻す必要があります。

1レベルのキーバインドアプローチ

私はと1レベルのコマンドをしたい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

テスト済みのキーボードレイアウトですが、メインの英語(US-dvorak)

ここに画像の説明を入力してください

最終的な解決策[スニーチャー]

私は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 <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. 

バグ

  1. xserver https://unix.stackexchange.com/q/290449/16920へのキーボードのリロードに関するTODOの問題手動の変更が常に機能するとは限りません。
  2. 複雑化:Xserverは、これらのキーを高速にロードせず、再起動/ログアウト後にすべてのケースでさえロードしません。

システム:Ubuntu 16.04
Linuxカーネル:
4.4-4.6キーボードモデル:pc105
2レベルのキーバインドアプローチのキーボードレイアウト:US-dvorak international with deadkeys
1レベルのキーバインドアプローチのキーボードレイアウト:英語(Dvorak) = US-dvorak英語(クラシックドヴォルザーク)


1
を押してctrl+shift+uから入力しe4、Enterキーを押します。これが機能する場合は、そのための簡単なキーを取得するためにさらに試すことができます。
Severus Tux 2016年

以前に言ったことに対する回答を書きました。疑問がある場合はコメントを残してください
Severus Tux

回答:


8
  • äと入力する場合、UnicodeはU00E4です。

  • Äを入力するには、UnicodeはU00C4です

他の文字のユニコードが必要な場合は、それらを取得できます gucharmap

手動で入力するには、ctrl+ shift+ uを押してから00e4を押してを押しますEnter。これはä と入力する必要があります

しかし、Compose Keysを使用してこれを行うより良い方法があります。

Right alt コマンドラインを使用してコンポーズキーとして設定したい場合これを実行してください:

gsettings set org.gnome.desktop.input-sources xkb-options "['compose:ralt']"

GUIを使用して設定する場合:

[システム設定]-> [キーボード]-> [タイピング]-> [右Alt]に移動して、コンポーズキーを有効にします。(必要に応じて、別のキーを選択できます)

ここに画像の説明を入力してください

それで全部です !!

次に、お気に入りのテキストエディタに移動して、これを実行します。

プレスリリースとはRight Alt続く"続きますa。これでäが表示されます。

同じことをÄ、プレスアンドリリース、Right Alt続いて"続けて行うことができますA

注:取得するにはShift+ 'を押す必要がある場合があります"

ヒント:

同様のショートカットをすべて表示したい場合は、次のファイルを表示します。/usr/share/X11/locale/en_US.UTF-8/Compose


@Masiそのファイルは、すべてのComposeキーコンボのリストにすぎません。ただ余分な情報。
UniversallyUniqueID

@Masiあなたはそのファイルを編集したり何かで置き換える必要はありません。@ BharadwajRajuが言ったようにsed、それは追加情報です。他の特別な記号のショートカットキーが必要な場合は、単にそれを表示できます。これは、このようなショートカットの膨大なリストです
Severus Tux

1
@Masiなので、GUIを使用する代わりにコマンドラインを使用して構成キーを設定したいだけですか?
Severus Tux 2016年

@Masi Answerを更新しました:-)そのためのスクリプトは必要ありません。単純なコマンドでうまくいきます。これがあなたの望んだものであることを願っています
セウェルス・タックス

その素晴らしいgifを作るために何を使いましたか?いい感じです。
Bhikkhu Subhuti

7

英語(ドヴォルザーク、デッドキー付きインターナショナル)- dvorak-intl 正常に動作します!

デフォルトの設定でÄ使用ShiftAltGrqして入力できます。ファイルを参照してくださいキーとして宣言を/usr/share/X11/xkb/symbols/usq

key <AB02> { [ q, Q, adiaeresis, Adiaeresis ] };

とを有するlevel3(ralt_switch)底部での使用にRight Alt/ AltGrように第3のレベルシフトとして

  • 1列目qq
  • 2列目QShiftq
  • 3列目äAltGrq
  • 4列目ÄShiftAltGrq

可視化

X11 XKBレイアウトレベル

  • dvorak-intl 4つのレベルのみを定義しています。XKBがサポートする8つのレベルすべてを描画して、一般的な概要を理解できるようにします。
  • Shiftは標準のレベル2シフトでAltGrあり、レベル3と4を必要とするほとんどのレイアウトのデフォルトのレベル3シフトです。レベル5、6、7、8を定義しているレイアウトはほとんどないため、レベル5のシフトキーは、説明のためRCtrlだけに使用しました。
  • <AB02>キーを定義するこれらの4行はすべて同等です。

英語のキーの3番目と4番目のレベルの設定äと(Dvorak)- レイアウトÄadvorak

プラスöÖアットoキー。(スクリーンショットの後に追加されたため、スクリーンショットには表示されません)

と同じようにdvorak-intl、に対して同じ設定を行うことができますdvorak

  1. 以前の変更をクリア

    sudo apt-get install --reinstall xkb-data
    gsettings set org.gnome.desktop.input-sources xkb-options "[]"
    
  2. チェックポイント

    • 英語を試してください(Dvorak、デッドキーを使用したインターナショナル)- dvorak-intl

      AltGrq印刷しますä。それが機能しない場合は、この設定で同じ問題が発生します。右Altがレベル3シフトとして機能しない原因があります。

      英語(Dvorak、インターナショナル、デッドキーあり)

    • 現在のマップを確認 dvorak

      英語(ドヴォルザーク)

    • 正しい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. 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               ]       };
    
  4. レベル3シフトとして右Altを設定する

    $ 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      &lt;Less/Greater&gt;
      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 &lt;Less/Greater&gt; chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser
    

    たとえば、レベル3シフトとしてCaps Lockを使用する場合は、include "level3(caps_switch)"ではなくと入力しますinclude "level3(ralt_switch)"

  5. レイアウトを強制的に再読み込み

    sudo dpkg-reconfigure xkb-data
    

    別のレイアウトに変更してから元に戻します。

  6. チェックポイント

    • 現在のマップを確認 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
      

今、それはうまくいくはずです!


ワンライナーコマンド

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"

2
コメントは詳細な議論のためのものではありません。この会話はチャットに移動しました
ミッチ

1
キーボードの手動変更が常に機能するとは限らないことがわかりました。ログアウトするまで、変更は有効になりません。私はここで解決策を考えていますunix.stackexchange.com/questions/290449/...
レオ・レオポルド・ヘルツ준 영

理解できないバグを見つけました。この行sudo sed -i "${pos[1]}i\ include 'level3(ralt_switch)'" /usr/share/X11/xkb/symbols/usにより、起動時にキーボードが使用できなくなります。キーボードでキーを入力することはできません。行249の最後のDvorak環境にlevel3を追加するだけです。行249は正しい位置ですか?
レオ・レオポルド・ヘルツ준 영

@Masi、うん、それは249ではなく248になるはずです!${pos[1]} 以前に定義したことを確認してください。
user.dz

OSでこのような機能をより安定的に必要とするため、ここでunix.stackexchange.com/q/346073/16920のケースについて新しいスレッドを開きました。
レオ・レオポルド・ヘルツ준 영
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.