Άμα έχετε πρόβλημα με κάποια πλήκτρα ενός laptop, π.χ. πατάτε το πλήκτρο TV και δεν ανοίγει τίποτα, να τι πρέπει να κάνετε για να το διορθώσετε:
1. Καθαρισμός όλων των ειδικών πλήκτρων:
- Κώδικας: Επιλογή όλων
for a in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do for b in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do sudo setkeycodes e0$a$b 0; done; done;
2. Σύστημα » Διαχείριση συστήματος » Καταγραφές συστήματος
και επιλέγουμε να βλέπουμε το τέλος του kern.log
3. Για κάθε πλήκτρο που δεν δούλευε υπό φυσιολογικές συνθήκες, το πατάμε και καταγράφουμε το νούμερο που εμφανίζεται:
Π.χ. όταν πατάω το πλήκτρο TV στο laptop μου, εμφανίζεται:
- Κώδικας: Επιλογή όλων
Nov 27 17:40:13 alkisg kernel: [ 3008.803231] atkbd.c: Unknown key pressed (translated set 2, code 0x8a on isa0060/serio0).
Nov 27 17:40:13 alkisg kernel: [ 3008.803245] atkbd.c: Use 'setkeycodes e00a <keycode>' to make it known.
Nov 27 17:40:13 alkisg kernel: [ 3008.964210] atkbd.c: Unknown key released (translated set 2, code 0x8a on isa0060/serio0).
Nov 27 17:40:13 alkisg kernel: [ 3008.964226] atkbd.c: Use 'setkeycodes e00a <keycode>' to make it known.
Οπότε εδώ θα έπρεπε να καταγράψω ότι το πλήκτρο TV μου γεννά τον κωδικό e00a.
Αφού τα καταγράψουμε όλα, κάνουμε ένα reboot για να επανέλθουν και να δουλεύουν όπως και πριν (το hal restart δεν επαναφέρει τα βελάκια, και βαριέμαι να γράψω για dumpkeycodes και restore κτλ...)
4. Δίνουμε την παρακάτω εντολή και καταγράφουμε τα αποτελέσματα:
- Κώδικας: Επιλογή όλων
alkisg@alkisg:~$ lshal|grep system.hardware
system.hardware.product = 'Aspire 5920G' (string)
system.hardware.vendor = 'Acer, inc.' (string)
system.hardware.version = 'Not Applicable' (string)
5. Στο φάκελο /usr/share/hal/fdi/information/10freedesktop/ μπαίνουν τα αρχεία που περιέχουν τις περιγραφές των πλήκτρων. Για παράδειγμα, για το δικό μου laptop είναι το αρχείο 30-keymap-acer.fdi
Αν δεν υπάρχει αρχείο keymap για το laptop μας, αντιγράφουμε και μετονομάζουμε ένα υπάρχον.
Εν τέλει το ανοίγουμε για επεξεργασία με το gedit:
- Κώδικας: Επιλογή όλων
gksu gedit
6. Είτε ανοίγουμε μερικά άλλα τέτοια αρχεία keymaps, ώστε να βλέπουμε πιθανά keycodes, είτε ανοίγουμε το αρχείο
/usr/src/linux-headers-2.6.27-7/include/linux/input.h
όπου υπάρχουν όλα τα keycodes. Λογικά θα έχετε άλλον αριθμό στον φάκελο του kernel, και επίσης τα πλήκτρα θα πρέπει να τα βάλουμε με μικρά και χωρίς το KEY μπροστά, δηλαδή το KEY_REDO γίνεται σκέτο redo.
Εν τέλει με όλες τις παραπάνω πληροφορίες, καταλήγουμε σε ένα αρχείο με περιεχόμενα παρόμοια με το παρακάτω απόσπασμα:
- Κώδικας: Επιλογή όλων
<match key="/org/freedesktop/Hal/devices/computer:system.hardware.vendor" prefix="Acer">
<match key="/org/freedesktop/Hal/devices/computer:system.hardware.product" prefix="Aspire 5920">
<append key="input.keymap.data" type="strlist">e00a:media</append> <!-- TV button -->
<append key="input.keymap.data" type="strlist">e059:bluetooth</append> <!-- Bluetooth (toggle) -->
<append key="input.keymap.data" type="strlist">e06c:mail</append> <!-- Mail button -->
<append key="input.keymap.data" type="strlist">e032:www</append> <!-- WWW button -->
Το πρώτο match σημαίνει ότι τα πλήκτρα ισχύουν για Acer laptops, το δεύτερο match σημαίνει ότι ισχύουν μόνο για 5920* laptops.
Μπορείτε να βρείτε μερικές ακόμα πληροφορίες εδώ:
http://people.freedesktop.org/~hughsien ... index.html