Меню

Настройка правого стика в реестре

Данные реестра для игровых устройств управления Registry data for game controllers

Данный раздел предназначен для производителей игровых устройств, совместимых с Windows 10, и не применим для большинства разработчиков. This topic is meant for manufacturers of Windows 10-compatible game controllers, and doesn’t apply to the majority of developers.

Пространство имен Windows.Gaming.Input позволяет независимым поставщикам оборудования (IHV) добавлять данные в реестр компьютера, чтобы их устройства отображались как элементы Gamepad, RacingWheel, ArcadeStick, FlightStick и UINavigationController соответствующим образом. The Windows.Gaming.Input namespace allows independent hardware vendors (IHVs) to add data to the PC’s registry, enabling their devices to appear as Gamepads, RacingWheels, ArcadeSticks, FlightSticks, and UINavigationControllers as appropriate. Все независимые поставщики оборудования должны добавить эти данные для совместимых контроллеров. All IHVs should add this data for their compatible controllers. Таким образом все игры UWP (и любые классические игры, которые используют API WinRT) смогут поддерживать ваше игровое устройство управления. By doing this, all UWP games (and any desktop games that use the WinRT API) will be able to support your game controller.

Схема сопоставления Mapping scheme

Сопоставления для устройств с идентификатором поставщика (VID) VVVV, кодом продукта (PID) PPPP, страницей использования UUUU и идентификатором использования XXXX будут извлечены из этого расположения в реестре: Mappings for a device with Vendor ID (VID) VVVV, Product ID (PID) PPPP, Usage Page UUUU, and Usage ID XXXX, will be read out from this location in the registry:

В таблице ниже приведены ожидаемые значения в корневой папке устройства: The table below explains the expected values under the device root location:

Указывает, что конкретное устройство должно быть отключено. Indicates that this particular device should be disabled.

Установщик устройства должен добавить эти данные в реестр (с помощью программы установки или INF-файла). Your device installer should add this data to the registry (either via setup or an INF file).

Подразделы корневой папки устройства подробно описаны в следующих разделах. Subkeys under the device root location are detailed in the following sections.

Геймпад Gamepad

В таблице ниже приведены обязательные и необязательные подразделы в разделе Gamepad: The table below lists the required and optional subkeys under the Gamepad subkey:

Имя Name Тип Type Обязательно? Required? Сведения Info
Выключено Disabled DWORD DWORD Нет No
Подраздел Subkey Необходим? Required? Сведения Info
Меню Menu Да Yes См. раздел Сопоставление кнопок. See Button mapping
Представление View Да Yes
Объект A Да Yes
B B Да Yes
X X Да Yes
Да Y Да Yes
LeftShoulder LeftShoulder Да Yes
RightShoulder RightShoulder Да Yes
LeftThumbstickButton LeftThumbstickButton Да Yes
RightThumbstickButton RightThumbstickButton Да Yes
DPadUp DPadUp Да Yes
DPadDown DPadDown Да Yes
DPadLeft DPadLeft Да Yes
DPadRight DPadRight Да Yes
Paddle1 Paddle1 Нет No
Paddle2 Paddle2 Нет No
Paddle3 Paddle3 Нет No
Paddle4 Paddle4 Нет No
LeftTrigger LeftTrigger Да Yes См. разделе Сопоставление осей See Axis mapping
RightTrigger RightTrigger Да Yes
LeftThumbstickX LeftThumbstickX Да Yes
LeftThumbstickY LeftThumbstickY Да Yes
RightThumbstickX RightThumbstickX Да Yes
RightThumbstickY RightThumbstickY Да Yes

Если вы добавляете игровое устройство как поддерживаемый Gamepad, настоятельно рекомендуется также добавить его как поддерживаемый UINavigationController. If you add your game controller as a supported Gamepad, we highly recommend that you also add it as a supported UINavigationController.

RacingWheel RacingWheel

В таблице ниже приведены обязательные и необязательные подразделы в разделе RacingWheel: The table below lists the required and optional subkeys under the RacingWheel subkey:

Подраздел Subkey Необходим? Required? Сведения Info
PreviousGear PreviousGear Да Yes См. раздел Сопоставление кнопок. See Button mapping
NextGear NextGear Да Yes
DPadUp DPadUp Нет No
DPadDown DPadDown Нет No
DPadLeft DPadLeft Нет No
DPadRight DPadRight Нет No
Button1 Button1 Нет No
Button2 Button2 Нет No
Button3 Button3 Нет No
Button4 Button4 Нет No
Button5 Button5 Нет No
Button6 Button6 Нет No
Button7 Button7 Нет No
Button8 Button8 Нет No
Button9 Button9 Нет No
Button10 Button10 Нет No
Button11 Button11 Нет No
Button12 Button12 Нет No
Button13 Button13 Нет No
Button14 Button14 Нет No
Button15 Button15 Нет No
Button16 Button16 Нет No
FirstGear FirstGear Нет No
SecondGear SecondGear Нет No
ThirdGear ThirdGear Нет No
FourthGear FourthGear Нет No
FifthGear FifthGear Нет No
SixthGear SixthGear Нет No
SeventhGear SeventhGear Нет No
ReverseGear ReverseGear Нет No
Wheel Wheel Да Yes См. разделе Сопоставление осей See Axis mapping
Регулирование Throttle Да Yes
Brake Brake Да Yes
Clutch Clutch Нет No
Handbrake Handbrake Нет No
MaxWheelAngle MaxWheelAngle Да Yes См. раздел Сопоставление свойств See Properties mapping

ArcadeStick ArcadeStick

В таблице ниже приведены обязательные и необязательные подразделы в разделе ArcadeStick: The table below lists the required and optional subkeys under the ArcadeStick subkey:

Подраздел Subkey Необходим? Required? Сведения Info
Action1 Action 1 Да Yes См. раздел Сопоставление кнопок. See Button mapping
Action2 Action2 Да Yes
Action3 Action3 Да Yes
Action4 Action4 Да Yes
Action5 Action5 Да Yes
Action6 Action6 Да Yes
Special1 Special1 Да Yes
Special2 Special2 Да Yes
StickUp StickUp Да Yes
StickDown StickDown Да Yes
StickLeft StickLeft Да Yes
StickRight StickRight Да Yes

FlightStick FlightStick

В таблице ниже приведены обязательные и необязательные подразделы в разделе FlightStick: The table below lists the required and optional subkeys under the FlightStick subkey:

Подраздел Subkey Необходим? Required? Сведения Info
FirePrimary FirePrimary Да Yes См. раздел Сопоставление кнопок. See Button mapping
FireSecondary FireSecondary Да Yes
Roll Roll Да Yes См. разделе Сопоставление осей See Axis mapping
Высота тона Pitch Да Yes
Yaw Yaw Да Yes
Регулирование Throttle Да Yes
HatSwitch HatSwitch Да Yes См. раздел Сопоставление переключателей See Switch mapping

UINavigation UINavigation

В таблице ниже приведены обязательные и необязательные подразделы в разделе UINavigation: The table below lists the required and optional subkeys under UINavigation subkey:

Подраздел Subkey Необходим? Required? Сведения Info
Меню Menu Да Yes См. раздел Сопоставление кнопок. See Button mapping
Представление View Да Yes
Принять Accept Да Yes
Отменить Cancel Да Yes
PrimaryUp PrimaryUp Да Yes
PrimaryDown PrimaryDown Да Yes
PrimaryLeft PrimaryLeft Да Yes
PrimaryRight PrimaryRight Да Yes
Context1 Context1 Нет No
Context2 Context2 Нет No
Context3 Context3 Нет No
Context4 Context4 Нет No
PAGE UP PageUp Нет No
PAGE DOWN PageDown Нет No
PageLeft PageLeft Нет No
PageRight PageRight Нет No
ScrollUp ScrollUp Нет No
ScrollDown ScrollDown Нет No
ScrollLeft ScrollLeft Нет No
ScrollRight ScrollRight Нет No
SecondaryUp SecondaryUp Нет No
SecondaryDown SecondaryDown Нет No
SecondaryLeft SecondaryLeft Нет No
SecondaryRight SecondaryRight Нет No

Дополнительные сведения о контроллерах навигации пользовательского интерфейса и указанных выше командах см. в разделе Контроллер навигации в пользовательском интерфейсе. For more information about UI navigation controllers and the above commands, see UI navigation controller.

Ключи Keys

Далее описывается содержимое каждого подраздела в разделах Gamepad, RacingWheel, ArcadeStick, FlightStick и UINavigation. The following sections explain the contents of each of the subkeys under the Gamepad, RacingWheel, ArcadeStick, FlightStick, and UINavigation keys.

Сопоставление кнопок Button mapping

В таблице ниже приведены значения, которые необходимы для сопоставления кнопки. The table below lists the values that are needed to map a button. Например, если при нажатии DPadUp на игровом устройстве управления сопоставление DPadUp должно содержать значение ButtonIndex (значение SourceButton). For example, if pressing DPadUp on the game controller, the mapping for DPadUp should contain the ButtonIndex value (Source is Button). Если DPadUp необходимо сопоставить с положением переключателя, то сопоставление DPadUp должно содержать значения SwitchIndex и SwitchPosition (значение SourceSwitch). If DPadUp needs to be mapped from a switch position, then the DPadUp mapping should contain the values SwitchIndex and SwitchPosition (Source is Switch).

Определяет размер окна вокруг значения ThresholdPercent, которое используется для устранения ложного срабатывания обнаруженного состояния кнопки. Defines the size of a window around the ThresholdPercent value, which is used to debounce the reported button state. Допустимый диапазон значений — от 0 до 100. The valid range of values is 0 to 100. Переход между состояниями кнопки возможен, только если значение оси выходит за верхнюю или нижнюю границу окна между моментом. Button state transitions can only occur when the axis value crosses the upper or lower boundaries of the debounce window. Например, если ThresholdPercent имеет значение 50, а DebouncePercent — 10, то границами окна между моментом будет 45 % и 55 % от полных значений диапазона оси. For example, a ThresholdPercent of 50 and DebouncePercent of 10 results in debounce boundaries at 45% and 55% of the full-range axis values. Кнопка не может перейти в нажатое состояние, пока значение оси не достигнет 55 % или не превысит это значение, и не может перейти в отпущенное состояние, пока значение оси не достигнет 45 % или меньшего значения. The button can’t transition to the pressed state until the axis value reaches 55% or above, and it can’t transition back to the released state until the axis value reaches 45% or below.

Вычисленные границы окна между моментом находятся в диапазоне от 0 % до 100 %. The computed debounce window boundaries are clamped between 0% and 100%. Например, пороговое значение 5 % и окно между моментом 20 % приведут к тому, что границы окна между моментом станут равны 0 % и 15 %. For example, a threshold of 5% and a debounce window of 20% would result in the debounce window boundaries falling at 0% and 15%. Состояние кнопки для значений оси 0 % и 100 % всегда отображаются как отпущенное и нажатое соответственно независимо от порогового значения и значения между моментом. The button state for axis values of 0% and 100% are always reported as released and pressed, respectively, regardless of the threshold and debounce values.

Указывает положение переключателя, в котором сопоставленная кнопка сообщит о нажатии. Indicates the switch position that will cause the mapped button to report that it’s being pressed. Значением положений может быть одна из этих строк: The position values can be one of these strings:

Сопоставление осей Axis mapping

В таблице ниже приведены значения, которые необходимы для сопоставления оси. The table below lists the values that are needed to map an axis:

Источник Source Имя значения Value name Тип значения Value type Необходим? Required? Сведения о значении Value info
Кнопка Button ButtonIndex ButtonIndex DWORD DWORD Да Yes Индекс в массиве кнопок RawGameController. Index in the RawGameController button array.
Ось Axis AxisIndex AxisIndex DWORD DWORD Да Yes Индекс в массиве осей RawGameController. Index in the RawGameController axis array.
Invert Invert DWORD DWORD Нет No Указывает, что значение оси следует инвертировать перед применением коэффициентов ThresholdPercent и DebouncePercent. Indicates that the axis value should be inverted before the Threshold Percent and DebouncePercent factors are applied.
ThresholdPercent ThresholdPercent DWORD DWORD Да Yes Указывает положение оси, в котором сопоставленное значение кнопки переходит между состоянием «нажато» и «отпущено». Indicates the axis position at which the mapped button value transitions between the pressed and released states. Допустимый диапазон значений — от 0 до 100. The valid range of values is 0 to 100. Кнопка считается нажатой, если значение оси больше или равно этому значению. The button is considered pressed if the axis value is greater than or equal to this value.
DebouncePercent DebouncePercent DWORD DWORD Да Yes
Коммутатор Switch SwitchIndex SwitchIndex DWORD DWORD Да Yes Индекс в массиве переключателей RawGameController. Index in the RawGameController switch array.
SwitchPosition SwitchPosition REG_SZ REG_SZ Да Yes

Индекс в массиве кнопок RawGameController, который преобразуется в сопоставленное однонаправленное значение оси. Index in the RawGameController button array which gets translated to the mapped unidirectional axis value.

Источник Source Имя значения Value name Тип значения Value type Необходим? Required? Сведения о значении Value info
Кнопка Button MaxValueButtonIndex MaxValueButtonIndex DWORD DWORD Да Yes
MaxButton MaxButton AxisValue AxisValue
FALSE FALSE 0,0 0.0
TRUE TRUE 1.0 1.0
MinValueButtonIndex MinValueButtonIndex DWORD DWORD Нет No

Указывает, что сопоставленная ось двунаправленная. Indicates that the mapped axis is bidirectional. Значения MaxButton и MinButton объединяются в одну двунаправленную ось, как показано ниже. Values of MaxButton and MinButton are combined into a single bidirectional axis as shown below.

MinButton MinButton MaxButton MaxButton AxisValue AxisValue
FALSE FALSE FALSE FALSE 0,5 0.5
FALSE FALSE TRUE TRUE 1.0 1.0
TRUE TRUE FALSE FALSE 0,0 0.0
TRUE TRUE TRUE TRUE 0,5 0.5
Ось Axis AxisIndex AxisIndex DWORD DWORD Да Yes Индекс в массиве осей RawGameController. Index in the RawGameController axis array. Invert Invert DWORD DWORD Нет No Указывает, что сопоставленное значение оси следует инвертировать перед возвратом. Indicates that the mapped axis value should be inverted before it’s returned. Коммутатор Switch SwitchIndex SwitchIndex DWORD DWORD Да Yes Индекс в массиве переключателей RawGameController. Index in the RawGameController switch array. MaxValueSwitchPosition MaxValueSwitchPosition REG_SZ REG_SZ Да Yes

Одна из следующих строк: One of the following strings:

Указывает положение переключателя, в котором сопоставленное значение оси отображается как равное 1,0. It indicates the position of the switch that causes the mapped axis value to be reported as 1.0. Противоположное направление MaxValueSwitchPosition считается равным 0,0. The opposing direction of MaxValueSwitchPosition is treated as 0.0. Например, если значение MaxValueSwitchPosition равно Up, значение оси преобразуется, как показано ниже: For example, if MaxValueSwitchPosition is Up, the axis value translation is shown below:

Положение переключателя Switch position AxisValue AxisValue
Up Up 1.0 1.0
Center Center 0,5 0.5
Down Down 0,0 0.0
IncludeAdjacent IncludeAdjacent DWORD DWORD Нет No

Указывает, что в смежных положениях переключателя сопоставленная ось также сообщит значение 1,0. Indicates that adjacent switch positions will also cause the mapped axis to report 1.0. В примере выше, если установлено значение IncludeAdjacent, преобразование оси выполняется следующим образом: In the above example, if IncludeAdjacent is set, then the axis translation is done as follows:

Положение переключателя Switch position AxisValue AxisValue
Up Up 1.0 1.0
UpRight UpRight 1.0 1.0
UpLeft UpLeft 1.0 1.0
Center Center 0,5 0.5
Down Down 0,0 0.0
DownRight DownRight 0,0 0.0
DownLeft DownLeft 0,0 0.0

Сопоставление переключателей Switch mapping

Положения переключателя могут быть сопоставлены с набором кнопок в массиве кнопок RawGameController или с индексом в массиве переключателей. Switch positions can be mapped either from a set of buttons in the buttons array of the RawGameController or from an index in the switches array. Переключения положений не могут быть сопоставлены с осями. Switch positions can’t be mapped from axes.

Смещает начальную точку передачи сведений о положении на указанную величину. Shifts the starting point of how positions are reported by the specified amount. PositionBias всегда учитывается по часовой стрелке от исходной начальной точки и применяется перед изменением порядка значений на обратный. PositionBias is always counted clockwise from the original starting point, and is applied before the order of values is reversed.

Например, переключатель, который сообщает о положениях начиная с DownRight против часовой стрелки, можно нормализовать, указав флаг Invert и присвоив PositionBias значение 5: For example, a switch that reports positions starting with DownRight in counter-clockwise order can be normalized by setting the Invert flag and specifying a PositionBias of 5:

Источник Source Имя значения Value name Тип значения Value type Сведения о значении Value info
Кнопка Button ButtonCount ButtonCount DWORD DWORD 2, 4 или 8 2, 4, or 8
SwitchKind SwitchKind REG_SZ REG_SZ TwoWay, фаурвайили еигхтвай TwoWay, FourWay, or EightWay
UpButtonIndex UpButtonIndex DWORD DWORD См. раздел Значения \*ButtonIndex See \*ButtonIndex values
DownButtonIndex DownButtonIndex DWORD DWORD
LeftButtonIndex LeftButtonIndex DWORD DWORD
RightButtonIndex RightButtonIndex DWORD DWORD
UpRightButtonIndex UpRightButtonIndex DWORD DWORD
DownRightButtonIndex DownRightButtonIndex DWORD DWORD
DownLeftButtonIndex DownLeftButtonIndex DWORD DWORD
UpLeftButtonIndex UpLeftButtonIndex DWORD DWORD
Ось Axis SwitchKind SwitchKind REG_SZ REG_SZ TwoWay, FourWay или EightWay TwoWay, FourWay, or EightWay
XAxisIndex XAxisIndex DWORD DWORD YAxisIndex всегда присутствует. YAxisIndex is always present. XAxisIndex присутствует, только если SwitchKind имеет значение FourWay или EightWay. XAxisIndex is only present when SwitchKind is FourWay or EightWay.
YAxisIndex YAxisIndex DWORD DWORD
XDeadZonePercent XDeadZonePercent DWORD DWORD Указывает размер мертвой зоны вокруг центрального положения осей. Indicate the size of the dead zone around the center position of the axes.
YDeadZonePercent YDeadZonePercent DWORD DWORD
XDebouncePercent XDebouncePercent DWORD DWORD Определите размер окон вокруг верхнего и нижнего ограничения мертвой зоны, которые используются для устранения ложного срабатывания переданного состояния переключателя. Define the size of the windows around the upper and lower dead zone limits, which are used to de-bounce the reported switch state.
YDebouncePercent YDebouncePercent DWORD DWORD
XInvert XInvert DWORD DWORD Указывает, что соответствующие значения оси следует инвертировать перед применением вычислений мертвой зоны и окна между моментом. Indicate that the corresponding axis values should be inverted before the dead zone and debounce window calculations are applied.
YInvert YInvert DWORD DWORD
Коммутатор Switch SwitchIndex SwitchIndex DWORD DWORD Индекс в массиве переключателей RawGameController. Index in the RawGameController switch array.
Invert Invert DWORD DWORD Указывает, что переключатель сообщает о положении против часовой стрелки, а не по часовой стрелке. Indicates that the switch reports its positions in a counter-clockwise order, rather than the default clockwise order.
PositionBias PositionBias DWORD DWORD
Положение Position Переданное значение Reported value После установки флагов PositionBias и Invert After PositionBias and Invert flags
DownRight DownRight 0 0 3 3
Правый Right 1 1 2 2
UpRight UpRight 2 2 1 1
Up Up 3 3 0 0
UpLeft UpLeft 4 4 7 7
Левый Left 5 5 6 6
DownLeft DownLeft 6 6 5 5
Down Down 7 7 4 4

Значения *ButtonIndex *ButtonIndex values

*Буттониндекс значения индекса в массив кнопок равгамеконтроллер: *ButtonIndex values index into the RawGameController‘s button array:

Сопоставление свойств Properties mapping

Это статическое сопоставление значений для различных типов сопоставления. These are static mapping values for different mapping types.

Метки Labels

Метки должны находиться в разделе Labels в корневом каталоге устройства. Labels should be present under the Labels key under the device root. В разделе Labels может быть три подраздела: Buttons, Axes и Switches. Labels can have 3 subkeys: Buttons, Axes, and Switches.

Метки кнопок Button labels

Раздел Buttons сопоставляет каждую позицию кнопки в массиве кнопок RawGameController со строкой. The Buttons key maps each of the button positions in the RawGameController‘s buttons array to a string. Каждая строка внутренне сопоставляется с соответствующим значением перечисления GameControllerButtonLabel. Each string is mapped internally to the corresponding GameControllerButtonLabel enum value. Например, если на геймпаде 10 кнопок и RawGameController анализирует кнопки и представляет их в отчете о кнопках в следующем порядке: For example, if a gamepad has ten buttons and the order in which the RawGameController parses out the buttons and presents them in the buttons report is like this:

Метки в разделе Buttons должны отображаться в следующем порядке: The labels should appear in this order under the Buttons key:

Имя Name Значение (тип: REG_SZ) Value (type: REG_SZ)
Button0 Button0 Меню Menu
Button1 Button1 Представление View
Button2 Button2 LeftStickButton LeftStickButton
Button3 Button3 RightStickButton RightStickButton
Button4 Button4 LetterA LetterA
Button5 Button5 LetterB LetterB
Button6 Button6 LetterX LetterX
Button7 Button7 LetterY LetterY
Button8 Button8 LeftBumper LeftBumper
Button9 Button9 RightBumper RightBumper

Метки осей Axis labels

Раздел Axes сопоставляет каждую позицию оси в массиве осей RawGameController с одной из меток в перечислении перечисления GameControllerButtonLabel, как и метки кнопок. The Axes key will map each of the axis positions in the RawGameController‘s axis array to one of the labels listed in GameControllerButtonLabel Enum just like the button labels. См. пример в разделе Метки кнопок. See the example in Button labels.

Метки переключателей Switch labels

Раздел Switches сопоставляет положения переключателей с метками. The Switches key maps switch positions to labels. Для значений используется следующее соглашение об именовании: чтобы получить метку положения переключателя с индексом x в массиве переключателей RawGameController, добавьте эти значения в подраздел Switches: The values follow this naming convention: to label a position of a switch, whose index is x in the RawGameController‘s switch array, add these values under the Switches subkey:

В следующей таблице привет пример набора меток для положения 4-позиционного переключателя, которые отображаются с индексом 0 в RawGameController: The following table shows an example set of labels for switch positions of a 4-way switch which shows up at index 0 in the RawGameController:

Имя Name Значение (тип: REG_SZ) Value (type: REG_SZ)
Switch0Up Switch0Up XboxUp XboxUp
Switch0Right Switch0Right XboxRight XboxRight
Switch0Down Switch0Down XboxDown XboxDown
Switch0Left Switch0Left XboxLeft XboxLeft

Пример файла реестра Example registry file

Вот приведен пример сопоставлений и значений в файле реестра для универсального элемента управления RacingWheel: To show how all of these mappings and values come together, here is an example registry file for a generic RacingWheel:

Источник

Читайте также:  Настройка приставки mag 254