#format wiki #language it <
> <> = Introduzione = Questa pagina descrive come gestire i tasti multimediali (es. volume, controllo riproduzione, luminosità) su Ubuntu e derivate.<
><
>Nella maggior parte dei casi, i tasti multimediali sono riconosciuti automaticamente dal sistema. Se alcuni tasti non dovessero rispondere, è possibile configurare il loro comportamento attraverso gli strumenti messi a disposizione dagli [[AmbienteGrafico/AmbientiDesktop|ambienti desktop]]. = Configurazione = == Tramite ambiente grafico == Prima di procedere con modifiche di basso livello, verificare che le azioni non siano già configurabili tramite le [[AmministrazioneSistema/CentroDiControllo|impostazioni]] dell'ambiente desktop appropriato: * [[AmbienteGrafico/Gnome|GNOME]]: Aprire '''Impostazioni''' → '''Tastiera''' → '''Scorciatoie da tastiera'''. In questa sezione è possibile visualizzare le combinazioni esistenti e crearne di nuove, associando comandi personalizzati a tasti specifici. * [[AmbienteGrafico/Kde|KDE Plasma]]: Aprire '''Impostazioni di sistema''' → '''Scorciatoie'''. Il sistema permette una gestione granulare delle scorciatoie globali e permette di creare comandi personalizzati. * [[AmbienteGrafico/Lxqt|LXQt]]: Aprire '''Preferenze''' → '''Impostazioni di LXQt''' → '''Scorciatoie globali'''. Verificare il funzionamenti dei tasti digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{ gnome-control-center keyboard }}} Sostituire `gnome-control-center` con il centro di controllo del sistema utilizzato. == Tramite terminale == === Aggiungere associazioni === È possibile aumentare il volume selezionando un comando:{{{ amixer set Master 5%+ }}} e aggiungerlo alle scorciatoie globali, premendo la combinazione tasto multimediale desiderato per registrarlo. === Accorgimenti veloci === Se non funziona: 0. Vai in una console reale e premi i tuoi tasti multimediali uno alla volta. 0. Guarda l'output in console per scoprire quale codice è stato generato, dovrebbe essere qualcosa come:{{{ atkbd.c: Unknown key pressed (translated set 2, code 0x9e on isa0060/serio0). atkbd.c: Use 'setkeycodes e01e ' to make it known.}}}dovresti trovare le stesse informazioni con:{{{ dmesg}}} 0. Utilizza setkeycodes per impostare il codice del tuo tasto come suggerito.(ma prima usa dumpkeys per vedere quali codici per i tasti (d'ora in poi chiamati "keycodes") sono liberi e possono essere quindi utilizzati). 0. Inserisci questi comandi in {{{/etc/init.d/bootmisc.sh}}} 0. Apri il terminale X:{{{ xmodmap -pke > xmodmap.conf}}}Quindi edita questo file e aggiungi le keysyms mancanti al giusto keycodes (usa xev per vedere i keycodes, leggi il file {{{/usr/lib/X11/XKeysymDB}}} per vedere quali keysyms sono disponibili). 0. Dallo stesso terminale:{{{ sudo cp xmodmap.conf /etc cd /etc/X11/gdm/PostLogin sudo cp Default.sample Default}}}dopo apri il file {{{/etc/X11/gdm/PostLogin/Default}}} con il tuo editor preferito e aggiungi queste linee:{{{ xmodmap /etc/xmodmap.conf}}} 0. Usa gnome keybindings o metacity keybindings per collegare le funzioni ai tuoi nuovi tasti configurati. == Istruzioni approfondite == ||<> ||'''Una piccola nota di fondo: Quando premi un tasto sulla tua tastiera, il kernel linux genera uno scancode per esso (se gli è stato assegnato). Questo accade al livello del kernel. X ha una (quasi) totale indipendenza nel modo di gestire i tasti: X legge la tavola dei keycode del kernel allo startup, dopodiché gestisce i keycode in modo indipendente per mezzo di una propria tavola dei keycodes (è lo stesso concetto dei keycodes del kernel, ma la tavola è differente). A questo punto ogni keycode puo' essere mappato in un ''keysym'', per esempio una stringa che rappresenta un tasto o attiva un'azione. Una volta che abbiamo reso i nostri tasti funzionanti dobbiamo "aggiornare" su cio' che abbiamo fatto sia il kernel che il server X. Sembra innaturale, e lo è, ma gli sviluppatori X hanno le loro ragioni per avere diverse impostazioni della tastiera rispetto a quelle del kernel.''' || 0. Usare '''gnome-keybinding-properties''': * Verificate che i tasti funzionino con '''gnome-keybinding-properties''', è sotto il menu' '''''Preferenze -> Scorciatoie da tastiera'''''. Se non funzionano, o se '''''gnome-keybinding-properties''''' non ha un'azione di default che richiedi quel tasto, dovresti leggere l'intero howto. 0. Assegnando i keycodes nel kernel: * Vediamo quali tasti sono stati hanno gia uno scancode/keycode del kernel e quali no. * Andiamo in una console reale digitando F1. * Ora sel premi i tuoi tasti multimediali uno alla volta, dovresti vedere un messaggio in output come questo:{{{ atkbd.c: Unknown key pressed (translated set 2, code 0x9e on isa0060/serio0). atkbd.c: Use 'setkeycodes e01e ' to make it known.}}} * Le stesse informazione possono essere reperite eseguendo:{{{ dmesg}}} * Questo è tutto ciò di cui hai bisogno, ma prima di assegnare il keycode mancante, devi sapere quali keycodes sono disponibili, per evitare conflitti. {{{ dumpkeys}}} * Il comando mostra una lista di scancodes usati. Quindi ora semplicemente scegli quelli che non hanno un keycode assegnato ( solitamente quelli che vanno da 120 a 255). * Ora sapete: * Quali tasti non hanno un keycode * Come impostare scancode/keycode per renderli conosciuti * Quali keycodes sono disponibili per essere usati * Ora è tempo di impostare questi codici, digita:{{{ setkeycodes e01e 120}}}dove e01e e' lo scancode suggerito in dmesg, e 120 e' un keycode libero che hai scelto. * Ripeti questo passaggio per tutti i tasti di cui hai bisogno. * Se vuoi che questi comandi siano eseguiti all' avvio del sistema, aggiungi i comandi che hai lanciato finora alla fine del file {{{/etc/init.d/bootmisc.sh}}} * Ora che il kernel genera gli esatti scancodes, continuiamo: 0. Assegnamo i keysyms per X * Adesso puoi rimanere in X ;) * I keysyms X sono una sorta di piccole stringhe descrittive come: XF86AudioMedia, XF86WWW etc. ma non possiamo usare nomi casuali. Una lista di keysyms X possono essere trovati nel file: {{{/usr/lib/X11/XKeysymDB}}} * Una gran quantita' di modelli di tastiere sono definite in questo file, e quindi puoi trovare il tuo modello e metterlo in {{{/etc/X11/xorg.conf}}} sotto Xkb``Model (o con gnome-keyboard-properties), ma se non ha uno scancode/keycode conosciuto per ogni tasto multimediale, non funzionera'. Quindi dovremmo impostarli manualmente. * Apri un terminale e digita: {{{ xev}}} * Premi un tasto multimediale. Se sei fortunato esiste gia un keysym assegnatogli, quindi l' output di xev per questo tasto sara' qualcosa come:{{{ KeyRelease event, serial 28, synthetic NO, window 0x3200001, root 0xb7, subw 0x0, time 137010761, (693,138), root:(705,256), state 0x10, keycode 136 (keysym 0x1008ff27, XF86Forward), same_screen YES, XLookupString gives 0 bytes:}}} * La terza fila e' la piu' interessante: ci dice se hai un keycode per il tasto (136) cosi come un keysym (XF86Forward). Se hai un keysym e' tutto a posto, puoi usare quella stringa per rappresentare il tuo tasto e usare gnome keybindings o metacity keybindings per correlare un azione ad esso. (Guarda sotto). * Ma probabilmente, troverai che quel tasto non ha un keysym assegnato ad esso, ad esempio:{{{ KeyRelease event, serial 28, synthetic NO, window 0x3200001, root 0xb7, subw 0x0, time 137355697, (401,146), root:(413,264), state 0x10, keycode 136 (keysym 0x0, NoSymbol), same_screen YES, XLookupString gives 0 bytes:}}} * In questo caso dovrai assegnare il tuo keysym al keycode (136) (Non e' collegato al keycode del kernel, ma non importa) Questo e' possibile con xmodmap. * Primo, crea un file con le tue impostazioni correnti della tastiera: in un terminale:{{{ xmodmap -pke > xmodmap.conf}}} * Dopo devi aggiungere i keysyms mancanti a questo file; usa xev per vedere quale keycode usare, guarda in {{{/usr/lib/X11/XKeysymDB}}} per trovare il nome del keysym, apri xmodmap.conf e riempilo con i keysym mancanti usando un nome sensato (per esempio se hai un tasto con una calcolatrice stampata su di esso, usa XF86Calculator come keysym). * Ripeti questo passaggio per tutti i tasti multimediali. * Quando hai finito, puoi applicare i cambiamenti con:{{{ xmodmap xmodmap.conf}}} * Ora puoi caricare il nuovo xmodmap.conf all'avvio di X. Ho trovato che il modo migliore e' di mettere il comando nel Post``Login script di gdm. (ovviamente se usi gdm ;)) Digita: {{{ sudo cp xmodmap.conf /etc/xmodmap.conf cd /etc/X11/gdm/PostLogin sudo cp Default.sample Default }}} * Ora apri il file Default con il tuo editor preferito e alla fine di esso aggiungi questa linea:{{{ xmodmap /etc/xmodmap.conf}}} * In questo modo dovresti avere tutti gli scancodes/keycodes/keysyms assegnati nel sistema e all'avvio di X. * Ora puoi fare qualcosa utile con essi, come: 0. Usare gnome keybindings o metacity keybindings per assegnare comandi ai tasti * Primo , prova ad assegnare i tasti con gnome-keybinding-property: e' veloce ed ha alcune azioni utili di default, eseguilo da terminale o dal menu. * L'utility si spiega da sola, ma probabilmente troverai alcune azioni non funzionanti (come sleep per esempio), o che eseguono azioni errate, o che non ci sono azioni assegnate ai tasti. * Puoi indirizzare questi problemi, utilizzando metacity, per collegare tasti a comandi che sono molto piu' flessibili, Apri un terminale ed esegui:{{{ gconf-editor}}}o lancialo dal menu sotto Applications --> System Tools --> Configuration Editor. * Vai sotto apps/metacity in gconf-editor. Vedrai 2 file (tra le altre): {{{global_keybindings}}} e {{{keybinding_commands}}} * Se clicchi su {{{global_keybindings}}}, sul pannello di pannello di destra troverai alcune stringhe per comandi, come: {{{run_command_1}}}, {{{run_command_2}}}, etc. Queste devono essere riempite con il keysym che ti occore per il tuo tasto(come: XF86Play, XF86MyComputer, etc. usa xev per vederlo). * Dopo puoi assegnare assegnare il comando corrispondente (o lo script) nell'altra fila, sotto{{{keybinding_commands.}}} Hai molti comandi a tua disposizione, come:{{{totem --fullscreen}}} o {{{rhythmbox --next}}} etc. * Usa l'aiuto da linea di comando per scoprire quali opzioni sono disponibili, (per esempio totem --help o rhythmbox --help etc.) Per Firefox guarda qui: http://www.mozilla.org/unix/remote.html 0. Indicazione aggiuntive * Le azioni che vuoi eseguire dopo aver premuto un tasto sono limitate solo dalla tua fantasia: bash prevede una quantita' enorme di script e di opzioni per programmi, virtualmente infinite. * Per esempio un'applicazione che puoi trovare utile e' xmacro (sido apt-get install xmacro): fa eseguire una macro del mouse o della tastiera con un comando. Lo uso per eseguire i miei Indietro e Avanti per quanto riguarda i miei tasti multimediali con Destra e Sinistra rispettivamente: in questo modo posso controllare avanti e indietro che non sono previsto in linea di comando. (funziona con tutte le applicazioni che prendonoDestra e Sinistra come tasti "utili"). Questo e' il mio script xmacro: {{{ case "$1" in forward) sleep .3 echo -e "KeyStrPress Alt_L \n KeyStrPress Right \n KeyStrRelease Right \n KeyStrRelease Alt_L" | xmacroplay :0 ;; backward) sleep .3 echo "KeyStrPress Alt_L \n KeyStrPress Left \n KeyStrRelease Left \n KeyStrRelease Alt_L" | xmacroplay :0 ;; esac exit 0}}} * Un'altra indicazione e' che se hai un tasto per lo sleep, e non funziona con gnome-keybinding-properties, puoi usarlo almeno per spegnere il tuo monitor. Ti basta assegnarli questo comando: {{{ xset dpms force off}}} con metacity. * Se hai una "rotella" per lo scroll sulla tua tastiera, puoi assegnargli sempre un codice!Assegnali il keysym "Return", che lo fara' funzionare come un tasto di return. = Risoluzione problemi = == Tasti non riconosciuti == Se un tasto non produce alcuna reazione nel sistema, è possibile verificarne il riconoscimento tramite `xev` su sessioni X11: 0. [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://x11-utils|x11-utils]]. 0. [[AmbienteGrafico/AvviareProgrammi#Avviare_programmi_da_terminale|Avviare]] '''xev''', digitando nel [[AmministrazioneSistema/Terminale|terminale]] il comando:{{{ xev }}} 0. Premere il tasto multimediale interessato e osservare l'output nel terminale. Se il tasto viene rilevato ma non ha un'azione associata, occorre definire una nuova scorciatoia nelle impostazioni dell'ambiente desktop utilizzando il codice rilevato. == Non rilevata la pressione di un tasto == Qualora il sistema non rilevi affatto la pressione del tasto (nessun output in `xev`), è possibile ricorrere, parte del pacchetto [[apt://kbd|kbd]], digitando nel [[AmministrazioneSistema/Terminale|terminale]] il comando:{{{ setkeycodes }}} {{{#!wiki important "setkeycodes" agisce a livello di kernel ed è una procedura di "ultima istanza" per tasti che non vengono affatto rilevati.<
>Le modifiche non sono persistenti al riavvio e, nei moderni sistemi (Wayland/libinput), potrebbero non integrarsi correttamente con la gestione dinamica dei dispositivi.<
>Per rendere la modifica permanente è necessario creare una regola udev dedicata o inserire il comando in uno script di avvio. }}} Per utilizzare questa funzione: 0. Consultare i messaggi del kernel digitando nel [[AmministrazioneSistema/Terminale|terminale]] il comando:{{{ dmesg }}} o i log in una console reale '''Ctrl''' + '''Alt''' + '''F1''' durante la pressione del tasto per individuare lo scancode. 0. Utilizzare il comando:{{{ dumpkeys }}} per verificare quali keycode sono liberi. 0. Assegnare il codice con:{{{ sudo setkeycodes }}} == Problemi con la luminosità (Packard Bell e altri) == Su alcuni modelli di portatili, i tasti funzione per la luminosità potrebbero non comunicare correttamente con il kernel. In questi casi è possibile tentare una modifica ai parametri di avvio, modificando il file di configurazione di GRUB: 0. Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] il file di configurazione `/etc/default/grub` di '''GRUB''', digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{ sudo nano /etc/default/grub }}} 0. Cercare la riga `GRUB_CMDLINE_LINUX_DEFAULT` e aggiungere `acpi_osi=Linux` all'interno delle virgolette:{{{ GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=Linux" }}} Salvare il file e aggiornare il bootloader:{{{ sudo update-grub }}} 0. Riavviare il computer. = Ulteriori risorse = * [[Hardware/Periferiche/Tastiere|Pagina di configurazione della tastiera]] * [[Ubuntu:MultimediaKeys|Documento originale]] ---- CategoryDaRevisionare CategoryHardware ## PrioritàBassa ## RevisioneStilistica