Προς το περιεχόμενο

Πώς να διορθώσετε τα πλήκτρα του laptop που δεν δουλεύουν


alkisg

Προτεινόμενες αναρτήσεις

...δεν έχω χρόνο για κανονικό howto, αλλά ας το ανεβάσω έστω και μισό, μπορεί να βοηθήσει κάποιον.

 

Άμα έχετε πρόβλημα με κάποια πλήκτρα ενός 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/~hughsient/quirk/quirk-keymap-index.html

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@capthookb: δοκιμασμένα όχι. Και λογικό είναι, που να ξέρει ο καημένος ο evdev ποιο scancode της ήρθε της Acer να αντιστοιχίσει στο "eSettings for Acer Power Management key"...

 

@jpavly: δεν ξέρω, αυτό που μου είχαν πει ότι υποτίθεται ότι τα κάνει αυτά ήταν το hotkey-setup, αλλά μετά από καμιά βδομάδα debugging κατάλαβα ότι το Ubuntu το φορτώνει ακριβώς πριν φορτωθεί ο X server.

Στη συνέχεια ο X server (με τα αρχεία του freedesktop που γράφω παραπάνω) κάνει override όλες τις ρυθμίσεις του hotkey-setup, οπότε εν τέλει το hotkey-setup δουλεύει για ...κάτι msec!!! Τζάμπα το φορτώνουν!!!

 

Δηλαδή αυτή τη στιγμή υπάρχουν καμιά 20ριά εμπλεκόμενα προγράμματα που μετατρέπουν scancodes σε keycodes και σε unicode γράμματα ή σε actions, και νομίζω ότι πρέπει να κόψουν επιτέλους τα 15 από αυτά και να κρατήσουν μόνο τα απαραίτητα, γιατί τα υπόλοιπα μόνο στο να γίνεται χάος βοηθάνε... :)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κι εμένα δε μου δούλευαν τα extra keys, αλλά με xorg 1.5 και ρυθμισμένο evdev στο xorg.conf και evdev πληκτρολόγιο στο kde 4.1, αναγνωρίστηκαν όλα τα πλήκτρα. Παλιότερα έπρεπε να δηλώσω τα extra keys στο .xmodmap νομίζω.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ερώτηση σε κάτι που δεν κατάλαβα καλά:

 

Τρέχω Debian Lenny σε έναν Lenovo ThinkPad R61i. Πήγα στο /usr/share/hal/fdi/information/10freedesktop/ και βρήκα το αρχείο 30-keymap-lenovo.fdi

 

Είναι αυτό:

><!-- -*- SGML -*- -->
−
<deviceinfo version="0.2">
−
<device>
−
<!--
These are raw scancodes produced by the atkbd driver 
-->
−
<match key="@input.originating_device:info.linux.driver" string="atkbd">
−
<match key="/org/freedesktop/Hal/devices/computer:system.hardware.vendor" prefix="LENOVO">
−
<match key="/org/freedesktop/Hal/devices/computer:system.hardware.version" contains="3000">
<append key="input.keymap.data" type="strlist">e00b:switchvideomode</append>
<!-- Fn+F7 video -->
<append key="input.keymap.data" type="strlist">e016:wlan</append>
<!-- Fn+F5 wireless -->
<append key="input.keymap.data" type="strlist">e017:sleep</append>
<!-- Fn+F4 suspend -->
<append key="input.keymap.data" type="strlist">e018:suspend</append>
<!-- Fn+F12 hibernate -->
<append key="info.capabilities" type="strlist">input.keymap</append>
</match>
<!-- match for X60/X61/ ... ThinkPad Tablets -->
−
<match key="/org/freedesktop/Hal/devices/computer:system.hardware.version" prefix="ThinkPad X6">
−
<match key="/org/freedesktop/Hal/devices/computer:system.hardware.version" suffix=" Tablet">
<append key="input.keymap.data" type="strlist">006c:f21</append>
<!-- rotate -->
<append key="input.keymap.data" type="strlist">0068:screenlock</append>
<!-- screenlock -->
<append key="input.keymap.data" type="strlist">006b:esc</append>
<!-- escape -->
<append key="input.keymap.data" type="strlist">006d:right</append>
<!-- right on d-pad -->
<append key="input.keymap.data" type="strlist">006e:left</append>
<!-- left on d-pad -->
<append key="input.keymap.data" type="strlist">0071:up</append>
<!-- up on d-pad -->
<append key="input.keymap.data" type="strlist">006f:down</append>
<!-- down on d-pad -->
<append key="input.keymap.data" type="strlist">0069:enter</append>
<!-- enter on d-pad -->
<append key="info.capabilities" type="strlist">input.keymap</append>
</match>
</match>
</match>
</match>
</device>
</deviceinfo>

Πήγαινα να φτιάξω κάποια άλλα πλήκτρα αλλά με την πρώτη εντολή μου χαλάσανε τα βελάκια, το end, το delete, το home, το insert, page up, page down, τα print screen, scrLk, Pause!!! Όλα τα άλλα δουλεύουνε. Όσα μείνανε :D

 

Έχω βρει από το log ότι τα πλήκτρα πάνω, κάτω, αριστερά, δεξιά πχ είναι αντίστοιχα τα e048, e050, e04b, e04d

 

Πως θα τα ξαναφτιάξω? Πες μου πχ για τα πλήκτρα με τα βελάκια αρχικά και τα άλλα θα τα κάνω μόνος μου, ή έστω, υπάρχει τρόπος να τα επαναφέρω με κάποιον τρόπο?

 

Ευχαριστώ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Η επαναφορά είναι στο 3ο βήμα:

Οπότε εδώ θα έπρεπε να καταγράψω ότι το πλήκτρο TV μου γεννά τον κωδικό e00a.

Αφού τα καταγράψουμε όλα, κάνουμε ένα reboot για να επανέλθουν και να δουλεύουν όπως και πριν (το hal restart δεν επαναφέρει τα βελάκια, και βαριέμαι να γράψω για dumpkeycodes και restore κτλ...)

 

Δηλαδή απλά κάνεις μια επανεκκίνηση.

 

Έπρεπε όμως να σημειώσεις τα υπόλοιπα κουμπιά που ΔΕΝ σου δούλευαν, όχι τα βελάκια που δούλευαν...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...