Ubuntu 16.04의 Dvorak에서 점으로 A를 얻는 방법?


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키보드에는 Alt가 두 개만 있습니다. 이 명령은 오른쪽 키를 작성 키 ( 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감가 상각되기 때문에 이것이 변경 될 경우 독립적 인 솔루션 을 갖는 것이 정말 좋습니다 .

2 단계 키 바인딩 방식

우리는 데드락 인터내셔널과 데드 키를 사용하여 2 단계 키 바인딩 접근 만 할 수 있습니다.

  • 로 SeverusTux의 대답은 두 가지 수준의 명령입니다 AltGr- Shift- Q+ A만 작동한다 us-drovak, international with deadkeys.
  • SeverusTux. Ctrl+ Shift+ u+ e4+ Enter작동하고 당신을 제공합니다 ä. 당신은 어떻게 하나의 레벨 키 바인딩이를 매핑 할 수 있습니다 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 단계 키 바인딩 접근 방식

나는 한 수준의 명령을 원하는 등 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

키보드 레이아웃은 테스트되었지만 영어 (미국 -dvorak)

여기에 이미지 설명을 입력하십시오

최종 솔루션 [운동화]

나는 영어 (dvorak)로 점으로 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. 

버그

  1. 키보드를 다시 xserver로 다시로드 할 때의 TODO 문제 https://unix.stackexchange.com/q/290449/16920 수동 변경이 항상 작동하지는 않습니다.
  2. 문제 : Xserver는 이러한 키를 빠르게로드하지 않으며 재시작 / 로그 아웃 후에도 모든 경우에 해당하지는 않습니다.

시스템 : Ubuntu 16.04
Linux 커널 :
4.4-4.6 키보드 모델 : pc105
2 단계 키 바인딩 접근을위한 키보드 레이아웃 : 데드 키를 사용하는 미국 -dvorak 국제
1 단계 키 바인딩 접근을위한 키보드 레이아웃 : 영어 (Dvorak) = US-dvorak영어 (클래식 드보락)


1
를 누른 ctrl+shift+u다음 입력 e4하고 Enter를 누르십시오. 이것이 작동하면 간단한 키를 얻기 위해 더 시도 할 수 있습니다.
Severus Tux 2016 년

내가 전에 말한 것에 대한 답변을 썼습니다. 의심이 있으시면 의견을 남겨주세요
Severus Tux

답변:


8
  • ä를 입력하려면 유니 코드는 U00E4입니다.

  • Ä를 입력하려면 유니 코드는 U00C4입니다.

다른 문자의 유니 코드를 원하면 다음에서 얻을 수 있습니다. gucharmap

수동으로 입력하려면 ctrl+ shift+ u를 누른 다음 00e4를 누르고을 누르십시오 Enter.

그러나 작성 키를 사용하여이를 수행하는 더 좋은 방법이 있습니다.

Right alt 커맨드 라인을 사용하여 작성 키로 설정 하려면 다음을 실행하십시오.

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

suing GUI를 설정하려면 다음을 수행하십시오.

시스템 설정-> 키보드-> 입력-> 오른쪽 Alt 로 이동하여 작성 키를 활성화하십시오 . (원하는 경우 다른 키를 선택할 수 있습니다)

여기에 이미지 설명을 입력하십시오

그게 다야 !!

이제 좋아하는 텍스트 편집기로 이동하여 다음을 수행하십시오.

Right Alt"차례로 눌렀다 놓습니다 a. 이제 ä 가 표시되어야합니다 .

동일은을 위해 할 수 Ä , 보도 및 자료는 Right Alt다음에 "다음에A

참고 :Shift + '를 눌러야 할 수도 있습니다 ."

팁:

모든 유사한 바로 가기를 보려면이 파일을보십시오. /usr/share/X11/locale/en_US.UTF-8/Compose


@Masi이 파일은 모든 Compose 키 콤보 목록입니다. 추가 정보입니다.
UniversallyUniqueID

@BharadwajRaju sed가 말한 것처럼 추가 파일 인 파일을 편집하거나을 바꿀 필요가 없으므로 다른 특수 기호의 바로 가기 키를 원하면 간단히 볼 수 있습니다. 그것은 모든 그러한 지름길의 거대한 목록입니다
Severus Tux

1
@Masi 그래서 GUI를 사용하는 대신 명령 줄을 사용하여 작성 키를 설정하고 싶습니까 ??
Severus Tux 2016 년

@Masi Answer 업데이트 :-) 그렇게하기 위해 스크립트가 필요하지 않습니다. 간단한 명령만으로 트릭을 수행 할 수 있습니다. 이것이 당신이 원하는
Severus Tux

멋진 GIF를 만들기 위해 무엇을 사용 했습니까? 좋은 터치.
Bhikkhu Subhuti

7

영어 (죽은 열쇠를 가진 국제, 드보락)- dvorak-intl 잘 작동합니다!

기본 설정으로 Ä사용하여 입력 할 수 있습니다 ShiftAltGrq. 키가 선언 된 파일을 참조하십시오 /usr/share/X11/xkb/symbols/us.q

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

와 함께 level3(ralt_switch)하단에있는 것은 사용 Right Alt/ AltGr3 레벨 시프트로 그러한

  • 1 열 qq
  • 2 열 QShiftq
  • 3 열 äAltGrq
  • 4 열 ÄShiftAltGrq

심상

X11 XKB 레이아웃 레벨

  • dvorak-intl 4 레벨 만 정의하고, XKB가 지원하는 8 레벨을 모두 그리므로 일반적인 개요를 얻을 수 있습니다.
  • Shift표준 레벨 2 시프트이며 레벨 AltGr3 & 4가 필요한 대부분의 레이아웃에 대한 기본 레벨 3 시프트 입니다. 레벨 5,6,7,8을 정의하는 레이아웃은 거의 없으므로 level5 Shift 키 RCtrl를 설명에 사용했습니다.
  • <AB02>키 를 정의하는 4 줄 은 모두 동일합니다.

영어 (드보락) 의 3,4 단계 키 설정 ä및 레이아웃Ä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인쇄 ä그것은 .If는 작동하지 않았다 그것은이 설정과 같은 문제가 될 것입니다. Right Alt가 레벨 3 이동으로 작동하지 못하게하는 것이 있습니다.

      영어 (드 보크, 데드 키가있는 국제)

    • 의 현재지도 확인 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
      
  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 이동으로 Right 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
    

    예를 들어, Caps Lock을 레벨 3 이동으로 사용하려면 include "level3(caps_switch)"대신에 입력하십시오 include "level3(ralt_switch)".

  5. 레이아웃 강제 재로드

    sudo dpkg-reconfigure xkb-data
    

    다른 레이아웃으로 변경 한 후 다시 돌아가십시오.

  6. 체크 포인트

    • 의 현재지도 확인 dvorak

      영어 (드보락)

    • Right 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
의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 .
Mitch

1
키보드의 수동 변경이 항상 작동하지는 않는다는 것을 알았습니다. 로그 아웃 할 때까지 변경 사항이 유효하지 않습니다. 여기 해결책을 생각하고 unix.stackexchange.com/questions/290449/...
레우 레오폴드 헤르츠 준영

이해할 수없는 버그를 발견했습니다. 이 줄 sudo sed -i "${pos[1]}i\ include 'level3(ralt_switch)'" /usr/share/X11/xkb/symbols/us은 시작할 때 키보드를 사용할 수 없게합니다. 키보드에서 키를 입력 할 수 없습니다. 라인 249의 마지막 Dvorak 환경에서 레벨 3 만 추가합니다. 라인 249가 올바른 위치입니까?
Léo Léopold Hertz 준영

@Masi, 그렇습니다.하지만 249가 아닌 248에 있어야합니다! 그리고 당신이 ${pos[1]} 전에 정의 했는지 확인하십시오 .
user.dz 2016 년

나는 OS에서 그러한 기능이 더 안정적으로 필요하기 때문에 여기에 unix.stackexchange.com/q/346073/16920 에 대한 새로운 스레드를 열었습니다 .
Léo Léopold Hertz 준영
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.