In reply to post #273 - regarding bezel buttons.
I've spent some time debugging these buttons and have been able to read them by calling the hotkey query. I can say, as a matter of fact, the following:
1. PNP0C09, the EC, contains the the QBBB register(memory location) that stores the code of the most recent button press. But, When PNP0C14, hp-wmi, runs it's query, QBBB is checked for the button pressed and writes an appropriate scancode to the memory location that is read by the query.
2. The QBBB codes for them are 0x7 & 0x8. The scancodes are defined in Method GBBV (the hp-wmi hotkey query) after DBTN & QBTN (0x4 & 0x5).
3. DBTN & QBTN do not currently use Method GBBV, hp-wmi. Although they also come through hp-wmi when hp-wmi runs it's hotkey query.
4. The BIOS never notifies hp-wmi that a key has been pressed like it does for the tablet switch, thus hp-wmi never queries the BIOS for the codes.
So, an interesting point about that is the issue of the two buttons that come through the keyboard event. Since they also come through the hp-wmi event, there should be no need to reset the keyboard in tablet mode if we can get them working correctly. Although, if we manage to succeed in getting the buttons working, it should lead to a double button press when not in tablet mode.
Now for some speculation on my part. I read somewhere that the _Q?? methods correspond to GPIO pins on the embedded controller. Thus, there should be a _Q method to notify hp-wmi when a button has been pressed. We have this in method _Q16. Looking at a motherboard schematic I have, GPIO16 simply reads T50, with no other reference to T50. So, the question is, is the dsdt wrong, or is the EC not calling method _Q16. I believe it to be the latter, and that the EC needs to be programmed to enable the calling of method _Q16. I am currently looking into how to do that, but wanted to share what I have found so far in case anyone else is still working on this.