Dispositivo de botón ACPI
El dispositivo de botón genérico es un dispositivo estándar para notificar eventos de botón a través de interrupciones de hardware y asignar esas interrupciones a usos específicos definidos en la especificación del dispositivo de interfaz humana (HID).
Para expresar la funcionalidad de un botón al sistema operativo, se requieren dos fragmentos de información:
- Uso del control HID
- Uso de la colección HID en la que pertenece el control
Un uso es una combinación de una página de uso y un identificador de uso. Por ejemplo, el botón Subir volumen se identifica como uso de volumen (página de uso 0x0C, id. de uso 0xE9) en la colección de controles de consumidor (página uso 0x0C, id. de uso 0x01).
El identificador de dispositivo ACPI de un dispositivo de botón genérico es ACPI0011. Windows carga el controlador incluido en Microsoft, Hidinterrupt.sys para ese dispositivo.
Para obtener más información sobre el dispositivo de botón genérico, visite el sitio web Unified Extensible Firmware Interface specifications y descargue el documento PDF ACPI Specification Version 6.0 . A continuación, use el panel izquierdo para ir a la sección 9.19.
Dispositivo de botón ACPI de ejemplo para las ediciones Windows 10 Core OS
Ejemplo para describir botones en el lenguaje de origen ACPI (ASL) para el dispositivo que ejecuta Windows 10 sistema operativo principal.
// Sample Buttons in ACPI Source Language for Windows 10.
Device(BTNS)
{
Name(_HID, "ACPI0011")
Name(_CRS, ResourceTemplate() {
GpioInt(Edge, ActiveBoth,...) {pin} // Index 0: Power Button
GpioInt(Edge, ActiveBoth,...) {pin} // Index 1: Volume Up Button
GpioInt(Edge, ActiveBoth,...) {pin} // Index 2: Volume Down Button
GpioInt(Edge, ActiveHigh,...) {pin} // Index 3: Camera Auto-focus Button
GpioInt(Edge, ActiveLow,...) {pin} // Index 4: Camera Shutter Button
GpioInt(Edge, ActiveBoth,...) {pin} // Index 5: Back Button
GpioInt(Edge, ActiveBoth,...) {pin} // Index 6: Windows/Home Button
GpioInt(Edge, ActiveBoth,...) {pin} // Index 7: Search Button
})
Name(_DSD, Package(2) {
//UUID for HID Button Descriptors:
ToUUID("FA6BD625-9CE8-470D-A2C7-B3CA36C4282E"),
//Data structure for this UUID:
Package(9) {
Package(5) {
0, // This is a Collection
1, // Unique ID for this Collection
0, // This is a Top-Level Collection
0x01, // Usage Page ("Generic Desktop Page")
0x0D // Usage ("Portable Device Control")
},
Package(5) {
1, // This is a Control
0, // Interrupt index in _CRS for Power Button
1, // Unique ID of Parent Collection
0x01, // Usage Page ("Generic Desktop Page")
0x81 // Usage ("System Power Down")
},
Package(5) {
1, // This is a Control
1, // Interrupt index in _CRS for Volume Up Button
1, // Unique ID of Parent Collection
0x0C, // Usage Page ("Consumer Page")
0xE9 // Usage ("Volume Increment")
},
Package(5) {
1, // This is a Control
2, // Interrupt index in _CRS for Volume Down Button
1, // Unique ID of Parent Collection
0x0C, // Usage Page ("Consumer Page")
0xEA // Usage ("Volume Decrement")
},
Package(5) {
1, // This is a Control
3, // Interrupt index in _CRS for Camera Auto-focus Button
1, // Unique ID of Parent Collection
0x90, // Usage Page ("Camera Control Page")
0x20 // Usage ("Camera Auto-focus")
},
Package(5) {
1, // This is a Control
4, // Interrupt index in _CRS for Camera Shutter Button
1, // Unique ID of Parent Collection
0x90, // Usage Page ("Camera Control Page")
0x21 // Usage ("Camera Shutter")
},
Package(5) {
1, // This is a Control
5, // Interrupt index in _CRS for Back Button
1, // Unique ID of Parent Collection
0x0C, // Usage Page ("Consumer Page")
0x224 // Usage ("AC Back")
},
Package(5) {
1, // This is a Control
6, // Interrupt index in _CRS for Windows/Home Button
1, // Unique ID of Parent Collection
0x07, // Usage Page ("Keyboard Page")
0xE3 // Usage ("Keyboard Left GUI")
},
Package(5) {
1, // This is a Control
7, // Interrupt index in _CRS for Search Button
1, // Unique ID of Parent Collection
0x0C, // Usage Page ("Consumer Page")
0x221 // Usage ("AC Search")
}
}
})
}
Botones de ejemplo en ACPI para dispositivos que ejecutan Windows 10 ediciones de escritorio
Ejemplo para describir botones en lenguaje de origen ACPI (ASL) para dispositivos que ejecutan Windows 10 ediciones de escritorio (Home, Pro, Enterprise y Education).
Device(BTNS)
{
Name(_HID, "ACPI0011")
Name(_CRS, ResourceTemplate() {
GpioInt(Edge, ActiveBoth,...) {pin} // Index 0: Power Button
GpioInt(Edge, ActiveBoth,...) {pin} // Index 1: Volume Up Button
GpioInt(Edge, ActiveBoth,...) {pin} // Index 2: Volume Down Button
GpioInt(Edge, ActiveBoth,...) {pin} // Index 3: Windows/Home Button
GpioInt(Edge, ActiveBoth,...) {pin} // Index 4: Rotation Lock Button
})
Name(_DSD, Package(2) {
//UUID for HID Button Descriptors:
ToUUID("FA6BD625-9CE8-470D-A2C7-B3CA36C4282E"),
//Data structure for this UUID:
Package(6) {
Package(5) {
0, // This is a Collection
1, // Unique ID for this Collection
0, // This is a Top-Level Collection
0x01, // Usage Page ("Generic Desktop Page")
0x0D // Usage ("Portable Device Control")
},
Package(5) {
1, // This is a Control
0, // Interrupt index in _CRS for Power Button
1, // Unique ID of Parent Collection
0x01, // Usage Page ("Generic Desktop Page")
0x81 // Usage ("System Power Down")
},
Package(5) {
1, // This is a Control
1, // Interrupt index in _CRS for Volume Up Button
1, // Unique ID of Parent Collection
0x0C, // Usage Page ("Consumer Page")
0xE9 // Usage ("Volume Increment")
},
Package(5) {
1, // This is a Control
2, // Interrupt index in _CRS for Volume Down Button
1, // Unique ID of Parent Collection
0x0C, // Usage Page ("Consumer Page")
0xEA // Usage ("Volume Decrement")
},
Package(5) {
1, // This is a Control
3, // Interrupt index in _CRS for Windows/Home Button
1, // Unique ID of Parent Collection
0x07, // Usage Page ("Keyboard Page")
0xE3 // Usage ("Keyboard Left GUI")
},
Package(5) {
1, // This is a Control
4, // Interrupt index in _CRS for Rotation Lock Button
1, // Unique ID of Parent Collection
0x01, // Usage Page ("Generic Desktop Page")
0xCA // Usage ("System Display Rotation Lock Slider Switch")
}
}
})
}