• Overview of Keyboard Layouts on Windows
  • Keyboard type and keyboard subtype
  • PS/2-based keyboards
  • HID-based keyboards
  • Implementation of HID-based keyboard layouts in Windows 10
  • Implementation of HID-based keyboard layouts in Windows 8.1 and earlier
  • Korean 101 HID Keyboard INF
  • Japanese 106 HID Keyboard INF
  • Windows Keyboard Layouts March 17, 2015




    Download 104.48 Kb.
    bet2/2
    Sana26.12.2019
    Hajmi104.48 Kb.
    #5266
    1   2

    Contents


    Overview of Keyboard Layouts on Windows 2

    Keyboard type and keyboard subtype 2

    PS/2-based keyboards 2

    HID-based keyboards 3

    Implementation of HID-based keyboard layouts in Windows 10 3

    Implementation of HID-based keyboard layouts in Windows 8.1 and earlier 4

    Keyboard INF type and subtype override values 4

    Sample INF 5

    Korean 101 HID Keyboard INF 5

    Japanese 106 HID Keyboard INF 6

    Resources 7



    Overview of Keyboard Layouts on Windows


    This paper is intended to help OEMs, ODMs, and IHVs develop keyboards across different layouts. It presumes that you have an understanding of Windows input stack and keyboard layouts.

    The Windows operating system enables users to have keyboards with different layouts. Some keyboards use 101 keys while others (such as Japanese and Korean keyboards) have additional keys beyond the standard 101 (keyboards that emit additional scan codes and HID usages beyond standard 101 keyboards). This paper outlines the steps that you take to ensure that USB, I2C, Bluetooth, and PS/2-based keyboards with more than 101 keys operate correctly.



    Screenshot showing a keyboard with the English layout

    Screenshot showing a keyboard with the Japanese layout

    English keyboard layout

    Japanese keyboard layout

    Keyboard type and keyboard subtype


    The Windows behavior for keyboards needs to be implemented differently for a PS/2-based and a human interface device (HID)- based keyboards that leverage USB, Bluetooth, or I2C as their transports) solution. The following section provides details on each solution.

    PS/2-based keyboards


    To enable Windows to correctly support Japanese and Korean layouts on PS/2 keyboards, please ensure the following

    • A Japanese or Korean layout keyboard must report the correct compatible ID for that layout (please see the table below) compared to the English layout keyboard. This solution only works for embedded keyboards (laptops or docking stations).

    • PC manufacturers can optionally provide an INF, if they wish to provide a more specific device name or metadata associated with the keyboard.


    HID-based keyboards


    To enable Windows to correctly support Japanese and Korean layouts on HID-based keyboards, please ensure the following:

    • A Japanese or Korean layout keyboard must report a different (unique) hardware ID compared to the English layout keyboard.

    • PC manufacturers must provide an INF that maps the hardware ID to the correct Keyboard Type and Keyboard Subtype. For details, see the Sample INF.


    Implementation of HID-based keyboard layouts in Windows 10


    This section applies only to Windows 10 implementations of HID Keyboard layouts.

    For Windows 10, Keyboard Layout implementation follows the guidance of the HID committee in the approved HID usage table review request 42.


    HID Usages


    The following Keyboard Physical Layout usages are implemented in Windows 10 (excerpted from the approved usage table review request 42):
    0x2C3 Keyboard Physical Layout

    SV – One of the values below, the remaining values reserved:

    0: Unknown Layout

    1: 101 (e.g., US)

    2: 103 (Korea)

    3: 102 (e.g., German)

    4: 104 (e.g., ABNT Brazil)

    5: 106 (DOS/V Japan)*


    This usage does not refer to the legend set printed on the keys, but only to the physical keyset layout, defined by the relative location and shape of the textual keys in relation to each other. This usage indicates which of the de facto standard physical layouts to which the keyboard conforms. These layouts are commonly understood.

    *Note that the 106 layout also covers the 109 Japanese layout.



    Keyboard Physical Layout should be implemented on keyboards by IHVs who make keyboards for different locations, such as Japan. Set the correct HID usage, and Windows 10 automatically detects the HID usage.

    Implementation of HID-based keyboard layouts in Windows 8.1 and earlier


    For details about the keyboard layouts supported by Windows 8.1 and earlier versions, see Windows Keyboard Layouts.

    Keyboard INF type and subtype override values


    Windows supports the following Keyboard Type and Keyboard Subtype values:

    Bus

    Keyboard description

    Compat ID

    DDInstall section in Keyboard.inf

    Keyboard

    type

    Keyboard subtype

    PS/2

    Standard

    *PNP030x

    STANDARD_Inst

    4

    0

    PS/2

    Japanese (106/109)

    *PNP0320

    106_TYPE_Inst

    7

    2

    PS/2

    Korean (101b)

    *PNP0343

    101B_TYPE_Inst

    8

    4

    PS/2

    Korean (101c)

    *PNP0344

    101C_TYPE_Inst

    8

    5

    PS/2

    Korean (103/106)

    *PNP0345

    103_TYPE_Inst

    8

    6

    HID

    Japanese (106/109)

    N/A

    HID_106_Keyboard_Inst

    7

    2

    *For more information about Type and Subtype, please see kbd.h in the Windows Driver Kit.

    Sample INF


    The following sections provide two sample INFs that show how a keyboard manufacturer can write an INF for their Korean and Japanese HID keyboards.

    Korean 101 HID Keyboard INF


    ;

    ; A sample Vendor Copyright INF File for Korean 101 HID keyboards

    ;

    ;

    [Version]



    Signature ="$Windows NT$"

    Class =Keyboard

    ClassGUID ={4D36E96B-E325-11CE-BFC1-08002BE10318}

    Provider =%VendorName%

    DriverVer =09/19/2008,6.0.0.0

    CatalogFile =VendorXYZ.cat

    [ControlFlags]

    ExcludeFromSelect=*

    ;*****************************************

    ; Install Section

    ;*****************************************

    [Manufacturer]

    %VendorName% = VendorXYZDevice,NTx86

    [VendorXYZDevice.NTx86]

    %VendorXYZ.DeviceDesc% = VendorXYZDevice_Install, HID\VID_xxxx&PID_yyyy

    [VendorXYZDevice_Install.NT]

    Include = keyboard.inf

    Needs = HID_Keyboard_Inst.NT

    [VendorXYZDevice_Install.NT.HW]

    AddReg = VendorXYZDevice.HW.AddReg

    Include = keyboard.inf

    Needs = HID_Keyboard_Inst.NT.HW

    [VendorXYZDevice.HW.AddReg]

    HKR,,"KeyboardTypeOverride",0x00010001,8

    HKR,,"KeyboardSubtypeOverride",0x00010001,4

    [VendorXYZDevice_Install.NT.Services]

    Include = keyboard.inf

    Needs = HID_Keyboard_Inst.NT.Services

    ;*****************************************

    ; Strings section

    ;*****************************************

    [Strings]

    VendorName = "Vendor XYZ"

    DiskName = "Vendor XYZ Installation Disk"

    VendorXYZ.DeviceDesc = "VendorXYZ Device"


    Japanese 106 HID Keyboard INF

    ;

    ; A sample Vendor Copyright INF File for Japanese 106 HID keyboards



    ;

    ;

    [Version]



    Signature ="$Windows NT$"

    Class =Keyboard

    ClassGUID ={4D36E96B-E325-11CE-BFC1-08002BE10318}

    Provider =%VendorName%

    DriverVer =09/19/2008,6.0.0.0

    CatalogFile =VendorXYZ.cat

    [ControlFlags]

    ExcludeFromSelect=*

    ;*****************************************

    ; Install Section

    ;*****************************************

    [Manufacturer]

    %VendorName% = VendorXYZDevice,NTx86

    [VendorXYZDevice.NTx86]

    %VendorXYZ.DeviceDesc% = VendorXYZDevice_Install, HID\VID_xxxx&PID_yyyy

    [VendorXYZDevice_Install.NT]

    Include = keyboard.inf

    Needs = HID_106_Keyboard_Inst.NT

    [VendorXYZDevice_Install.NT.HW]

    Include = keyboard.inf

    Needs = HID_106_Keyboard_Inst.NT.HW

    [VendorXYZDevice_Install.NT.Services]

    Include = keyboard.inf

    Needs = HID_106_Keyboard_Inst.NT.Services

    ;*****************************************

    ; Strings section

    ;*****************************************

    [Strings]

    VendorName = "Vendor XYZ"

    DiskName = "Vendor XYZ Installation Disk"



    VendorXYZ.DeviceDesc = "VendorXYZ Device"

    Resources


    Windows Keyboard Layouts: http://msdn.microsoft.com/en-us/goglobal/bb964651.aspx

    Touch, Input, and HID: Architecture and Driver Support: http://msdn.microsoft.com/en-us/library/windows/hardware/gg487435.aspx

    HID Usage Table: http://www.usb.org/developers/hidpage/HUTRR42c.pdf

    Download 104.48 Kb.
    1   2




    Download 104.48 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Windows Keyboard Layouts March 17, 2015

    Download 104.48 Kb.