Dell added support for Windows 7 with BIOS version A15 for the Latitude E6400. A14 + kernel 2.6.32 caused fn-f8 to be reported as keycode 227.
Kernel 2.6.31 claims to support the ACPI interface for Vista, 2.6.32 claims to support the ACPI interface for Win7.
{"Windows 2000", ACPI_OSI_WIN_2000}, /* Windows 2000 */
{"Windows 2001", ACPI_OSI_WIN_XP}, /* Windows XP */
{"Windows 2001 SP1", ACPI_OSI_WIN_XP_SP1}, /* Windows XP SP1 */
{"Windows 2001.1", ACPI_OSI_WINSRV_2003}, /* Windows Server 2003 */
{"Windows 2001 SP2", ACPI_OSI_WIN_XP_SP2}, /* Windows XP SP2 */
{"Windows 2001.1 SP1", ACPI_OSI_WINSRV_2003_SP1}, /* Windows Server 2003 SP1 - Added 03/2006 */
{"Windows 2006", ACPI_OSI_WIN_VISTA}, /* Windows Vista - Added 03/2006 */
{"Windows 2000", ACPI_OSI_WIN_2000}, /* Windows 2000 */
{"Windows 2001", ACPI_OSI_WIN_XP}, /* Windows XP */
{"Windows 2001 SP1", ACPI_OSI_WIN_XP_SP1}, /* Windows XP SP1 */
{"Windows 2001.1", ACPI_OSI_WINSRV_2003}, /* Windows Server 2003 */
{"Windows 2001 SP2", ACPI_OSI_WIN_XP_SP2}, /* Windows XP SP2 */
{"Windows 2001.1 SP1", ACPI_OSI_WINSRV_2003_SP1}, /* Windows Server 2003 SP1 - Added 03/2006 */
{"Windows 2006", ACPI_OSI_WIN_VISTA}, /* Windows Vista - Added 03/2006 */
{"Windows 2006.1", ACPI_OSI_WINSRV_2008}, /* Windows Server 2008 - Added 09/2009 */
{"Windows 2006 SP1", ACPI_OSI_WIN_VISTA_SP1}, /* Windows Vista SP1 - Added 09/2009 */
{"Windows 2009", ACPI_OSI_WIN_7}, /* Windows 7 and Server 2008 R2 - Added 09/2009 */
If the OS claims to support the Vista interface, the BIOS reports fn-f8 as keycode 227.
If the OS claims to support the Win7 interface, the BIOS reports fn-f8 as Super_L + p.
Conclusion: No bug in Linux, the BIOS just (intentionally) reports fn-f8 differently for Vista and Win7. Which would indicate that Super + p is a feature that was introduced with Win7 :)
As I suspect that more and more newer laptops are going to default to this behaviour, you would have to either quirk those to convert Super_L + p to DISPLAYTOGGLE (which is not feasible), or have everything that previously only reacted on DISPLAYTOGGLE to also react on Super_L + p. But that's out of scope for this bug report.
I think I found the reason for the different behaviour of 2.6.31 and 2.6.32.
According to: support. euro.dell. com/support/ downloads/ download. aspx?c= de&cs=debsdt1& l=de&s= bsd&releaseid= R231574& SystemID= LAT_E6400& servicetag= &os=WLH& osl=ge& deviceid= 15569&devlib= 0&typecnt= 0&vercnt= 11&catid= -1&impid= -1&formatcnt= 0&libid= 1&typeid= -1&dateid= -1&formatid= -1&fileid= 333175
http://
Dell added support for Windows 7 with BIOS version A15 for the Latitude E6400. A14 + kernel 2.6.32 caused fn-f8 to be reported as keycode 227.
Kernel 2.6.31 claims to support the ACPI interface for Vista, 2.6.32 claims to support the ACPI interface for Win7.
linux-2. 6.31/drivers/ acpi/acpica/ uteval. c: _supported[ ] = {
static struct acpi_interface_info acpi_interfaces
/* Operating System Vendor Strings */
{"Windows 2000", ACPI_OSI_WIN_2000}, /* Windows 2000 */ WIN_XP_ SP1}, /* Windows XP SP1 */ WINSRV_ 2003}, /* Windows Server 2003 */ WIN_XP_ SP2}, /* Windows XP SP2 */ WINSRV_ 2003_SP1} , /* Windows Server 2003 SP1 - Added 03/2006 */ WIN_VISTA} , /* Windows Vista - Added 03/2006 */
{"Windows 2001", ACPI_OSI_WIN_XP}, /* Windows XP */
{"Windows 2001 SP1", ACPI_OSI_
{"Windows 2001.1", ACPI_OSI_
{"Windows 2001 SP2", ACPI_OSI_
{"Windows 2001.1 SP1", ACPI_OSI_
{"Windows 2006", ACPI_OSI_
linux-2. 6.32/drivers/ acpi/acpica/ uteval. c: _supported[ ] = {
static struct acpi_interface_info acpi_interfaces
/* Operating System Vendor Strings */
{"Windows 2000", ACPI_OSI_WIN_2000}, /* Windows 2000 */ WIN_XP_ SP1}, /* Windows XP SP1 */ WINSRV_ 2003}, /* Windows Server 2003 */ WIN_XP_ SP2}, /* Windows XP SP2 */ WINSRV_ 2003_SP1} , /* Windows Server 2003 SP1 - Added 03/2006 */ WIN_VISTA} , /* Windows Vista - Added 03/2006 */ WINSRV_ 2008}, /* Windows Server 2008 - Added 09/2009 */ WIN_VISTA_ SP1}, /* Windows Vista SP1 - Added 09/2009 */
{"Windows 2001", ACPI_OSI_WIN_XP}, /* Windows XP */
{"Windows 2001 SP1", ACPI_OSI_
{"Windows 2001.1", ACPI_OSI_
{"Windows 2001 SP2", ACPI_OSI_
{"Windows 2001.1 SP1", ACPI_OSI_
{"Windows 2006", ACPI_OSI_
{"Windows 2006.1", ACPI_OSI_
{"Windows 2006 SP1", ACPI_OSI_
{"Windows 2009", ACPI_OSI_WIN_7}, /* Windows 7 and Server 2008 R2 - Added 09/2009 */
If the OS claims to support the Vista interface, the BIOS reports fn-f8 as keycode 227.
If the OS claims to support the Win7 interface, the BIOS reports fn-f8 as Super_L + p.
Conclusion: No bug in Linux, the BIOS just (intentionally) reports fn-f8 differently for Vista and Win7. Which would indicate that Super + p is a feature that was introduced with Win7 :)
As I suspect that more and more newer laptops are going to default to this behaviour, you would have to either quirk those to convert Super_L + p to DISPLAYTOGGLE (which is not feasible), or have everything that previously only reacted on DISPLAYTOGGLE to also react on Super_L + p. But that's out of scope for this bug report.