Festlegen der Tastaturlayoutoptionen mit setxkbmap in gnome / unity

28

Ubuntu 13.10 1 (und möglicherweise der vorgelagerte Gnom) hat einen sehr ärgerlichen Fehler verursacht : Durch Drücken der Tastenkombination für den Tastaturlayoutschalter wird der Fokus auf ein Systemfenster und dann wieder auf das Fenster verschoben, in dem die Tastenkombination gedrückt wurde. Einige Anwendungen müssen bestimmte Aktionen ausführen, um den Fokus zu ändern, z. B. Twitter (im Browser) schließt das Eingabefeld für Antworttext, wenn der Fokus verloren geht usw. Daher ist Ubuntus systemeigener Tastaturumschalter für mich nicht geeignet, bis er behoben ist.

X hat einen eingebauten Umschaltmechanismus, und es ist viel besser, zusätzlich dazu, dass es keine Fokusumschaltung beinhaltet, schaltet es sofort um (der Gnome-Umschalter bleibt manchmal auch zurück).

Wie kann ich xkbmap-Optionen einrichten, damit die Einstellungen nach dem Neustart erhalten bleiben und von Gnome nicht zurückgesetzt werden?

Was ich versucht habe:

Führen Sie zunächst nur setxkbmap aus:

setxkbmap -layout "us,ru"
setxkbmap -option "grp:caps_toggle,grp_led:scroll,compose:ralt"

Aber es funktioniert nur:

  1. Für die aktuelle Sitzung
  2. Bis Gnome es überschreibt (z. B. wenn Sie etwas in gconfs org.gnome.desktop.input-sourcesAuslöser-Reset berühren ).

Zweitens: Hinzufügen von xkb-Optionen zur Xorg-Konfiguration:

Eine andere Möglichkeit ist, Folgendes zu xorg config hinzuzufügen:

Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "us,ru"
        Option "XkbModel" "pc105"
        Option "XkbVariant" "pc105"
        Option "XkbOptions" "grp:rctrl_toggle,grp_led:scroll"
EndSection

Xorg versteht, dass beim Start:

[    33.791] (**) Option "xkb_rules" "evdev"
[    33.791] (**) Option "xkb_model" "pc105"
[    33.791] (**) Option "xkb_layout" "us,ru"
[    33.791] (**) Option "xkb_variant" "pc105"
[    33.791] (**) Option "xkb_options" "grp:rctrl_toggle,grp_led:scroll"

Die Konfiguration wird jedoch später zurückgesetzt, wahrscheinlich von Gnome.

Drittens gconf

Bildbeschreibung hier eingeben

Ich habe xkb-optionsund sourcessetze ein org.gnome.desktop.input-sources, aber Gnome setzt xkb immer noch auf ein einzelnes englisches Layout:

$ setxkbmap -print -verbose 10
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      pc105
layout:     us
options:    grp_led:scroll
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete+ledscroll(group_lock)
symbols:    pc+us+inet(evdev)
geometry:   pc(pc105)
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete+ledscroll(group_lock)"    };
    xkb_symbols   { include "pc+us+inet(evdev)" };
    xkb_geometry  { include "pc(pc105)" };
};

Viertens eine weitere Option in gconf

Bildbeschreibung hier eingeben

Einstellung org.gnome.settings-daemon.peripherals.keyboardfunktioniert bei mir auch nicht. Nichts verändert sich.

Update 1 : Es gibt Diskussionen , die das Entfernen empfehlen /usr/lib/gnome-settings-daemon-3.0/libkeyboard.so. Zumindest werden dadurch einige Zurücksetzungen von xkbmap (dh nach dem Sperren des Bildschirms) behoben.

1 Ich verwende 14.04, aber das Problem, den Fokus zu verlieren, ist immer noch nicht behoben. ( Unbestätigter Bericht in vorgelagertem Gnome )

kolen
quelle
Haben Sie versucht, das Layout in gnome richtig einzustellen und dann die beiden setxkbmapBefehle zu Ihrem hinzuzufügen ~/.profile? Auf diese Weise werden sie jedes Mal ausgeführt, wenn Sie sich anmelden. Da in Gnome dieselben Einstellungen vorgenommen wurden, sollte sich beim Zurücksetzen nichts ändern.
Terdon
1
@terdon wird auch nach dem Sperren des Bildschirms zurückgesetzt. Und es wird auf den Status "Nur uns, kein Schalter" und nicht auf die in definierten Einstellungen zurückgesetzt org.gnome.desktop.input-sources.
kolen
Seltsam. Bist du sicher, dass du Gnome und nicht Unity benutzt? Haben Sie versucht, die Einstellungen über die normale Benutzeroberfläche zu ändern dconf-editor?
Terdon
@terdon ja, es ist eine Einheit, aber es verwendet gnome's verlorenes Zeug, wie gnome-settings-daemon, das möglicherweise keymap zurücksetzt.
kolen
Haben Sie also versucht, die richtigen Einstellungen über die Unity-GUI vorzunehmen?
Terdon

Antworten:

19

Um zu verhindern, dass der Gnom die Tastatureinstellungen in X zurücksetzt, benutze ich diesen Befehl:

gsettings set org.gnome.settings-daemon.plugins.keyboard active false

Das funktioniert bei mir.

Iasha102
quelle
4
Ich habe das auf Ubuntu 14.04 ausprobiert und es macht nichts. Haben Sie eine Erklärung, wie das funktionieren soll?
Nickolai Leschov
2
Funktioniert für mich in 14.04
ndemou 22.10.15
2
Funktioniert für mich in 16.04, nachdem ich alles andere ausprobiert habe.
Leonardo Castro
1
Die einzige Methode, die ich gefunden habe, funktionierte am 17.04.
Cnly
1
Denken Sie daran, dass Ubuntu bereits seit einiger Zeit einen Unity-Settings-Daemon erstellt hat, aber jetzt, da sie wieder zu Gnome zurückkehren, funktioniert dies möglicherweise weiter.
dragon788
6

Ich bin genauso verrückt geworden wie Sie, aber mit Ubuntu 14.04 (LTS), Xubuntu, xfce 4.12 und xkbd (von xfce goodies). Strg + Leertaste zum Ändern des Tastaturlayouts hat funktioniert, Alt + Umschalttaste nicht (nur Modifizierertasten).

Endlich geschafft, Dinge zum Laufen zu bringen

1. Run ibus-setup (Keyboard Input Methods application).
2. Goto Advanced tab.
3. Check 'Use system keyboard layout'.
4. Click 'Close'

5. Run xfce4-keyboard-settings (Keyboard application).
6. Goto Layout tab.
7. Uncheck 'Use system defaults'
8. Select 'Keyboard model' (typically 'Generic 105-key (Intl) PC' will do)
9. Set 'Change layout option' to your required switching keys combination (typically Alt+Shift will do).
10. Add languages to 'Keyboard layout'.
11. Click 'Close'.
12. Restart the computer

Sie sind fertig! Verwenden Sie Alt + Umschalt, um das Tastaturlayout zu ändern.

Oron Port
quelle
1
Warum empfehlen Sie, xfce4-keyboard-settingsin der Frage nach Hilfe für Gnome / Unity zu fragen?
Nickolai Leschov
2

Ich habe gerade diesen Artikel über Screenlocking gelesen , der in Zusammenhang stehen könnte. Dem Artikel zufolge hat Screenlocking die beabsichtigte Folge, Eingabegeräte zu blockieren und Gebietsschemata zu manipulieren. Scheint, als hättest du ein paar Möglichkeiten:

  1. Hören Sie auf, den Bildschirm zu sperren, wahrscheinlich auch den Begrüßungsbildschirm, der eine ähnliche Funktion hat
  2. Verwenden Sie verschiedene Energieverwaltungstools
  3. Ibus nicht mehr zum Im-Switching verwenden (Vielleicht FCITX?)
  4. Erstellen Sie wie hier beschrieben einen Hook für Ereignisse zum Entsperren des Bildschirms .

Es gibt eine interessante Diskussion über dieses und verwandte Ereignisse, die auf der Ubuntu-Dev-Mailingliste zu finden sind: https://lists.ubuntu.com/archives/ubuntu-devel/2013-November/037768.html

Falke
quelle
1

Problemumgehung durch Benutzer wof in Ubuntu Bug-Tracker für Ubuntu 14.10 mit gxkb :

https://bugs.launchpad.net/gnome-settings-daemon/+bug/1244090/comments/39

Diese Problemumgehung funktionierte für Ubuntu 14.10:

  • In Einstellungen-> Texteingabe alle Eingabequellen entfernen, nur Englisch lassen
  • installiere gxkb (layout switcher): sudo apt-get installiere gxkb
  • gxkb über gnome-tweak-tool zu startanwendungen hinzufügen
  • gxkb hotkeys in ~ / .config / gxkb einrichten (Standard ist alt_shift, aber in 14.10 funktioniert es nicht. ctrl_shift funktioniert ok)

ps neue version von gxkb hat appindicator für ubuntu. Kann über ppa: zen-root / gxkb-stable installiert werden

kolen
quelle
(Noch nicht ausprobiert)
kolen
E: Das Paket gxkb
e18r 29.12.15 konnte
0

Führen Sie zunächst nur setxkbmap aus:

setxkbmap -layout "us, ru" setxkbmap -option "grp: caps_toggle, grp_led: scroll, compose: ralt"

Aber es funktioniert nur:

For current session
Until Gnome will overwrite it (for example touching something in gconf's org.gnome.desktop.input-sources triggers reset).

Soweit Gnome es "zurücksetzt", weiß ich nicht. Ich weiß, wie Sie jeden Neustart beibehalten können, da ich genau das Gleiche für meine Logitech-Maus tun musste. Es hat mehrere Tasten, die ich auf eine bestimmte Weise neu zuordnen wollte und die ich beim Neustart einstellen musste.

Also, was Sie dafür tun, ist eine Textdatei zu erstellen. Dann in diesem Textdateityp:

#!/bin/bash

und direkt darunter geben Sie Ihre Befehle ein. Als Beispiel sieht meine Maus so aus:

#!/bin/bash
xinput set-button-map "Logitech USB-PS/2 Optical Mouse" 1 2 3 4 5 8 9 6 7 10 11 12 13 14 15 16

Als nächstes würden Sie den Namen wie gewünscht speichern und ihn an einen Ort wie Ihr Home-Verzeichnis verschieben. es muss dort "für immer" bleiben.

Öffnen Sie dann einfach Ihre Startanwendungen und fügen Sie die Datei zu Ihrem Start hinzu. Dann müssen Sie sich keine Gedanken mehr darüber machen, dass sie nur für die Sitzung gültig ist. Es ist in Ordnung, Ihren Computer neu zu starten, da Ihre Einstellungen über die soeben hinzugefügte Datei wiederhergestellt werden.

David
quelle