1 |
Am Montag, 17. Dezember 2012, 15:23:46 schrieb Uwe Scholz: |
2 |
> Sven Eden <sven.eden@×××.de> schrieb am [Mon, 17.12.2012 10:24]: |
3 |
> > Hallo Uwe, |
4 |
> > |
5 |
> > ich habe auch einen Laptop ohne separatem Nummernblock, und Numlock |
6 |
> > wurde bei mir weder mit 3.5.7 noch mit 3.6.x aktiviert. Ich habe |
7 |
> > Numlock im BIOS explizit abgeschaltet. |
8 |
> > |
9 |
> > Es ist nämlich so, dass der Kernel Numlock explizit beim Hochfahren |
10 |
> > _abschaltet_, damit die LEDs alle in einem bekannten Zustand sind. Es |
11 |
> > gab schon so manche Beschwerde darüber, zum Beispiel hier: |
12 |
> > |
13 |
> > http://www.pronix.de/comment/site-959/open-1456/site-1.html |
14 |
> > |
15 |
> > Allerdings wurde bereits im Februar 2012 angeregt, den BIOS-Status zu |
16 |
> > nehmen. Die Lösung könnte also schlicht sein, dass du Numlock im BIOS |
17 |
> > explizit abschaltest. Siehe: |
18 |
> > http://lkml.indiana.edu/hypermail/linux/kernel/1202.3/00697.html (In |
19 |
> > der Mailing-Liste verläuft der Thread zwar im Sand, aber vielleicht |
20 |
> > wurde es ja doch umgesetzt?) |
21 |
> |
22 |
> Hallo Sven, |
23 |
> |
24 |
> danke für deine Antwort. Das ist alles sehr mysteriös. Bei meinem |
25 |
> Notebook ist der NumLock-Status nach dem Booten wie gewünscht aus. Bei |
26 |
> meinem PC jedoch ist er an. Es mag sein, dass erstmal alle LEDs |
27 |
> ausgeschaltete werden. Ich sehe nämlich beim Booten des Kernels alle |
28 |
> LEDs kurz angehen, dann wieder aus und dann bleibt NumLock am Ende an. |
29 |
> |
30 |
> Allerdings habe ich schon das BIOS des PCs erfolglos nach einer |
31 |
> NumLock-Option durchforstet. So etwas scheint es in meinem BIOS nicht zu |
32 |
> geben. :-/ Wie kann das sein? Bzw. wenn es keine Option dafür gibt, |
33 |
> warum holt sich dann der Kernel von dort die Info über den Bios-Status? |
34 |
> |
35 |
> Dein erster Link hat mich zur Datei drivers/tty/vt/keyboard.c. In dieser |
36 |
> entspricht der Inhalt etwa dem geposteten Text auf der Web-Seite. Leider |
37 |
> reichen meine C-Kenntnisse auf die Schnelle nicht aus, um zu verstehen |
38 |
> an welcher Stelle ich rumspielen könnte, ohne etwas kaputt zu |
39 |
> machen. Aber ich habe jetzt schon mal eine Idee, wo ich werkeln |
40 |
> könnte. Danke dafür |
41 |
> |
42 |
> Viele Grüße, |
43 |
> Uwe |
44 |
> |
45 |
> PS: Dein Text steht unter dem Signatur-Marker "-- ". Ist das gewollt? So |
46 |
> kann man auf deine Mails nur schwer antworten. :-) |
47 |
|
48 |
Hallo Uwe, |
49 |
|
50 |
ich habe mal in die Quellen vom Kernel 3.6.10 geschaut, und da steht in |
51 |
kbd_init(): |
52 |
|
53 |
for (i = 0; i < MAX_NR_CONSOLES; i++) { |
54 |
kbd_table[i].ledflagstate = kbd_defleds(); |
55 |
(snip) |
56 |
|
57 |
kbd_defleds() gibt auf nicht-x86 Systemen immer 0 zurück, also aus. Auf x86 |
58 |
Systemen gibt es die Datei asm/kbdleds.h. |
59 |
|
60 |
Und hier, in arch/x86/include/asm/kbdleds.h, steht nunmehr |
61 |
|
62 |
static inline int kbd_defleds(void) |
63 |
{ |
64 |
return boot_params.kbd_status & 0x20 ? (1 << VC_NUMLOCK) : 0; |
65 |
} |
66 |
|
67 |
boot_params wird exzessiv in arch/x86/kernel/setup.c verwendet, ich kann auf |
68 |
die Schnelle aber nicht herausfinden, wo das initialisiert/befüllt wird. |
69 |
|
70 |
Aus den Kommentaren heraus entnehme ich jedoch, dass es dabei um die EFI/BIOS- |
71 |
Parameter handelt. |
72 |
|
73 |
Wenn du den Numlock also nicht im BIOS einstellen kannst, dann bleibt dir |
74 |
eigentlich nur die Zeile |
75 |
|
76 |
kbd_table[i].ledflagstate = kbd_defleds(); |
77 |
|
78 |
in kbd_init() durch |
79 |
|
80 |
kbd_table[i].ledflagstate = 0; |
81 |
|
82 |
zu ersetzen. |
83 |
|
84 |
Gruß |
85 |
|
86 |
Sven |
87 |
|
88 |
|
89 |
P.S: Nein, das war absolut _nicht_ gewollt und ein peinliches Versehen! danke |
90 |
für den Hinweis! |
91 |
|
92 |
|
93 |
|
94 |
-- |
95 |
http://pwxlib.sourceforge.net |