Vraag Hoe krijg ik A met punten in Dvorak of Ubuntu 16.04?


Ik wil A typen met stippen (Ä / ä) als één-niveau toetsingang in Ubuntu 16.04's toetsenbord van Macbook Air 2013-mid, output van setxkbmap -query

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

Standaard is er geen AltGr in het toetsenbord, slechts twee Alts. Deze opdracht maakt uw juiste alt de componissleutel (AltGr) maar onderhoudt uw eigen aangepaste toetsenbordconfiguraties, enz. met Capslock als CTRL door caps:ctrl_modifier, zien hier

gsettings set org.gnome.desktop.input-sources xkb-options \
    "$(gsettings get org.gnome.desktop.input-sources xkb-options \ 
    | sed "s/]/, 'compose:ralt']/")"

Het zou geweldig zijn om te hebben xmodmap onafhankelijke oplossing als dit wordt gewijzigd omdat het wordt afgeschreven.

Twee-niveau keybinding-aanpak

We kunnen de sleutelbindende aanpak op twee niveaus alleen met deadkeys gebruiken bij Dvorak International.

  • Het antwoord van SeverusTux is op twee niveaus AltGr-Verschuiving-Q + EEN, die alleen in werkt us-drovak, international with deadkeys.
  • SeverusTux. Ctrl+Verschuiving+u +e 4 + invoeren werkt en geeft jou ä. Hoe kun je dit koppelen aan een keybinding op één niveau? alt-een?

Ik doe waar je ziet dat de GUI de verandering elders aanbrengt. Ik wil echt weten waar

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 ]

Dit laat zien dat de xserver niet snel wordt bijgewerkt. Je moet je toetsenbord veranderen naar iets anders en weer terug, voor de verandering.

One-level Keybinding Approach

Ik wil een opdracht op één niveau AltGr-EEN voor ä en AltGr-Verschuiving-EEN voor Ä in het Engels (VS-dvorak). Ik doe xev -e keyboard  en druk op 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

Je kunt alle mogelijke switches krijgen door more /usr/share/X11/xkb/rules/xorg.lst | grep lv3 maar we zijn alleen geïnteresseerd in 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

Mijn toetsenbordindelingen getest maar het belangrijkste Engels (VS-dvorak)

enter image description here

Uiteindelijke oplossing [Sneetsher]

Ik zet A met stippen in het Engels (dvorak) van AltGr-een. Voeg de wijzigingen samen/usr/share/X11/xkb/symbols/us; nu Duits-Dvorak omdat het ook heel goed werkt voor de Scandinavische talen (uit hier)

// 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)"
};

Of gebruik het script dat echter nog steeds buggy is

# 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. 

bugs

  1. TE DOEN probleem met het herladen van het toetsenbord terug naar xserver https://unix.stackexchange.com/q/290449/16920 De handmatige wijziging werkt niet altijd.
  2. Complicaties: Xserver laadt deze toetsen niet snel en zelfs niet in alle gevallen na opnieuw opstarten / uitloggen.

Systemen: Ubuntu 16.04
Linux kernel: 4.4 - 4.6
Toetsenbordmodel: pc105
Toetsenbordindeling voor key-approach op twee niveaus: US-dvorak international met deadkeys
Toetsenbordindeling voor key-binding op één niveau: Engels (Dvorak) = US-Dvorak, maar ook Engels (Classic Dvorak)


8
2017-07-15 10:32


oorsprong


druk op ctrl+shift+u typ dan e4 en druk op enter. Als dit werkt, kunt u verder proberen om een ​​eenvoudige sleutel daarvoor te krijgen. - Severus Tux
Ik heb een antwoord geschreven voor wat ik eerder heb gezegd, laat alsjeblieft opmerkingen achter als je twijfels hebt - Severus Tux


antwoorden:


  • Om ä te typen, is unicode U00E4

  • Als u Ä wilt typen, is unicode U00C4

Als je de unicodes van andere personages wilt, kun je die krijgen gucharmap

Om handmatig in te voeren, drukt u op ctrl+verschuiving+u en gevolgd door 00e4 en druk op invoeren , dit zou moeten typen ä

Maar er is een betere manier om dit te doen Compose Keys.

Als u uw wilt instellen  Oké  als de compositiesleutel via de opdrachtregel: voer dit gewoon uit:

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

Als je het wilt instellen voor GUI:

Schakel samenstellen sleutel in door naar te gaan Systeeminstellingen -> Toetsenbord -> Typen -> Rechts Alt. (je kunt desgewenst een andere sleutel kiezen)

enter image description here

Dat is alles !!

Ga nu naar je favoriete teksteditor en doe dit:

indrukken en loslaten Rechts Alt gevolgd door " gevolgd door een. nu zou je het moeten zien een .

Hetzelfde kan worden gedaan voor EEN , Indrukken en loslaten Rechts Alt gevolgd door " gevolgd door EEN

NOTITIE : Mogelijk moet u op drukken Verschuiving+' krijgen "

TIP:

Als u alle vergelijkbare snelkoppelingen wilt zien, bekijkt u dit bestand: /usr/share/X11/locale/en_US.UTF-8/Compose


8
2018-06-07 14:46



@Masi Dat bestand is slechts een lijst van alle combinaties van samengestelde toetsen. Alleen extra informatie. - UniversallyUniqueID
@Masi je hoeft dat bestand niet aan te passen of iets te vervangen met sed, dat is extra info zoals @BharadwajRaju zei, je kunt het eenvoudig bekijken als je de sneltoets wilt voor een ander speciaal symbool. Dat is een enorme lijst van al dergelijke snelkoppelingen - Severus Tux
@Masi, dus u wilt gewoon de sleutel instellen met behulp van de opdrachtregel in plaats van de GUI te gebruiken ?? - Severus Tux
@Masi Antwoord geüpdatet :-) U hebt hiervoor geen script nodig. alleen een eenvoudige opdracht zal de slag maken. hoop dat dit is wat je wilde - Severus Tux
Wat heb je gebruikt om dat geweldige gif te maken? Leuke touch. - Bhikkhu Subhuti


Engels (Dvorak, internationaal met dode sleutels) - dvorak-intl  werkt prima!

ik kan typen Ä gebruik makend van VerschuivingAltGrq met standaardinstelling. Zie bestand /usr/share/X11/xkb/symbols/us waar de q sleutel aangegeven als

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

en met level3(ralt_switch) onderaan om te gebruiken Rechts Alt/AltGr als een niveauverschuiving op het derde niveau

  • 1e kolom q ← q
  • 2e kolom Q ← Verschuivingq
  • 3e kolom ä ← AltGrq
  • 4e kolom Ä ← VerschuivingAltGrq 

visualisatie

X11 XKB layout levels

  • dvorak-intl definieert slechts 4 niveaus, ik teken de alle 8 niveaus zoals XKB ondersteunt, zodat je algemeen overzicht kunt krijgen.
  • Verschuiving is een standaard level2-shift, AltGr is de standaard niveau3-verschuiving voor de meeste lay-outs die level3 & 4 nodig hebben. Slechts enkele lay-outs definiëren niveaus5, 6, 7, 8 en dus de shift-toets niveau5, die ik heb gebruikt RCtrl alleen voor uitleg.
  • Al die 4 regels die definiëren <AB02> sleutel zijn equivalent.

omgeving ä & Ä op het 3e en 4e niveau van a toets op Engels (Dvorak) - dvorak lay-out

Plus ö & Ö opo sleutel. (Het verschijnt niet in screen-shot, het is toegevoegd na screen-shot)

Hetzelfde als dvorak-intl, we kunnen dezelfde setup maken voor dvorak.

  1. Eerdere aanpassingen wissen

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

    • Probeer het Engels (Dvorak, internationaal met dode toetsen) - dvorak-intl

      AltGrq prints äAls het niet werkte, is het hetzelfde probleem met deze installatie. Er is iets dat verhindert dat Right Alt werkt als level3-shift.

      English (Dvorak, international with dead keys)

    • Controleer de huidige kaart van dvorak

      English (Dvorak)

    • Controleer de juiste Alt-toewijzing, dit zou het moeten zijn 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. Wijzigen a kaart

    $ 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. Rechtse Alt instellen als niveau 3-verschuiving

    $ 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
    

    Er zijn veel sleutels die kunnen worden gebruikt als ISO_Level3_Shift. Controleer de beschikbare opties

    $ 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
    

    Als u bijvoorbeeld Caps Lock wilt gebruiken als niveau3-verschuiving, voert u dit in include "level3(caps_switch)" in plaats van include "level3(ralt_switch)".

  5. Forceer herladen van lay-outs

    sudo dpkg-reconfigure xkb-data
    

    Ga naar een andere lay-out en vervolgens terug.

  6. Controleer punt

    • Controleer de huidige kaart van dvorak

      English (Dvorak)

    • Controleer de juiste Alt-toewijzing. Het zou moeten zijn 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
      

Nu zou het moeten werken!


One-liner commando

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"

6
2018-06-07 14:00



Opmerkingen zijn niet voor uitgebreide discussie; dit gesprek is geweest verplaatst naar chat. - Mitch♦
Ik ben erachter gekomen dat de handmatige wijziging van het toetsenbord niet altijd werkt. De wijziging is niet geldig totdat u uitlogt. Ik denk hier een oplossing unix.stackexchange.com/questions/290449/... - Léo Léopold Hertz 준영
Ik heb een bug gevonden die ik niet begrijp. Deze lijn sudo sed -i "${pos[1]}i\ include 'level3(ralt_switch)'" /usr/share/X11/xkb/symbols/us maakt het toetsenbord onbruikbaar bij het opstarten. U kunt geen enkele toets typen op het toetsenbord. Het voegt gewoon niveau 3 toe aan het einde van de Dvorak-omgeving op regel 249. Staat lijn 249 op de juiste positie? - Léo Léopold Hertz 준영
@Masi, yep maar het zou in 248 niet 249 moeten zijn! en dat heb je zeker ${pos[1]}  eerder gedefinieerd. - user.dz
Ik heb hier een nieuwe thread over de zaak geopend unix.stackexchange.com/q/346073/16920 omdat ik dergelijke functies in het OS stabieler nodig heb. - Léo Léopold Hertz 준영