1## @file
2# USB Keyboard Driver that manages USB keyboard and produces Simple Text Input(Ex) Protocol.
3#
4# USB Keyboard Driver consumes USB I/O Protocol and Device Path Protocol, and produces
5# Simple Text Input Protocol and Simple Text Input Ex Protocol on USB keyboard devices.
6# It initializes the keyboard layout according to info retrieved from HII database.
7# If HII cannot provide the info, this module uses its carried default one if PCD allows.
8# It manages the USB keyboard device via Asynchronous Interrupt Transfer of USB I/O Protocol,
9# and parses the data according to USB HID documents.
10# This module refers to following specifications:
11# 1. Universal Serial Bus HID Firmware Specification, ver 1.11
12# 2. Universal Serial Bus HID Usage Tables, ver 1.12
13# 3. UEFI Specification, v2.1
14#
15# Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
16#
17#  This program and the accompanying materials
18#  are licensed and made available under the terms and conditions of the BSD License
19#  which accompanies this distribution. The full text of the license may be found at
20#  http://opensource.org/licenses/bsd-license.php
21#
22#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
23#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
24#
25#
26##
27
28[Defines]
29  INF_VERSION                    = 0x00010005
30  BASE_NAME                      = UsbKbDxe
31  MODULE_UNI_FILE                = UsbKbDxe.uni
32  FILE_GUID                      = 2D2E62CF-9ECF-43b7-8219-94E7FC713DFE
33  MODULE_TYPE                    = UEFI_DRIVER
34  VERSION_STRING                 = 1.0
35  ENTRY_POINT                    = USBKeyboardDriverBindingEntryPoint
36
37#
38# The following information is for reference only and not required by the build tools.
39#
40#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM AARCH64
41#
42#  DRIVER_BINDING                =  gUsbKeyboardDriverBinding
43#  COMPONENT_NAME                =  gUsbKeyboardComponentName
44#  COMPONENT_NAME2               =  gUsbKeyboardComponentName2
45#
46
47[Sources]
48  EfiKey.c
49  EfiKey.h
50  KeyBoard.c
51  ComponentName.c
52  KeyBoard.h
53
54[Packages]
55  MdePkg/MdePkg.dec
56  MdeModulePkg/MdeModulePkg.dec
57
58[LibraryClasses]
59  MemoryAllocationLib
60  UefiLib
61  UefiBootServicesTableLib
62  UefiDriverEntryPoint
63  UefiRuntimeServicesTableLib
64  BaseMemoryLib
65  ReportStatusCodeLib
66  DebugLib
67  PcdLib
68  UefiUsbLib
69  HiiLib
70
71[Guids]
72  #
73  # Event registered to EFI_HII_SET_KEYBOARD_LAYOUT_EVENT_GUID group,
74  # which will be triggered by EFI_HII_DATABASE_PROTOCOL.SetKeyboardLayout().
75  #
76  gEfiHiiKeyBoardLayoutGuid                     ## SOMETIMES_CONSUMES ## Event
77  gUsbKeyboardLayoutPackageGuid                 ## SOMETIMES_CONSUMES ## HII
78  gUsbKeyboardLayoutKeyGuid                     ## SOMETIMES_PRODUCES ## UNDEFINED
79
80[Protocols]
81  gEfiUsbIoProtocolGuid                         ## TO_START
82  gEfiDevicePathProtocolGuid                    ## TO_START
83  gEfiSimpleTextInProtocolGuid                  ## BY_START
84  gEfiSimpleTextInputExProtocolGuid             ## BY_START
85  #
86  # If HII Database Protocol exists, then keyboard layout from HII database is used.
87  # Otherwise, USB keyboard module tries to use its carried default layout.
88  #
89  gEfiHiiDatabaseProtocolGuid                   ## SOMETIMES_CONSUMES
90
91[FeaturePcd]
92  gEfiMdeModulePkgTokenSpaceGuid.PcdDisableDefaultKeyboardLayoutInUsbKbDriver ## CONSUMES
93
94# [Event]
95# EVENT_TYPE_RELATIVE_TIMER        ## CONSUMES
96#
97
98[UserExtensions.TianoCore."ExtraFiles"]
99  UsbKbDxeExtra.uni
100