2 Copyright (c) 2006, Intel Corporation
3 All rights reserved. This program and the accompanying materials
4 are licensed and made available under the terms and conditions of the BSD License
5 which accompanies this distribution. The full text of the license may be found at
6 http://opensource.org/licenses/bsd-license.php
8 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
9 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17 Header file for USB Keyboard Driver's Data Structures
25 #include <IndustryStandard/Usb.h>
27 #define MAX_KEY_ALLOWED 32
29 #define HZ 1000 * 1000 * 10
30 #define USBKBD_REPEAT_DELAY ((HZ) / 2)
31 #define USBKBD_REPEAT_RATE ((HZ) / 50)
34 #define SUBCLASS_BOOT 1
35 #define PROTOCOL_KEYBOARD 1
37 #define BOOT_PROTOCOL 0
38 #define REPORT_PROTOCOL 1
46 USB_KEY buffer
[MAX_KEY_ALLOWED
+ 1];
51 #define USB_KB_DEV_SIGNATURE EFI_SIGNATURE_32 ('u', 'k', 'b', 'd')
54 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
55 EFI_EVENT DelayedRecoveryEvent
;
56 EFI_SIMPLE_TEXT_IN_PROTOCOL SimpleInput
;
57 EFI_USB_IO_PROTOCOL
*UsbIo
;
59 EFI_USB_INTERFACE_DESCRIPTOR InterfaceDescriptor
;
60 EFI_USB_ENDPOINT_DESCRIPTOR IntEndpointDescriptor
;
62 USB_KB_BUFFER KeyboardBuffer
;
69 UINT8 LastKeyCodeArray
[8];
73 EFI_EVENT RepeatTimer
;
75 EFI_UNICODE_STRING_TABLE
*ControllerNameTable
;
82 extern EFI_DRIVER_BINDING_PROTOCOL gUsbKeyboardDriverBinding
;
83 extern EFI_COMPONENT_NAME_PROTOCOL gUsbKeyboardComponentName
;
84 extern EFI_GUID gEfiUsbKeyboardDriverGuid
;
88 IN EFI_DEVICE_PATH_PROTOCOL
*DevicePath
,
89 IN EFI_STATUS_CODE_TYPE CodeType
,
90 IN EFI_STATUS_CODE_VALUE Value
93 #define USB_KB_DEV_FROM_THIS(a) \
94 CR(a, USB_KB_DEV, SimpleInput, USB_KB_DEV_SIGNATURE)
96 #define MOD_CONTROL_L 0x01
97 #define MOD_CONTROL_R 0x10
98 #define MOD_SHIFT_L 0x02
99 #define MOD_SHIFT_R 0x20
100 #define MOD_ALT_L 0x04
101 #define MOD_ALT_R 0x40
102 #define MOD_WIN_L 0x08
103 #define MOD_WIN_R 0x80
110 #define USB_KEYCODE_MAX_MAKE 0x64
112 #define USBKBD_VALID_KEYCODE(key) ((UINT8) (key) > 3)
117 UINT8 ScrollLock
: 1;
123 // Driver model protocol interface
127 USBKeyboardDriverBindingSupported (
128 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
129 IN EFI_HANDLE Controller
,
130 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
135 USBKeyboardDriverBindingStart (
136 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
137 IN EFI_HANDLE Controller
,
138 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
143 USBKeyboardDriverBindingStop (
144 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
145 IN EFI_HANDLE Controller
,
146 IN UINTN NumberOfChildren
,
147 IN EFI_HANDLE
*ChildHandleBuffer