Introduzione

Questa guida spiega come attivare i tasti multimediali su Linux.

Accorgimenti veloci

Verificare il funzionamenti dei tasti con gnome-keybinding-properties presente in Preferenze -> Scorciatoie da tastiera.

Se non funziona:

  1. Vai in una console reale e premi i tuoi tasti multimediali uno alla volta.
  2. 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 <keycode>' to make it known.

    dovresti trovare le stesse informazioni con:

            dmesg
  3. 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).
  4. Inserisci questi comandi in /etc/init.d/bootmisc.sh

  5. 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).

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

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

  2. 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 <ctrl><alt>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 <keycode>' 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:
  3. 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 XkbModel (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 PostLogin 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:
  4. 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, sottokeybinding_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

  5. 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 <Alt>Destra e <Alt>Sinistra rispettivamente: in questo modo posso controllare avanti e indietro che non sono previsto in linea di comando. (funziona con tutte le applicazioni che prendono<Alt>Destra e <Alt>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

Packard Bell

Su alcuni portatili Packard Bell i tasti rapidi per regolare la luminosità non funzionano. Per attivarli bisogna:

  1. Aprire un terminale (Applicazioni - Accessori - Terminale)

  2. Digitare  sudo gedit /etc/default/grub  Si aprirà una finestra di gedit .

  3. Cercare la riga GRUB_CMDLINE_LINUX= e sostituirla con GRUB_CMDLINE_LINUX="acpi_osi=Linux" .

  4. Salvare e chiudere gedit.
  5. Digitare nel terminale  sudo update-grub 

  6. Riavviare il computer.

Ulteriori risorse


CategoryDaRevisionare CategoryHardware

Hardware/Periferiche/TastiMultimediali (l'ultima modifica è del 07/04/2016 16.29.37, fatta da andreas-xavier)