domenica 12 aprile 2009

Italian Keyboard Layout Coder Friendly

This post is about Italian Keyboard and concern to italian speaking people, so I'm writing in italian.

Bene questo è il mio primo post in italiano, spero di non commettere strafalcioni come in inglese.
Dunque oramai da almeno due anni utilizzo un mio personale layout di tastiera.
Questo perché ero stanco di fare acrobazie con la tastiera quando scrivevo codice.

Chi di scrivendo codice in C o in PHP ad esempio non vorrebbe avere a portata di mano le parentesi graffe?

Chi di voi usando la bash non vorrebbe avere la tilde o la slash a portata di mano e non nascosta dietro AltGr o Shift?

Ora la tastiera italiana si caratterizza per avere le accentate ùèòàìé e tanti altri caratteri strani di cui ignoro, ad esempio la c con cediglia.
Qualcuno di voi l'ha mai usata?
Io no.
Eppure sta li in mezzo ai cabbasisi come direbbe Montalbano.
Non sarebbe più comodo avere la pipe li, quando si sta usando la bash?

Ecco a queste mie noie ho cercato di dare risposta creando un mio layout di tastiera.
Che vi mostro graficamente:


Come vedete ho messo la slash e la tilde (accessibile con un semplice shift) a fianco della L.
La pipe e la "chiocciola" sono a seguire facilmente accessibili (con il mignolo :) ).
Ancora a seguire il cancelletto e l'apice inverso (utilissimo, ad esempio, in bash e in latex)
Come vedete le graffe e le quadre sono li dove si trovano sulla tastiera UK, US.
Come tutti però oltre a scrivere codice scrivo anche testo in italiano :)
Quindi non ho fatto fuori le accentate. Semplicemente le ho piazzate sopra i numeri come potete vedere in figura.
Posso accedervi con AltGr + il numero corrispondente. Si, adesso sono le accentate a non essere a portata di mano, ma visto il ridotto utilizzo che ne faccio non è un problema per me.
Ho fatto fuori il simbolo della sterlina che si trovava sul numero 3 ed al suo posto ho messo il simbolo dell'euro € :)

Cosa ne pensate? :)

domenica 5 aprile 2009

p54usb and the wrong regulatory domain

In these days I used often my flybook. It is equipped with a WiFi Usb integrated dongle.
It came out that it's a prism54 chipset. So I could use p54usb module from the kernel.
But I discovered a problem. My netbook doesn't associate in any way to my Access Point.
At first I couldn't figure out why. So I gave up. I thought that was a problem in my hardware.
Yesterday, I noticed an error message from the kernel:


[ 193.290086] phy0: frequency change failed
[ 193.290155] phy0: failed to set freq to 2467 MHz for scan


This arouses my suspicion.
I decided to figure out more about this error.
So I looked for this string in drivers/net/wireless/p54/*.{c,h}.

denever@v33i:~$ grep -l "frequency change failed" driver/net/wireless/p54/*.{c,h}
p54common.c

I took a look to the code. And I decided to add some printf line to figure out where the problem is.
Then I discovered that p54common tries more frequencies to find the right one.
But if none of the set available matches then print out that error message.
So how is choosed the frequencies set?
Looking more carefully to the dmesg I found this line:

[ 131.901612] cfg80211: Using static regulatory domain info
[ 131.901621] cfg80211: Regulatory domain: US

So here we are!!!
My usb dongle uses the wrong frequency set.
But how can I change this frequency set?
I googled around discovering some interesting things.
First of all, I discovered that cfg80211 implements a regulatory compliance.
And actually since cfg80211 came in to the kernel I experimented problems with my wifi dongle.
Reading here, I discovere that is possible to choose the regulatory domain setting a parameter of the cfg80211 module.
So I wrote a config file for modprobe and I placed it in my /etc/modprobe.d/.
Here follows my cfg80211.conf:

denever@v33i:~$ cat /etc/modprobe.d/cfg80211.conf
options cfg80211 ieee80211_regdom=EU

And now my dongle connect really fine :)
My dmesg:

denever@v33i:~$ dmesg | grep cfg80211
[ 131.901612] cfg80211: Using static regulatory domain info
[ 131.901621] cfg80211: Regulatory domain: EU