È ansible utilizzare un layout di tastiera personalizzato senza accesso sudo? Se é cosi, come?

Ho usato una tastiera personalizzata per un po ‘, usando le istruzioni dettagliate nel tutorial Help.Ubuntu Custom layout layout di tastiera e ulteriormente spiegato in questa domanda . Mi sono appassionato a questa tastiera, ma recentemente ho iniziato a utilizzare una macchina su cui non ho davvero accesso sudo (o meglio, ho una certa quantità di accesso, ma è davvero imbarazzante).

Quindi: è ansible fare un’installazione equivalente che è solo per il mio utente e che non si basa su privilegi amministrativi? Più nello specifico, se si tratta di installare pacchetti specifici, mi va bene, ma se è necessario sostituire i file al di fuori della mia home directory diventa molto più difficile.

Una risposta rapida e corretta poiché non posso ancora commentare:

Come ho menzionato sulla tua altra domanda , dovresti creare i file di layout nella tua directory home (o da qualche altra parte in cui hai permessi di scrittura) come versione locale dell’albero della directory del database XKB:

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

… e quindi utilizzare l’opzione -I con setxkbmap :

 setxkbmap -I $HOME/.config/xkb \ -rules evdev-local \ -layout my-ZWERTY-layout \ -option myZWERTY:option1,compose:menu,fun:caps_is_insert 

Il comando sottostante per l’impostazione della tastiera è setxkbmap — ora, guardando le sue pagine di manuale, sembra che leggerà le specifiche della tastiera da /usr/share/X11/xkb/ , quindi è necessario scrivere il layout modificato lì – – directory di sistema, accesso root necessario.

MA

Ho provato questo:

 strace setxkbmap nonexistant |& grep open 

per vedere cosa sta facendo il comando, e guarda: (output parziale)

 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 

quindi sembra che setxkbmap stia cercando anche nella directory corrente per le specifiche del file. Quindi forse (non ho tempo per testare) se copi tutte le strutture di directory rilevanti da /usr/share/X11/xkb/ in, ad esempio $HOME/myxkb e poi provi a emettere il comando

 setxbmap -model pc105 -layout myshiny -variant myvariant 

o qualunque cosa possa funzionare.

PD: le pagine di aiuto dell’arco sono utili, come sempre ; un bel comando che puoi usare per vedere da cosa è composta la tastiera che stai utilizzando:

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

Posso consigliare questa guida se si desidera estendere un layout di tastiera esistente.

Le risposte di donchisciottesche sono complete, funzionali e probabilmente dovresti fare normalmente. Tuttavia, se non si desidera copiare e modificare i file delle rules , per qualsiasi motivo, ecco una soluzione alternativa.

In questo caso, verrà caricato un “file xkbcomp xkb”, utilizzando direttamente xkbcomp .

Innanzitutto, crea qualsiasi layout o opzione personalizzata che desideri, ad esempio nel file ~/.config/xkb/symbols/option_file con i contenuti:

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

Quindi, scaricare il layout corrente, usando setxkbmap -print > ~/.config/xkb/keymap/my_layout . (Nota che questo, necessariamente, non deve essere nella stessa gerarchia di directory del file di symbols sopra (o di qualsiasi altro file che aggiungi), poiché specificeremo esplicitamente il percorso ad esso.) Questo sarà qualcosa della forma di:

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

Per abilitare la tua nuova opzione, modifica il layout scaricato aggiungendo +option_file(new_option_1) alla riga xkb_symbols , quindi il nostro esempio sarebbe diventato:

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

Infine, carica la nuova keymap con: xkbcomp -I$HOME/.config/xkb ~/.config/xkb/keymap/my_layout $DISPLAY .

Riferimenti:

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

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