Re: Special notebook keys: no output in either xev or dmesg
Hi Irfy,
I don't think I mentioned on this thread before that I can't pick up anything on acpi_listen. But we think we found out what is suppose to pick up the two "missing" bezel keys and swivel hinge. It is a kernel module called hp-wmi. So we may be making progress too.
So I guess I did try out the instructions. :)
Re: Special notebook keys: no output in either xev or dmesg
Wow, that seems to be out of my range. From what I figure, any key should either
[list][*]produce something with xev,[*]produce something with acpi_listen,[*]produce something in dmesg, or[*]it could hopelessly try to invoke some key event that is beyond what X can see (>255).
Now the first two you obviously tried. Have you seen any dmesg messages saying that you should use setkeycodes to set unmapped keyboard keys? Running
Code:
dmesg | grep -i setkeycodes
should do the trick.
Have you checked out the last option? Is the number shown by running
Code:
sudo dumpkeycodes | awk '{print $2}' | sort -g | tail -n1
bigger than 255?
If both answers are no, I will be very curious :-), but rather unhelpful, since I don't have the machine to experiment :-(
Re: Special notebook keys: no output in either xev or dmesg
Hi Irfy,
Quote:
Have you seen any dmesg messages saying that you should use setkeycodes to set unmapped keyboard keys?
No and running
Code:
dmesg | grep -i setkeycodes
returns nothing.
And with
Code:
sudo dumpkeycodes | awk '{print $2}' | sort -g | tail -n1
I get 255. But interestingly when I looked in "/var/run/hotkey-setup" a while ago there is a keycode 465 paired to e001. The next two highest are e008 387 and e00e 389. And the next highest is 255 as far as I can tell. This naturally made me wonder.
Re: Special notebook keys: no output in either xev or dmesg
I had a quick look at kernel's input.h and see that the three keys you are talking about (465, 387 and 389) are these (in hex):
Code:
#define KEY_FN_ESC 0x1d1
#define KEY_PLAYER 0x183
#define KEY_DVD 0x185 /* Media Select DVD */
Then I tried
Code:
egrep '1d1|465|183|387|185|389' `locate hotkey`
but found nothing meaningful. It seems to me that /var/run/hotkey-setup is generated from other hotkey files and that some of them should define your >255 keys. Perhaps you should try running this egrep command to see which file actually defines your hotkeys.
Perhaps you should check what the current assignment is for those scancodes
Code:
sudo dumpkeycodes | egrep 'e001|e008|e00e'
In any case, I'd suggest assigning those scancodes (e001, e008 and e00e) manually using setkeycodes to some <255 keys. You can as well make totally random assignments, just to see if it produces anything in xev when you press the bezel keys that don't work. I'd go with something like
Code:
. /usr/share/acpi-support/key-constants
setkeycodes e001 $KEY_A
setkeycodes e008 $KEY_B
setkeycodes e00e $KEY_C
and these three keyboard keys should produce the characters a, b and c respectively when you press them.
I'd even go as far as to assign all non-assigned scancodes to some well-known key to rule out your bezel keys being not mapped or wrongly mapped. Here's some ad-hoc action on that:
Code:
. /usr/share/acpi-support/key-constants
export KEY_A
sudo dumpkeycodes | egrep ' 0' | awk '{ cmd = sprintf("sudo setkeycodes %s %s", $1, ENVIRON["KEY_A"]); system(cmd) }'
sudo dumpkeycodes | egrep ' 0'
The last command should give no output, and all the originally not assigned scancodes should produce an "a" if they are pressed on the keyboard. So try out your bezel keys now.
Re: Special notebook keys: no output in either xev or dmesg
Hi again Irfy,
I appreciate your help.
Code:
sudo dumpkeycodes | egrep 'e001|e008|e00e'
yields
Code:
e001 148
e008 193
e00e 226
So they are already remapped? I ran
Code:
sudo dumpkeycodes | egrep ' 0'
before the other commands and it gave a fairly long output of paired numbers (hex numbers each paired with a zero). Then I ran the second set of commands and ran it again and this time no output. I tried the two lower bezel keys and the swivel hinge (which triggers a rotation event in Windows) but got nothing. When I tried xev it spewed some meaningless output but no reaction to the bezel keys or swivel hinge.
The other two bezel keys still work. DVD brings up Rythmbox and the "Q" key (which I bound to rotation) still rotates the screen.
Re: Special notebook keys: no output in either xev or dmesg
Quote:
Originally Posted by
Favux
Code:
sudo dumpkeycodes | egrep 'e001|e008|e00e'
yields
Code:
e001 148
e008 193
e00e 226
So they are already remapped?
Yeah, and those three keycodes are in the xev visible range, so that is not the problem, definitely.
The rest just made sure the keys didn't produce any unmapped keyboard events. And since you already said acpi_listen didn't produce anything either, I'm really out of ideas :-(
It appears that WMI is yet another interface for communicating "things" from the hardware to the software, and that you'll have to stick to hp-wmi and perhaps recompile the newer kernels, try them out, hoping for the best...
Re: Special notebook keys: no output in either xev or dmesg
Hi Irfy,
Thanks for trying. I think you're probably right. At least we now know who the maintainer on hp-wmi is. Maybe some pleading?