게임패드 맵핑 프로그램 - geimpaedeu maebping peulogeulaem

주요 콘텐츠로 건너뛰기

이 브라우저는 더 이상 지원되지 않습니다.

최신 기능, 보안 업데이트, 기술 지원을 이용하려면 Microsoft Edge로 업그레이드하세요.

게임 컨트롤러의 레지스트리 데이터

  • 아티클
  • 09/24/2022
  • 읽는 데 17분 걸림

이 문서의 내용

참고

이 항목은 Windows 10 호환 게임 컨트롤러 제조업체를 위해 준비된 것으로 대부분의 개발자에게는 적용되지 않습니다.

Windows.Gaming.Input namespace를 사용하면 IHV(독립 하드웨어 공급업체)는 PC 레지스트리에 데이터를 추가하여 디바이스가 Gamepads, RacingWheels, ArcadeSticks, FlightSticks 및 UINavigationControllers에 적절하게 표시되도록 할 수 있습니다. 모든 IHV는 호환 컨트롤러에 대한 이 데이터를 추가해야 합니다. 이렇게 하면 모든 UWP 게임(및 WinRT API를 사용하는 모든 데스크톱 게임)이 게임 컨트롤러를 지원할 수 있습니다.

매핑 구성표

공급자 ID(VID)가 VVVV이고 제품 ID(PID)가 PPPP이고 사용 페이지가 UUUU이고 사용 ID가 XXXX인 디바이스의 매핑은 레지스트리의 이 위치에서 읽습니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\VVVVPPPPUUUUXXXX

아래 표에서는 디바이스 루트 위치 아래에 예상되는 값을 설명합니다.

NameType필수 여부정보
사용 안 함 DWORD 아니요

이 특정 디바이스를 사용하지 않도록 설정해야 함을 나타냅니다.

  • 0: 디바이스가 사용하지 않도록 설정되지 않았습니다.
  • 1: 디바이스를 사용하지 않도록 설정했습니다.
설명 REG_SZ 아니요 디바이스에 대한 간단한 설명입니다.

디바이스 설치 관리자가 이 데이터를 레지스트리에 추가해야 합니다(설치 또는 INF 파일을 통해).

디바이스 루트 위치의 하위 키에 대한 내용은 다음 섹션에 자세히 설명되어 있습니다.

게임 패드

아래 표에는 Gamepads 하위 키의 필수 하위 키와 선택적 하위 키가 나열되어 있습니다.

하위 키필수 여부정보
메뉴 단추 매핑 참조
보기
A
B
X
Y
LeftShoulder
RightShoulder
LeftThumbstickButton
RightThumbstickButton
DPadUp
DPadDown
DPadLeft
DPadRight
Paddle1 아니요
Paddle2 아니요
Paddle3 아니요
Paddle4 아니요
LeftTrigger 축 매핑 참조
RightTrigger
LeftThumbstickX
LeftThumbstickY
RightThumbstickX
RightThumbstickY

참고

지원되는 게임 패드로 게임 컨트롤러를 추가하는 경우 게임 컨트롤러를 UINavigationController로도 추가할 것을 강력하게 권장합니다.

RacingWheel

아래 표에는 RacingWheel 하위 키의 필수 하위 키와 선택적 하위 키가 나열되어 있습니다.

하위 키필수 여부정보
PreviousGear 단추 매핑 참조
NextGear
DPadUp 아니요
DPadDown 아니요
DPadLeft 아니요
DPadRight 아니요
Button1 아니요
Button2 아니요
Button3 아니요
Button4 아니요
Button5 아니요
Button6 아니요
Button7 아니요
Button8 아니요
Button9 아니요
Button10 아니요
Button11 아니요
Button12 아니요
Button13 아니요
Button14 아니요
Button15 아니요
Button16 아니요
FirstGear 아니요
SecondGear 아니요
ThirdGear 아니요
FourthGear 아니요
FifthGear 아니요
SixthGear 아니요
SeventhGear 아니요
ReverseGear 아니요
축 매핑 참조
제한
Brake
Clutch 아니요
Handbrake 아니요
MaxWheelAngle 속성 매핑 참조

ArcadeStick

아래 표에는 ArcadeStick 하위 키의 필수 하위 키와 선택적 하위 키가 나열되어 있습니다.

하위 키필수 여부정보
작업 1 단추 매핑 참조
작업 2
작업 3
작업 4
Action5
Action6
Special1
Special2
StickUp
StickDown
StickLeft
StickRight

FlightStick

아래 표에는 FlightStick 하위 키의 필수 하위 키와 선택적 하위 키가 나열되어 있습니다.

하위 키필수 여부정보
FirePrimary 단추 매핑 참조
FireSecondary
Roll 축 매핑 참조
피치
Yaw
제한
HatSwitch 스위치 매핑 참조

UINavigation

아래 표에는 UINavigation 하위 키의 필수 하위 키와 선택적 하위 키가 나열되어 있습니다.

하위 키필수 여부정보
메뉴 단추 매핑 참조
보기
동의함
취소
PrimaryUp
PrimaryDown
PrimaryLeft
PrimaryRight
컨텍스트 1 아니요
컨텍스트 2 아니요
Context3 아니요
Context4 아니요
PageUp 아니요
PageDown 아니요
PageLeft 아니요
PageRight 아니요
ScrollUp 아니요
ScrollDown 아니요
ScrollLeft 아니요
ScrollRight 아니요
SecondaryUp 아니요
SecondaryDown 아니요
SecondaryLeft 아니요
SecondaryRight 아니요

UI 탐색 컨트롤러 및 위의 명령에 대한 자세한 내용은 UI 탐색 컨트롤러를 참조하세요.

구성

다음 섹션에서는 Gamepad, RacingWheel, ArcadeStick, FlightStickUINavigation 키의 각 하위 키 콘텐츠에 대해 설명합니다.

단추 매핑

아래 표에는 단추 매핑에 필요한 값이 나열되어 있습니다. 예를 들어 게임 컨트롤러에서 DPadUp을 누르면 DPadUp에 대한 매핑에 ButtonIndex 값이 포함되어야 합니다(원본단추임). DPadUp를 스위치 위치에서 매핑해야 하는 경우 DPadUp 매핑에 SwitchIndexSwitchPosition 값이 포함되어야 합니다(원본스위치임).

원본값 이름값 형식필수 여부값 정보
단추 ButtonIndex DWORD RawGameController 단추 배열의 인덱스입니다.
AxisIndex DWORD RawGameController 축 배열의 인덱스입니다.
반전 DWORD 아니요 임계값 백분율DebouncePercent 요소가 적용되기 전에 축 값을 반전해야 함을 나타냅니다.
ThresholdPercent DWORD 매핑된 단추 값이 손가락으로 누른 상태와 손가락을 뗀 상태 사이에서 전환되는 축 위치를 나타냅니다. 값의 유효한 범위는 0~100입니다. 축 값이 이 값보다 크거나 같으면 단추가 눌린 것으로 간주됩니다.
DebouncePercent DWORD

ThresholdPercent 값 근처의 창 크기를 정의하며, 이 값은 보고된 단추 상태를 디바운스하는 데 사용됩니다. 값의 유효한 범위는 0~100입니다. 축 값이 디바운스 창의 상한 경계 또는 하한 경계를 넘을 때만 단추 상태 전환이 발생할 수 있습니다. 예를 들어 ThresholdPercent가 50이고 DebouncePercent가 10이면 디바운스 경계는 45%, 전체 범위 축 값은 55%입니다. 축 값이 55% 또는 그 이상으로 높아지지 않으면 단추가 눌린 상태로 전환될 수 없고, 축 값이 45% 또는 그 아래로 떨어지지 않으면 단추가 다시 손가락을 뗀 상태로 전환될 수 없습니다.

계산된 디바운스 창 경계는 0%에서 100% 사이로 고정됩니다. 예를 들어 임계값이 5%이고 디바운스 창이 20%이면 디바운스 창 경계는 0%와 15%에서 생성됩니다. 축 값이 0%일 때와 100%일 때의 단추 상태는 임계값 및 디바운스 값에 관계없이 항상 각각 손가락을 뗀 상태와 손가락으로 누른 상태로 보고됩니다.

스위치 SwitchIndex DWORD RawGameController 스위치 배열의 인덱스입니다.
SwitchPosition REG_SZ

매핑된 단추 상태가 손가락으로 누른 상태로 보고되는 스위치 위치를 나타냅니다. 위치 값은 다음 문자열 중 하나일 수 있습니다.

  • 위로
  • UpRight
  • 오른쪽
  • DownRight
  • 아래로
  • DownLeft
  • 왼쪽
  • UpLeft
IncludeAdjacent DWORD 아니요 마찬가지로 매핑된 단추 상태가 손가락으로 누른 상태로 보고되는 인접 스위치 위치를 나타냅니다.

축 매핑

아래 표에는 축 매핑에 필요한 값이 나열되어 있습니다.

원본값 이름값 형식필수 여부값 정보
단추 MaxValueButtonIndex DWORD

매핑된 단방향 축 값으로 변환되는 RawGameController 단추 배열의 인덱스입니다.

MaxButtonAxisValue
FALSE 0.0
TRUE 1.0
MinValueButtonIndex DWORD 아니요

매핑된 축이 양방향임을 나타냅니다. 아래와 같이 MaxButtonMinButton 값이 단일 양방향 축에 결합됩니다.

MinButtonMaxButtonAxisValue
FALSE FALSE 0.5
FALSE TRUE 1.0
TRUE FALSE 0.0
TRUE TRUE 0.5
AxisIndex DWORD RawGameController 축 배열의 인덱스입니다.
반전 DWORD 아니요 매핑된 축 값을 반환하기 전에 먼저 반전해야 함을 나타냅니다.
스위치 SwitchIndex DWORD RawGameController 스위치 배열의 인덱스입니다.
MaxValueSwitchPosition REG_SZ

Key, Input, Predict, PredictOnly, None

  • 위로
  • UpRight
  • 오른쪽
  • DownRight
  • 아래로
  • DownLeft
  • 왼쪽
  • UpLeft

매핑된 축 값이 1.0으로 보고되는 스위치 위치를 나타냅니다. MaxValueSwitchPosition의 반대 방향은 0.0으로 처리됩니다. 예를 들어 MaxValueSwitchPositionUp이면 축 값 변환은 아래와 같습니다.

스위치 위치AxisValue
위로 1.0
Center 0.5
아래로 0.0
IncludeAdjacent DWORD 아니요

마찬가지로 매핑된 축 값이 1.0으로 보고되는 인접 스위치 위치를 나타냅니다. 위의 예에서 IncludeAdjacent가 설정되면 축 변환은 다음과 같습니다.

스위치 위치AxisValue
위로 1.0
UpRight 1.0
UpLeft 1.0
Center 0.5
아래로 0.0
DownRight 0.0
DownLeft 0.0

스위치 매핑

RawGameController의 단추 배열에 있는 단추 세트에서 또는 스위치 배열의 인덱스에서 스위치 위치를 매핑할 수 있습니다. 축에서는 스위치 위치를 매핑할 수 없습니다.

원본값 이름값 형식값 정보
단추 ButtonCount DWORD 2, 4 또는 8
SwitchKind REG_SZ TwoWay, FourWay 또는 EightWay
UpButtonIndex DWORD *ButtonIndex 값 참조
DownButtonIndex DWORD
LeftButtonIndex DWORD
RightButtonIndex DWORD
UpRightButtonIndex DWORD
DownRightButtonIndex DWORD
DownLeftButtonIndex DWORD
UpLeftButtonIndex DWORD
SwitchKind REG_SZ TwoWay, FourWay 또는 EightWay
XAxisIndex DWORD YAxisIndex는 항상 있습니다. XAxisIndexSwitchKindFourWay 또는 EightWay인 경우에만 있습니다.
YAxisIndex DWORD
XDeadZonePercent DWORD 축 중앙 위치 주변의 데드존 크기를 나타냅니다.
YDeadZonePercent DWORD
XDebouncePercent DWORD 데드존 상한 및 하한 근처의 창 크기를 정의하며, 보고된 스위치 상태를 디바운스하는 데 사용됩니다.
YDebouncePercent DWORD
XInvert DWORD 데드존 및 디바운스 창 계산을 적용하기 전에 해당하는 축 값을 반전해야 함을 나타냅니다.
YInvert DWORD
스위치 SwitchIndex DWORD RawGameController 스위치 배열의 인덱스입니다.
반전 DWORD 스위치가 자신의 위치를 기본 시계 방향 순서가 아닌 시계 반대 방향 순서로 보고함을 나타냅니다.
PositionBias DWORD

위치 보고 방식의 시작점을 지정된 양만큼 이동합니다. PositionBias는 항상 원래 시작점에서 시계 방향으로 계산되며 값 순서를 반전하기 전에 적용됩니다.

예를 들어 DownRight부터 시작하여 시계 반대 방향 순서로 위치를 보고하는 스위치는 반전 플래그를 설정하고 PositionBias를 5로 지정하여 정규화할 수 있습니다.

위치보고된 값PositionBias 및 반전 플래그 후
DownRight 0 3
오른쪽 1 2
UpRight 2 1
위로 3 0
UpLeft 4 7
왼쪽 5 6
DownLeft 6 5
아래로 7 4

*ButtonIndex 값

\*ButtonIndex 값은 RawGameController의 단추 배열로 인덱싱:

ButtonCountSwitchKindRequiredMappings
2 TwoWay
  • UpButtonIndex
  • DownButtonIndex
4 FourWay
  • UpButtonIndex
  • DownButtonIndex
  • LeftButtonIndex
  • RightButtonIndex
4 EightWay
  • UpButtonIndex
  • DownButtonIndex
  • LeftButtonIndex
  • RightButtonIndex
8 EightWay
  • UpButtonIndex
  • DownButtonIndex
  • LeftButtonIndex
  • RightButtonIndex
  • UpRightButtonIndex
  • DownRightButtonIndex
  • DownLeftButtonIndex
  • UpLeftButtonIndex

속성 매핑

다음은 여러 매핑 유형에 대한 정적 매핑 값입니다.

매핑값 이름값 형식값 정보
RacingWheel MaxWheelAngle DWORD 휠에서 한 방향으로 지원되는 최대 물리적 휠 각도를 나타냅니다. 예를 들어 -90도부터 90도까지 회전할 수 있는 휠은 90을 지정합니다.

레이블

레이블은 디바이스 루트의 레이블 아래에 있어야 합니다. 레이블단추, , 스위치의 3개 하위 키를 가질 수 있습니다.

단추 레이블

단추 키는 RawGameController 단추 배열의 각 단추 위치를 문자열에 매핑합니다. 각 문자열은 해당하는 GameControllerButtonLabel 열거형 값에 내부적으로 매핑됩니다. 예를 들어 게임 패드에 단추가 10개 있을 때 RawGameController가 단추를 구문 분석하고 단추 보고서에 단추를 표시하는 순서는 다음과 같습니다.

Menu,               // Index 0
View,               // Index 1
LeftStickButton,    // Index 2
RightStickButton,   // Index 3
LetterA,            // Index 4
LetterB,            // Index 5
LetterX,            // Index 6
LetterY,            // Index 7
LeftBumper,         // Index 8
RightBumper         // Index 9

레이블이 단추 키 아래에 다음과 같은 순서로 표시됩니다.

속성값(형식: REG_SZ)
Button0 메뉴
Button1 보기
Button2 LeftStickButton
Button3 RightStickButton
Button4 LetterA
Button5 LetterB
Button6 LetterX
Button7 LetterY
Button8 LeftBumper
Button9 RightBumper

축 레이블

키는 단추 레이블과 마찬가지로 RawGameController 축 배열의 각 축 위치를 GameControllerButtonLabel 열거형에 나열된 레이블 중 하나로 매핑합니다. 단추 레이블의 예를 참조하세요.

스위치 레이블

스위치 키는 스위치 위치를 레이블로 매핑합니다. 값은 다음과 같은 명명 규칙을 따릅니다. 인덱스가 RawGameController 스위치 배열의 x인 스위치 위치에 레이블을 지정하려면 스위치 하위 키 아래에 다음 값을 추가합니다.

  • SwitchxUp
  • SwitchxUpRight
  • SwitchxRight
  • SwitchxDownRight
  • SwitchxDown
  • SwitchxDownLeft
  • SwitchxUpLeft
  • SwitchxLeft

다음 표에서는 RawGameController에서 인덱스 0에 표시되는 4방향 스위치의 스위치 위치에 대한 레이블 세트의 예를 보여 줍니다.

속성값(형식: REG_SZ)
Switch0Up XboxUp
Switch0Right XboxRight
Switch0Down XboxDown
Switch0Left XboxLeft

레지스트리 파일 예제

이러한 매핑과 값이 결합되는 방식을 보여드리기 위해 일반 RacingWheel의 레지스트리 파일 예제를 준비했습니다.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004]
"Description" = "Example Wheel Device"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\Labels\Buttons]
"Button0" = "LetterA"
"Button1" = "LetterB"
"Button2" = "LetterX"
"Button3" = "LetterY"
"Button6" = "Menu"
"Button7" = "View"
"Button8" = "RightStickButton"
"Button9" = "LeftStickButton"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\Labels\Switches]
"Switch0Down" = "Down"
"Switch0Left" = "Left"
"Switch0Right" = "Right"
"Switch0Up" = "Up"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel]
"MaxWheelAngle" = dword:000001c2

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Brake]
"AxisIndex" = dword:00000002
"Invert" = dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button1]
"ButtonIndex" = dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button2]
"ButtonIndex" = dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button3]
"ButtonIndex" = dword:00000002

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button4]
"ButtonIndex" = dword:00000003

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button5]
"ButtonIndex" = dword:00000009

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button6]
"ButtonIndex" = dword:00000008

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button7]
"ButtonIndex" = dword:00000007

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button8]
"ButtonIndex" = dword:00000006

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Clutch]
"AxisIndex" = dword:00000003
"Invert" = dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\DPadDown]
"IncludeAdjacent" = dword:00000001
"SwitchIndex" = dword:00000000
"SwitchPosition" = "Down"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\DPadLeft]
"IncludeAdjacent" = dword:00000001
"SwitchIndex" = dword:00000000
"SwitchPosition" = "Left"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\DPadRight]
"IncludeAdjacent" = dword:00000001
"SwitchIndex" = dword:00000000
"SwitchPosition" = "Right"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\DPadUp]
"IncludeAdjacent" = dword:00000001
"SwitchIndex" = dword:00000000
"SwitchPosition" = "Up"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\FifthGear]
"ButtonIndex" = dword:00000010

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\FirstGear]
"ButtonIndex" = dword:0000000c

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\FourthGear]
"ButtonIndex" = dword:0000000f

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\NextGear]
"ButtonIndex" = dword:00000004

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\PreviousGear]
"ButtonIndex" = dword:00000005

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\ReverseGear]
"ButtonIndex" = dword:0000000b

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\SecondGear]
"ButtonIndex" = dword:0000000d

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\SixthGear]
"ButtonIndex" = dword:00000011

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\ThirdGear]
"ButtonIndex" = dword:0000000e

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Throttle]
"AxisIndex" = dword:00000001
"Invert" = dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Wheel]
"AxisIndex" = dword:00000000
"Invert" = dword:00000000

참고 항목

  • Windows.Gaming.Input 네임스페이스
  • Windows.Gaming.Input.Custom 네임스페이스
  • INF 파일