Ist es möglich, ein benutzerdefiniertes Tastaturlayout ohne Sudo-Zugriff zu verwenden? Wenn das so ist, wie?

7

Ich verwende seit einiger Zeit eine benutzerdefinierte Tastatur. Verwenden Sie dazu die Anweisungen im Help.Ubuntu-Tutorial. Benutzerdefinierte Tastaturlayoutdefinitionen , die in dieser Frage näher erläutert werden . Ich habe diese Tastatur sehr gemocht, aber ich habe vor kurzem angefangen, eine Maschine zu verwenden, auf der ich nicht wirklich Sudo-Zugriff habe (oder besser gesagt, ich habe ein gewisses Maß an Zugriff, aber es ist wirklich umständlich).

Also: Ist es möglich, eine gleichwertige Installation durchzuführen, die nur für meinen Benutzer bestimmt ist und die nicht auf Administratorrechten beruht? Genauer gesagt, wenn es darum geht, bestimmte Pakete zu installieren, bin ich damit einverstanden, aber wenn es erforderlich ist, Dateien außerhalb meines Home-Verzeichnisses zu ersetzen, wird es viel schwieriger.

EP
quelle

Antworten:

7

Eine schnelle richtige Antwort, da ich noch keinen Kommentar abgeben kann:

Wie bereits in Ihrer anderen Frage erwähnt , erstellen Sie Ihre Layoutdateien in Ihrem Ausgangsverzeichnis (oder an einem anderen Ort, an dem Sie Schreibberechtigungen haben) als lokale Version des XKB-Datenbankverzeichnisbaums:

$HOME/.config/xkb/
...
├── rules
│   ├── evdev-local
...
├── symbols
│   ├── my-fun-capslock-options
│   ├── my-US-Dvorak-layout
│   └── my-ZWERTY-layout
...

... und verwenden Sie dann die -IOption mit setxkbmap:

setxkbmap -I $HOME/.config/xkb \
  -rules evdev-local           \
  -layout my-ZWERTY-layout     \
  -option myZWERTY:option1,compose:menu,fun:caps_is_insert
quixotic
quelle
In der Antwort auf die andere Frage listen Sie die .lstDatei explizit auf, aber nicht hier - nach einigen Tests scheint dies evdev-local.lsttatsächlich notwendig zu sein setxkbmap(obwohl dies evdev-local.xmlanscheinend nicht der Fall ist) -, daher würde ich vorschlagen, sie hier zum Baum hinzuzufügen. für den Fall, dass jemand Ihre oben genannte andere Antwort nicht liest. Übrigens ist die andere Antwort wirklich erstaunlich umfassend!
Aplaice
3

Der zugrunde liegende Befehl zum Einstellen der Tastatur lautet: setxkbmapWenn Sie sich nun die Handbuchseiten ansehen, wird anscheinend die Tastaturspezifikation gelesen /usr/share/X11/xkb/, sodass Sie Ihr geändertes Layout dort schreiben müssen. Systemverzeichnis, Root-Zugriff erforderlich.

ABER

Ich habe es versucht:

strace setxkbmap nonexistant |& grep open

um zu sehen, was der Befehl tut, und um zu schauen: (Teilausgabe)

open("/run/user/1153/gdm/Xauthority", O_RDONLY) = 4
open("./rules/evdev-C.lst", O_RDONLY)   = -1 ENOENT (No such file or directory)
open("./rules/evdev.lst", O_RDONLY)     = -1 ENOENT (No such file or directory)
open("/usr/share/X11/xkb/rules/evdev-C.lst", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/X11/xkb/rules/evdev.lst", O_RDONLY) = 4

Es scheint also, dass setxkbmapauch im aktuellen Verzeichnis nach der Dateispezifikation gesucht wird. Vielleicht (ich habe keine Zeit zum Testen), wenn Sie beispielsweise die gesamte relevante Verzeichnisstruktur von /usr/share/X11/xkb/in kopieren $HOME/myxkbund dann versuchen, den Befehl auszugeben

setxbmap -model pc105 -layout myshiny -variant myvariant 

oder was auch immer es funktionieren mag .

PD: Die Arch-Hilfeseiten sind wie immer nützlich . Ein netter Befehl, mit dem Sie sehen können, woraus die von Ihnen verwendete Tastatur besteht, ist folgender:

[romano:~] % 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:     es,us
variant:    standard_tlde,
options:    caps:none,compose:caps,terminate:ctrl_alt_bksp
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+es(standard_tlde)+us:2+inet(evdev)+capslock(none)+compose(caps)+terminate(ctrl_alt_bksp)
geometry:   pc(pc105)
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+es(standard_tlde)+us:2+inet(evdev)+capslock(none)+compose(caps)+terminate(ctrl_alt_bksp)"   };
    xkb_geometry  { include "pc(pc105)" };
};
Rmano
quelle
2

Die Antworten von quixotic sind vollständig, funktional und wahrscheinlich das, was Sie normalerweise tun sollten. Wenn Sie die rulesDateien jedoch aus irgendeinem Grund nicht kopieren und ändern möchten , finden Sie hier eine alternative Lösung.

In diesem Fall laden wir eine "xkb-Keymap-Datei" direkt mit xkbcomp.

Erstellen Sie zunächst das gewünschte benutzerdefinierte Layout oder die gewünschte Option, z. B. in einer Datei ~/.config/xkb/symbols/option_filemit Inhalten:

partial hidden modifier_keys
xkb_symbols "new_option_1" {
    [...]
};

Als nächstes sichern Sie Ihr aktuelles Layout mit setxkbmap -print > ~/.config/xkb/keymap/my_layout. (Beachten Sie, dass dies nicht unbedingt in derselben Verzeichnishierarchie wie die symbolsobige Datei (oder alle anderen von Ihnen hinzugefügten Dateien) sein muss, da wir den Pfad dazu explizit angeben.) Dies ist eine Form von ::

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us+inet(evdev)" };
    xkb_geometry  { include "pc(pc105)" };
};

Um Ihre neue Option zu aktivieren, bearbeiten Sie das gedumpte Layout, indem Sie +option_file(new_option_1)es zur xkb_symbolsZeile hinzufügen. Unser Beispiel wäre also wie folgt geworden:

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us+inet(evdev)+option_file(new_option_1)"   };
    xkb_geometry  { include "pc(pc105)" };
};

Laden Sie abschließend die neue Keymap mit : xkbcomp -I$HOME/.config/xkb ~/.config/xkb/keymap/my_layout $DISPLAY.

Verweise:

http://madduck.net/docs/extending-xkb/

https://www.vinc17.net/unix/xkb.en.html

aplaice
quelle
2

Ich kann diese Anleitung empfehlen , wenn Sie nur ein vorhandenes Tastaturlayout erweitern möchten.

Jarno
quelle