Ricerca tra la vecchia roba

La tastiera in Linux

Posted: Gennaio 15th, 2008 | Author: | Filed under: Guide | 3 Comments »

Una parte fondamentale della interazione con il nostro amato sistema operativo e proprio la tastiera che ci permette di inserire i comandi, i dati e quant’altro necessitiamo per la interazione con esso.

La tastiera informatica è presa in prestito dal suo antecedente tecnologico: la macchina da scrivere; la tastiera identifica i propri tasti attraverso lettere maiuscole, numeri e segni disposti secondo varie tipologie (QUERTY, QUERTZ, AZERTY, QZERTY, Dvorak) condizionate ovviamente anche dalla nazionalità per cui sono progettate.

A livello kernel la tastiera rientra nelle periferiche di input (sono intelligente neh!) il cui codice potete trovare nella directory drivers/input/; nel caso delle comuni tastiere PS/2 all’avvio potete notare un messaggio del kernel simile a questo

$ dmesg | grep key
input: AT Translated Set 2 keyboard as /class/input/input0

notando che la tastiera non è un modulo (di solito), ma è compilato internamente nel kernel; il codice vero e proprio è nel file atkbd.c per questo tipo di tastiere, mentre per altri modelli bisogna cercare nella sezione corrispondente (per esempio la tastiera usb dovrebbe essere governata dal codice in drivers/hid/usbhid/usbkbd.c)

Quando premiamo un tasto sulla nostra beneamata tastiera, essa genera i cosidetti scancode che identificano univocamente il tasto con cui si sta interagendo; questo scancode viene catturato dal kernel che lo trasla ai programmi che ne fanno richiesta secondo tre possibili modalità

  1. Raw: non effettua nessuna operazione.
  2. Keycode: aggiunge un flag identificante l’evento (premuto o rilasciato) oltre che un identificativo logico del tasto premuto.
  3. Keysym: attraverso una keymap vengono convertiti in sequenze di escape da utilizzare con terminali VT100.

Per avere gli scancode si può usare showkey -s da console (per console intendo proprio il terminale del kernel [quello che si raggiunge tramite Ctrl+Alt+F1 per capirci]).

 

—Presto qualcos’altro— 

Adesso parliamo degli effetti speciali su X11: esiste un programmino per vedere i tasti premuti con i loro bei codici keysym e keycode (oltre che vari eventi X11 ma tralasciateli) e si chiama xev; comunque per impostare la table di conversione fra keycodes e keysym si usa xmodmap(1).

Xmodmap

Per impostare il modo in cui i vari tasti vengono interpretati dal server grafico X viene in aiuto xmodmap(1): esso viene usato per editare/mostrare la mappa dei modificatori di tastiera e la keymap table, usate dalle applicazioni (i client) per convertire i keycodes in keysym. Il modo in cui più keysym possono essere associati ad uno stesso keycode dipende essenzialmente dai tasti modificatori premuti; banalmente sappiamo che le maiuscole di una lettera si ottengono premendo assieme al tasto corrispondente alla stessa lettera minuscola, uno degli Shift che è per l’appunto un modificatore. Di questi modificatori ne esistono un paio

  • Shift: Quelli con la freccia all’insù
  • Ctrl: quelli con scritto Ctrl
  • Alt: Quelli con scritto Alt
  • Alt_gr: Quello con scritto "Alt Gr"
  • Super: Tasto con la bandiera di winzoz
  • Menu: tasto con un menù disegnato over.

Una delle possibilità di questi tasti modificatori è di impostarne uno da usare con la modalità compose: un tasto permette di combinare due tasti in successione per crearne un terzo; per capirci


Tasto compose + ` + e = è

Ma come fare per impostare questa modalità compose? basta impostare un tasto scelto da noi al keysym Multi_key tramite


xmodmap -e "keysym Super_L = Multi_key"

ovviamente si può sostituire Super_L con il tasto che meglio si preferisce. Per una lista completa dei caratteri ottenibili usare

zcat /usr/share/keymaps/include/compose.latin.inc.gz | less

Per salvare le impostazioni inserire il tutto in ~/.Xmodmap. Per chi usa gnome è possibile usare la configurazione apposita System -> Preferences -> Keyboard e poi da lì scegliere il tab Layouts, selezionare il layout usato e cliccare su Layout Options. Alla voce Compose key scegliere quello desiderato.

Unicode

 Esiste anche la possibilità di inserire direttamente caratteri unicode, nei programmi basati su GTK+, tramite la sequenza Ctrl-Shift-u seguito dal codice unicode del carattere: per capirci, per visualizzare il carattere™ la sequenza è 2122.In Vim è possibile usare la sequenza Ctrl-Shift-v-u seguita sempre dal codice.

Linkografia


3 Comments on “La tastiera in Linux”

  1. 1 soviet nichelino said at 10:57 am on Gennaio 16th, 2008:

    Il Soviet di Nichelino apprezza il lavoro del compagno packz per il sostegno al S.O. ufficiale di ogni società rivoluzionaria. Per questo motivo ti conferiamo il Premio Durruti dell’Informatica della Resistenza.

  2. 2 durrutix said at 6:03 pm on Febbraio 6th, 2008:

    il problema è che con winzozz basta fare alt+0250 per scrivere
    ” ú ” . non esiste qualcosa di simile per il pinguino?
    grazie amore.

  3. 3 packz said at 10:05 am on Febbraio 7th, 2008:

    Qui basta fare

    Compose + ‘ + u = ù

    ed impostare tutti i tasti che vuoi (e mi sembra più facile che ricordare il codice ASCIISC del carattere…)