summaryrefslogtreecommitdiff
path: root/Library/Artifacts/18/1842ad1d9fad9495ba2addb5305bee57
blob: 9a41a5160e8fdc32b3a910154d6b9938137bc4f1 (plain)
ofshex dumpascii
0000 00 00 0f 81 00 00 ef dc 00 00 00 15 00 00 10 00 00 00 00 00 32 30 31 39 2e 33 2e 36 66 31 00 fe ....................2019.3.6f1..
0020 ff ff ff 01 02 00 00 00 0b 04 00 00 00 ff ff 66 9a 86 21 eb 14 35 98 39 dd 34 1d 51 0e c1 f3 42 ...............f..!..5.9.4.Q...B
0040 00 00 00 ed 00 00 00 02 00 00 00 00 00 00 00 37 00 00 80 ff ff ff ff 00 00 00 00 00 80 00 00 00 ...............7................
0060 00 00 00 00 00 00 00 01 00 01 00 a6 03 00 80 b2 01 00 80 04 00 00 00 01 00 00 00 01 00 00 00 00 ................................
0080 00 00 00 00 00 00 00 01 00 01 00 0d 00 00 00 45 04 00 80 0c 00 00 00 02 00 00 00 01 00 00 00 00 ...............E................
00a0 00 00 00 00 00 00 00 01 00 02 00 de 00 00 80 23 00 00 00 04 00 00 00 03 00 00 00 01 00 80 00 00 ...............#................
00c0 00 00 00 00 00 00 00 01 00 02 00 2e 03 00 80 2c 00 00 00 08 00 00 00 04 00 00 00 01 00 80 00 00 ...............,................
00e0 00 00 00 00 00 00 00 01 00 01 00 35 00 00 00 61 04 00 80 0c 00 00 00 05 00 00 00 01 00 00 00 00 ...........5...a................
0100 00 00 00 00 00 00 00 01 00 02 00 de 00 00 80 23 00 00 00 04 00 00 00 06 00 00 00 01 00 80 00 00 ...............#................
0120 00 00 00 00 00 00 00 01 00 02 00 2e 03 00 80 2c 00 00 00 08 00 00 00 07 00 00 00 01 00 80 00 00 ...............,................
0140 00 00 00 00 00 00 00 01 00 01 00 86 02 00 80 72 04 00 80 0c 00 00 00 08 00 00 00 01 00 00 00 00 ...............r................
0160 00 00 00 00 00 00 00 01 00 02 00 de 00 00 80 23 00 00 00 04 00 00 00 09 00 00 00 01 00 80 00 00 ...............#................
0180 00 00 00 00 00 00 00 01 00 02 00 2e 03 00 80 2c 00 00 00 08 00 00 00 0a 00 00 00 01 00 80 00 00 ...............,................
01a0 00 00 00 00 00 00 00 01 00 01 00 48 03 00 80 ab 01 00 80 ff ff ff ff 0b 00 00 00 01 80 08 00 00 ...........H....................
01c0 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 00 00 80 ff ff ff ff 0c 00 00 00 01 40 08 00 00 ...........1...1............@...
01e0 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b 03 00 80 04 00 00 00 0d 00 00 00 01 00 08 00 00 ................................
0200 00 00 00 00 00 00 00 01 00 03 00 51 00 00 80 6a 00 00 80 01 00 00 00 0e 00 00 00 01 00 08 00 00 ...........Q...j................
0220 00 00 00 00 00 00 00 01 00 01 00 f1 00 00 80 4a 00 00 00 ff ff ff ff 0f 00 00 00 00 c0 00 00 00 ...............J................
0240 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 00 00 80 ff ff ff ff 10 00 00 00 00 80 00 00 00 ...........1...1................
0260 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b 03 00 80 04 00 00 00 11 00 00 00 00 00 00 00 00 ................................
0280 00 00 00 00 00 00 00 01 00 03 00 1f 02 00 80 6a 00 00 80 ff ff ff ff 12 00 00 00 00 80 00 00 00 ...............j................
02a0 00 00 00 00 00 00 00 01 00 04 00 5c 00 00 00 9b 00 00 80 ff ff ff ff 13 00 00 00 00 80 00 00 00 ...........\....................
02c0 00 00 00 00 00 00 00 01 00 05 00 48 03 00 80 72 00 00 00 ff ff ff ff 14 00 00 00 00 80 00 00 00 ...........H...r................
02e0 00 00 00 00 00 00 00 01 00 06 01 31 00 00 80 31 00 00 80 ff ff ff ff 15 00 00 00 01 40 00 00 00 ...........1...1............@...
0300 00 00 00 00 00 00 00 01 00 07 00 de 00 00 80 1b 03 00 80 04 00 00 00 16 00 00 00 01 00 00 00 00 ................................
0320 00 00 00 00 00 00 00 01 00 07 00 51 00 00 80 6a 00 00 80 01 00 00 00 17 00 00 00 01 00 00 00 00 ...........Q...j................
0340 00 00 00 00 00 00 00 01 00 05 00 48 03 00 80 77 00 00 00 ff ff ff ff 18 00 00 00 00 80 00 00 00 ...........H...w................
0360 00 00 00 00 00 00 00 01 00 06 01 31 00 00 80 31 00 00 80 ff ff ff ff 19 00 00 00 01 40 00 00 00 ...........1...1............@...
0380 00 00 00 00 00 00 00 01 00 07 00 de 00 00 80 1b 03 00 80 04 00 00 00 1a 00 00 00 01 00 00 00 00 ................................
03a0 00 00 00 00 00 00 00 01 00 07 00 51 00 00 80 6a 00 00 80 01 00 00 00 1b 00 00 00 01 00 00 00 00 ...........Q...j................
03c0 00 00 00 00 00 00 00 01 00 05 00 48 03 00 80 80 00 00 00 ff ff ff ff 1c 00 00 00 00 80 00 00 00 ...........H....................
03e0 00 00 00 00 00 00 00 01 00 06 01 31 00 00 80 31 00 00 80 ff ff ff ff 1d 00 00 00 01 40 00 00 00 ...........1...1............@...
0400 00 00 00 00 00 00 00 01 00 07 00 de 00 00 80 1b 03 00 80 04 00 00 00 1e 00 00 00 01 00 00 00 00 ................................
0420 00 00 00 00 00 00 00 01 00 07 00 51 00 00 80 6a 00 00 80 01 00 00 00 1f 00 00 00 01 00 00 00 00 ...........Q...j................
0440 00 00 00 00 00 00 00 01 00 04 00 79 02 00 80 0a 03 00 80 0c 00 00 00 20 00 00 00 00 00 00 00 00 ...........y....................
0460 00 00 00 00 00 00 00 01 00 05 00 de 00 00 80 23 00 00 00 04 00 00 00 21 00 00 00 01 00 80 00 00 ...............#.......!........
0480 00 00 00 00 00 00 00 01 00 05 00 2e 03 00 80 2c 00 00 00 08 00 00 00 22 00 00 00 01 00 80 00 00 ...............,......."........
04a0 00 00 00 00 00 00 00 01 00 01 00 11 03 00 80 85 00 00 00 ff ff ff ff 23 00 00 00 01 40 08 00 00 .......................#....@...
04c0 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 00 00 80 ff ff ff ff 24 00 00 00 01 00 08 00 00 ...........1...1.......$........
04e0 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b 03 00 80 04 00 00 00 25 00 00 00 01 00 08 00 00 .......................%........
0500 00 00 00 00 00 00 00 01 00 03 00 2e 03 00 80 6a 00 00 80 08 00 00 00 26 00 00 00 01 00 08 00 00 ...............j.......&........
0520 00 00 00 00 00 00 00 01 00 01 00 d5 03 00 80 93 00 00 00 ff ff ff ff 27 00 00 00 00 80 00 00 00 .......................'........
0540 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 00 00 80 ff ff ff ff 28 00 00 00 00 c0 00 00 00 ...........1...1.......(........
0560 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b 03 00 80 04 00 00 00 29 00 00 00 00 00 00 00 00 .......................)........
0580 00 00 00 00 00 00 00 01 00 03 00 1f 02 00 80 6a 00 00 80 ff ff ff ff 2a 00 00 00 00 80 00 00 00 ...............j.......*........
05a0 00 00 00 00 00 00 00 01 00 04 00 48 03 00 80 9b 00 00 80 ff ff ff ff 2b 00 00 00 00 80 00 00 00 ...........H...........+........
05c0 00 00 00 00 00 00 00 01 00 05 01 31 00 00 80 31 00 00 80 ff ff ff ff 2c 00 00 00 01 40 00 00 00 ...........1...1.......,....@...
05e0 00 00 00 00 00 00 00 01 00 06 00 de 00 00 80 1b 03 00 80 04 00 00 00 2d 00 00 00 01 00 00 00 00 .......................-........
0600 00 00 00 00 00 00 00 01 00 06 00 51 00 00 80 6a 00 00 80 01 00 00 00 2e 00 00 00 01 00 00 00 00 ...........Q...j................
0620 00 00 00 00 00 00 00 01 00 04 00 79 02 00 80 0a 03 00 80 0c 00 00 00 2f 00 00 00 00 00 00 00 00 ...........y.........../........
0640 00 00 00 00 00 00 00 01 00 05 00 de 00 00 80 23 00 00 00 04 00 00 00 30 00 00 00 01 00 80 00 00 ...............#.......0........
0660 00 00 00 00 00 00 00 01 00 05 00 2e 03 00 80 2c 00 00 00 08 00 00 00 31 00 00 00 01 00 80 00 00 ...............,.......1........
0680 00 00 00 00 00 00 00 01 00 01 00 20 03 00 80 a7 00 00 00 02 00 00 00 32 00 00 00 00 40 00 00 00 .......................2....@...
06a0 00 00 00 00 00 00 00 01 00 01 00 be 02 00 80 b6 00 00 00 0c 00 00 00 33 00 00 00 00 40 00 00 00 .......................3....@...
06c0 00 00 00 00 00 00 00 01 00 02 00 de 00 00 80 23 00 00 00 04 00 00 00 34 00 00 00 01 00 80 00 00 ...............#.......4........
06e0 00 00 00 00 00 00 00 01 00 02 00 2e 03 00 80 2c 00 00 00 08 00 00 00 35 00 00 00 01 00 80 00 00 ...............,.......5........
0700 00 00 00 00 00 00 00 01 00 01 00 48 03 00 80 bb 00 00 00 ff ff ff ff 36 00 00 00 01 80 00 00 00 ...........H...........6........
0720 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 00 00 80 ff ff ff ff 37 00 00 00 01 40 00 00 00 ...........1...1.......7....@...
0740 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b 03 00 80 04 00 00 00 38 00 00 00 01 00 00 00 00 .......................8........
0760 00 00 00 00 00 00 00 01 00 03 00 51 00 00 80 6a 00 00 80 01 00 00 00 39 00 00 00 01 00 00 00 00 ...........Q...j.......9........
0780 00 00 00 00 00 00 00 01 00 01 00 48 03 00 80 c6 00 00 00 ff ff ff ff 3a 00 00 00 01 80 00 00 00 ...........H...........:........
07a0 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 00 00 80 ff ff ff ff 3b 00 00 00 01 40 00 00 00 ...........1...1.......;....@...
07c0 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b 03 00 80 04 00 00 00 3c 00 00 00 01 00 00 00 00 .......................<........
07e0 00 00 00 00 00 00 00 01 00 03 00 51 00 00 80 6a 00 00 80 01 00 00 00 3d 00 00 00 01 00 00 00 00 ...........Q...j.......=........
0800 00 00 00 00 00 00 00 01 00 01 00 48 03 00 80 d8 00 00 00 ff ff ff ff 3e 00 00 00 01 80 00 00 00 ...........H...........>........
0820 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 00 00 80 ff ff ff ff 3f 00 00 00 01 40 00 00 00 ...........1...1.......?....@...
0840 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b 03 00 80 04 00 00 00 40 00 00 00 01 00 00 00 00 .......................@........
0860 00 00 00 00 00 00 00 01 00 03 00 51 00 00 80 6a 00 00 80 01 00 00 00 41 00 00 00 01 00 00 00 00 ...........Q...j.......A........
0880 00 00 00 00 00 00 00 4d 6f 6e 6f 49 6d 70 6f 72 74 65 72 00 50 50 74 72 3c 45 64 69 74 6f 72 45 .......MonoImporter.PPtr<EditorE
08a0 78 74 65 6e 73 69 6f 6e 3e 00 6d 5f 46 69 6c 65 49 44 00 6d 5f 50 61 74 68 49 44 00 50 50 74 72 xtension>.m_FileID.m_PathID.PPtr
08c0 3c 50 72 65 66 61 62 49 6e 73 74 61 6e 63 65 3e 00 6d 5f 45 78 74 65 72 6e 61 6c 4f 62 6a 65 63 <PrefabInstance>.m_ExternalObjec
08e0 74 73 00 53 6f 75 72 63 65 41 73 73 65 74 49 64 65 6e 74 69 66 69 65 72 00 74 79 70 65 00 61 73 ts.SourceAssetIdentifier.type.as
0900 73 65 6d 62 6c 79 00 6e 61 6d 65 00 6d 5f 55 73 65 64 46 69 6c 65 49 44 73 00 6d 5f 44 65 66 61 sembly.name.m_UsedFileIDs.m_Defa
0920 75 6c 74 52 65 66 65 72 65 6e 63 65 73 00 65 78 65 63 75 74 69 6f 6e 4f 72 64 65 72 00 69 63 6f ultReferences.executionOrder.ico
0940 6e 00 6d 5f 55 73 65 72 44 61 74 61 00 6d 5f 41 73 73 65 74 42 75 6e 64 6c 65 4e 61 6d 65 00 6d n.m_UserData.m_AssetBundleName.m
0960 5f 41 73 73 65 74 42 75 6e 64 6c 65 56 61 72 69 61 6e 74 00 00 00 00 00 73 00 00 00 00 ff ff a3 _AssetBundleVariant.....s.......
0980 47 f1 d7 dc 8f 5a 35 36 a0 3a 21 40 69 c1 4a 2a 00 00 00 81 00 00 00 05 00 00 00 15 01 00 80 37 G....Z56.:!@i.J*...............7
09a0 00 00 80 ff ff ff ff 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 01 00 01 00 a6 03 00 80 b2 ................................
09c0 01 00 80 04 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 00 00 00 00 45 ...............................E
09e0 04 00 80 0c 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 de 00 00 80 16 ................................
0a00 00 00 00 04 00 00 00 03 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 02 00 2e 03 00 80 1f ................................
0a20 00 00 00 08 00 00 00 04 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 01 00 28 00 00 00 61 ...........................(...a
0a40 04 00 80 0c 00 00 00 05 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 de 00 00 80 16 ................................
0a60 00 00 00 04 00 00 00 06 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 02 00 2e 03 00 80 1f ................................
0a80 00 00 00 08 00 00 00 07 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 01 00 86 02 00 80 72 ...............................r
0aa0 04 00 80 0c 00 00 00 08 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 de 00 00 80 16 ................................
0ac0 00 00 00 04 00 00 00 09 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 02 00 2e 03 00 80 1f ................................
0ae0 00 00 00 08 00 00 00 0a 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 01 00 48 03 00 80 ab ...........................H....
0b00 01 00 80 ff ff ff ff 0b 00 00 00 01 80 08 00 00 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 ...........................1...1
0b20 00 00 80 ff ff ff ff 0c 00 00 00 01 40 08 00 00 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b ............@...................
0b40 03 00 80 04 00 00 00 0d 00 00 00 01 00 08 00 00 00 00 00 00 00 00 00 01 00 03 00 51 00 00 80 6a ...........................Q...j
0b60 00 00 80 01 00 00 00 0e 00 00 00 01 00 08 00 00 00 00 00 00 00 00 00 01 00 01 00 48 03 00 80 ea ...........................H....
0b80 01 00 80 ff ff ff ff 0f 00 00 00 01 80 00 00 00 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 ...........................1...1
0ba0 00 00 80 ff ff ff ff 10 00 00 00 01 40 00 00 00 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b ............@...................
0bc0 03 00 80 04 00 00 00 11 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 03 00 51 00 00 80 6a ...........................Q...j
0be0 00 00 80 01 00 00 00 12 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 f1 00 00 80 3d ...............................=
0c00 00 00 00 ff ff ff ff 13 00 00 00 01 80 00 00 00 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 ...........................1...1
0c20 00 00 80 ff ff ff ff 14 00 00 00 01 80 00 00 00 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b ................................
0c40 03 00 80 04 00 00 00 15 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 03 00 1f 02 00 80 6a ...............................j
0c60 00 00 80 ff ff ff ff 16 00 00 00 01 80 00 00 00 00 00 00 00 00 00 00 01 00 04 00 48 03 00 80 9b ...........................H....
0c80 00 00 80 ff ff ff ff 17 00 00 00 01 80 00 00 00 00 00 00 00 00 00 00 01 00 05 01 31 00 00 80 31 ...........................1...1
0ca0 00 00 80 ff ff ff ff 18 00 00 00 01 40 00 00 00 00 00 00 00 00 00 00 01 00 06 00 de 00 00 80 1b ............@...................
0cc0 03 00 80 04 00 00 00 19 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 06 00 51 00 00 80 6a ...........................Q...j
0ce0 00 00 80 01 00 00 00 1a 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 04 00 79 02 00 80 0a ...........................y....
0d00 03 00 80 0c 00 00 00 1b 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 05 00 de 00 00 80 16 ................................
0d20 00 00 00 04 00 00 00 1c 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 05 00 2e 03 00 80 1f ................................
0d40 00 00 00 08 00 00 00 1d 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 01 00 79 02 00 80 51 ...........................y...Q
0d60 00 00 00 0c 00 00 00 1e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 de 00 00 80 16 ................................
0d80 00 00 00 04 00 00 00 1f 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 02 00 2e 03 00 80 1f ................................
0da0 00 00 00 08 00 00 00 20 00 00 00 01 00 80 00 00 00 00 00 00 00 00 00 01 00 01 00 de 00 00 80 58 ...............................X
0dc0 00 00 00 04 00 00 00 21 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 48 03 00 80 69 .......!...................H...i
0de0 00 00 00 ff ff ff ff 22 00 00 00 10 80 00 00 00 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 ......."...................1...1
0e00 00 00 80 ff ff ff ff 23 00 00 00 11 40 00 00 00 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b .......#....@...................
0e20 03 00 80 04 00 00 00 24 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 01 00 03 00 51 00 00 80 6a .......$...................Q...j
0e40 00 00 80 01 00 00 00 25 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 48 03 00 80 75 .......%...................H...u
0e60 00 00 00 ff ff ff ff 26 00 00 00 10 80 00 00 00 00 00 00 00 00 00 00 01 00 02 01 31 00 00 80 31 .......&...................1...1
0e80 00 00 80 ff ff ff ff 27 00 00 00 11 40 00 00 00 00 00 00 00 00 00 00 01 00 03 00 de 00 00 80 1b .......'....@...................
0ea0 03 00 80 04 00 00 00 28 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 01 00 03 00 51 00 00 80 6a .......(...................Q...j
0ec0 00 00 80 01 00 00 00 29 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 50 50 74 72 3c 45 64 69 74 .......)...............PPtr<Edit
0ee0 6f 72 45 78 74 65 6e 73 69 6f 6e 3e 00 6d 5f 46 69 6c 65 49 44 00 6d 5f 50 61 74 68 49 44 00 50 orExtension>.m_FileID.m_PathID.P
0f00 50 74 72 3c 50 72 65 66 61 62 49 6e 73 74 61 6e 63 65 3e 00 6d 5f 44 65 66 61 75 6c 74 52 65 66 Ptr<PrefabInstance>.m_DefaultRef
0f20 65 72 65 6e 63 65 73 00 6d 5f 49 63 6f 6e 00 6d 5f 45 78 65 63 75 74 69 6f 6e 4f 72 64 65 72 00 erences.m_Icon.m_ExecutionOrder.
0f40 6d 5f 43 6c 61 73 73 4e 61 6d 65 00 6d 5f 4e 61 6d 65 73 70 61 63 65 00 00 00 00 00 02 00 00 00 m_ClassName.m_Namespace.........
0f60 03 00 00 00 00 00 00 00 00 00 00 00 5c 00 00 00 00 00 00 00 e0 79 af 00 00 00 00 00 60 00 00 00 ............\........y......`...
0f80 7c df 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |...............................
0fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 e0 79 af 00 00 00 00 00 00 00 00 00 .....................y..........
1040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1080 00 00 00 00 00 00 00 00 03 00 00 00 48 49 44 00 09 df 00 00 75 73 69 6e 67 20 53 79 73 74 65 6d ............HID.....using.System
10a0 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65 ;..using.System.Collections.Gene
10c0 72 69 63 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61 74 69 6f 6e ric;..using.System.Globalization
10e0 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 4c 69 6e 71 3b 0d 0a 75 73 69 6e 67 20 53 79 73 ;..using.System.Linq;..using.Sys
1100 74 65 6d 2e 54 65 78 74 3b 0d 0a 75 73 69 6e 67 20 55 6e 69 74 79 45 6e 67 69 6e 65 2e 49 6e 70 tem.Text;..using.UnityEngine.Inp
1120 75 74 53 79 73 74 65 6d 2e 4c 6f 77 4c 65 76 65 6c 3b 0d 0a 75 73 69 6e 67 20 55 6e 69 74 79 45 utSystem.LowLevel;..using.UnityE
1140 6e 67 69 6e 65 2e 49 6e 70 75 74 53 79 73 74 65 6d 2e 55 74 69 6c 69 74 69 65 73 3b 0d 0a 75 73 ngine.InputSystem.Utilities;..us
1160 69 6e 67 20 55 6e 69 74 79 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 4c 6f 77 4c 65 76 65 6c 2e 55 ing.Unity.Collections.LowLevel.U
1180 6e 73 61 66 65 3b 0d 0a 75 73 69 6e 67 20 55 6e 69 74 79 45 6e 67 69 6e 65 2e 49 6e 70 75 74 53 nsafe;..using.UnityEngine.InputS
11a0 79 73 74 65 6d 2e 4c 61 79 6f 75 74 73 3b 0d 0a 75 73 69 6e 67 20 55 6e 69 74 79 45 6e 67 69 6e ystem.Layouts;..using.UnityEngin
11c0 65 2e 53 63 72 69 70 74 69 6e 67 3b 0d 0a 0d 0a 2f 2f 2f 2f 52 45 56 49 45 57 3a 20 74 68 65 72 e.Scripting;....////REVIEW:.ther
11e0 65 20 77 69 6c 6c 20 70 72 6f 62 61 62 6c 79 20 62 65 20 6c 6f 74 73 20 6f 66 20 63 61 73 65 73 e.will.probably.be.lots.of.cases
1200 20 77 68 65 72 65 20 74 68 65 20 48 49 44 20 64 65 76 69 63 65 20 63 72 65 61 74 69 6f 6e 20 70 .where.the.HID.device.creation.p
1220 72 6f 63 65 73 73 20 6a 75 73 74 20 6e 65 65 64 73 20 61 20 6c 69 74 74 6c 65 20 74 77 65 61 6b rocess.just.needs.a.little.tweak
1240 69 6e 67 3b 20 77 65 20 73 68 6f 75 6c 64 0d 0a 2f 2f 2f 2f 20 20 20 20 20 20 20 20 68 61 76 65 ing;.we.should..////........have
1260 20 62 65 74 74 65 72 20 6d 65 63 68 61 6e 69 73 6d 20 74 6f 20 64 6f 20 74 68 61 74 20 77 69 74 .better.mechanism.to.do.that.wit
1280 68 6f 75 74 20 72 65 71 75 69 72 69 6e 67 20 74 6f 20 72 65 70 6c 61 63 65 20 74 68 65 20 65 6e hout.requiring.to.replace.the.en
12a0 74 69 72 65 20 70 72 6f 63 65 73 73 20 77 68 6f 6c 65 73 61 6c 65 0d 0a 0d 0a 2f 2f 2f 2f 54 4f tire.process.wholesale....////TO
12c0 44 4f 3a 20 65 78 70 6f 73 65 20 74 68 65 20 6c 61 79 6f 75 74 20 62 75 69 6c 64 65 72 20 73 6f DO:.expose.the.layout.builder.so
12e0 20 74 68 61 74 20 6f 74 68 65 72 20 6c 61 79 6f 75 74 20 62 75 69 6c 64 65 72 73 20 63 61 6e 20 .that.other.layout.builders.can.
1300 75 73 65 20 69 74 20 66 6f 72 20 74 68 65 69 72 20 6f 77 6e 20 70 75 72 70 6f 73 65 73 0d 0a 0d use.it.for.their.own.purposes...
1320 0a 2f 2f 2f 2f 52 45 56 49 45 57 3a 20 68 6f 77 20 61 72 65 20 77 65 20 64 65 61 6c 69 6e 67 20 .////REVIEW:.how.are.we.dealing.
1340 77 69 74 68 20 6d 75 6c 74 69 70 6c 65 20 64 69 66 66 65 72 65 6e 74 20 69 6e 70 75 74 20 72 65 with.multiple.different.input.re
1360 70 6f 72 74 73 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 64 65 76 69 63 65 3f 0d 0a 0d 0a 2f 2f 2f ports.on.the.same.device?....///
1380 2f 52 45 56 49 45 57 3a 20 6d 6f 76 65 20 74 68 65 20 65 6e 75 6d 73 20 61 6e 64 20 73 74 72 75 /REVIEW:.move.the.enums.and.stru
13a0 63 74 73 20 6f 75 74 20 6f 66 20 68 65 72 65 20 61 6e 64 20 69 6e 74 6f 20 55 6e 69 74 79 45 6e cts.out.of.here.and.into.UnityEn
13c0 67 69 6e 65 2e 49 6e 70 75 74 53 79 73 74 65 6d 2e 48 49 44 3f 20 4f 72 20 72 65 6d 6f 76 65 20 gine.InputSystem.HID?.Or.remove.
13e0 74 68 65 20 22 48 49 44 22 20 6e 61 6d 65 20 70 72 65 66 69 78 65 73 20 66 72 6f 6d 20 74 68 65 the."HID".name.prefixes.from.the
1400 6d 3f 0d 0a 0d 0a 2f 2f 2f 2f 54 4f 44 4f 3a 20 61 64 64 20 62 6c 61 63 6b 6c 69 73 74 20 66 6f m?....////TODO:.add.blacklist.fo
1420 72 20 64 65 76 69 63 65 73 20 77 65 20 72 65 61 6c 6c 79 20 64 6f 6e 27 74 20 77 61 6e 74 20 74 r.devices.we.really.don't.want.t
1440 6f 20 75 73 65 20 28 6c 69 6b 65 20 61 70 70 6c 65 27 73 20 69 6e 74 65 72 6e 61 6c 20 74 72 61 o.use.(like.apple's.internal.tra
1460 63 6b 70 61 64 29 0d 0a 0d 0a 2f 2f 2f 2f 54 4f 44 4f 3a 20 61 64 64 20 61 20 77 61 79 20 74 6f ckpad)....////TODO:.add.a.way.to
1480 20 6d 61 72 6b 20 63 65 72 74 61 69 6e 20 6c 61 79 6f 75 74 73 20 28 73 75 63 68 20 61 73 20 48 .mark.certain.layouts.(such.as.H
14a0 49 44 20 6c 61 79 6f 75 74 73 29 20 61 73 20 66 61 6c 6c 62 61 63 6b 73 3b 20 69 64 65 61 6c 6c ID.layouts).as.fallbacks;.ideall
14c0 79 2c 20 61 66 66 65 63 74 20 74 68 65 20 6c 61 79 6f 75 74 20 6d 61 74 63 68 69 6e 67 20 73 63 y,.affect.the.layout.matching.sc
14e0 6f 72 65 0d 0a 0d 0a 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 20 64 69 73 61 62 6c 65 20 43 ore....#pragma.warning.disable.C
1500 53 30 36 34 39 2c 20 43 53 30 32 31 39 0d 0a 6e 61 6d 65 73 70 61 63 65 20 55 6e 69 74 79 45 6e S0649,.CS0219..namespace.UnityEn
1520 67 69 6e 65 2e 49 6e 70 75 74 53 79 73 74 65 6d 2e 48 49 44 0d 0a 7b 0d 0a 20 20 20 20 2f 2f 2f gine.InputSystem.HID..{......///
1540 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 67 65 6e 65 72 69 63 20 48 49 .<summary>......///.A.generic.HI
1560 44 20 69 6e 70 75 74 20 64 65 76 69 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 D.input.device.......///.</summa
1580 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 ry>......///.<remarks>......///.
15a0 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 62 65 73 74 20 65 66 66 This.class.represents.a.best.eff
15c0 6f 72 74 20 74 6f 20 6d 69 72 72 6f 72 20 74 68 65 20 63 6f 6e 74 72 6f 6c 20 73 65 74 75 70 20 ort.to.mirror.the.control.setup.
15e0 6f 66 20 61 20 48 49 44 0d 0a 20 20 20 20 2f 2f 2f 20 64 69 73 63 6f 76 65 72 65 64 20 69 6e 20 of.a.HID......///.discovered.in.
1600 74 68 65 20 73 79 73 74 65 6d 2e 20 49 74 20 69 73 20 75 73 65 64 20 6f 6e 6c 79 20 61 73 20 61 the.system..It.is.used.only.as.a
1620 20 66 61 6c 6c 62 61 63 6b 20 77 68 65 72 65 20 77 65 20 63 61 6e 6e 6f 74 0d 0a 20 20 20 20 2f .fallback.where.we.cannot....../
1640 2f 2f 20 6d 61 74 63 68 20 74 68 65 20 64 65 76 69 63 65 20 74 6f 20 61 20 73 70 65 63 69 66 69 //.match.the.device.to.a.specifi
1660 63 20 70 72 6f 64 75 63 74 20 77 65 20 6b 6e 6f 77 20 6f 66 2e 20 57 68 65 72 65 76 65 72 20 70 c.product.we.know.of..Wherever.p
1680 6f 73 73 69 62 6c 65 20 77 65 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e 73 74 72 75 63 74 20 6d 6f ossible.we......///.construct.mo
16a0 72 65 20 73 70 65 63 69 66 69 63 20 64 65 76 69 63 65 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f re.specific.device.representatio
16c0 6e 73 20 73 75 63 68 20 61 73 20 47 61 6d 65 70 61 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 ns.such.as.Gamepad.......///.</r
16e0 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 5b 53 79 73 74 65 6d 2e 44 69 61 67 6e 6f 73 74 69 63 73 emarks>......[System.Diagnostics
1700 2e 43 6f 64 65 41 6e 61 6c 79 73 69 73 2e 53 75 70 70 72 65 73 73 4d 65 73 73 61 67 65 28 22 4d .CodeAnalysis.SuppressMessage("M
1720 69 63 72 6f 73 6f 66 74 2e 4e 61 6d 69 6e 67 22 2c 20 22 43 41 31 37 32 34 3a 54 79 70 65 4e 61 icrosoft.Naming",."CA1724:TypeNa
1740 6d 65 73 53 68 6f 75 6c 64 4e 6f 74 4d 61 74 63 68 4e 61 6d 65 73 70 61 63 65 73 22 29 5d 0d 0a mesShouldNotMatchNamespaces")]..
1760 20 20 20 20 5b 50 72 65 73 65 72 76 65 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 63 6c 61 73 73 ....[Preserve]......public.class
1780 20 48 49 44 20 3a 20 49 6e 70 75 74 44 65 76 69 63 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 .HID.:.InputDevice......{.......
17a0 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 6b 48 49 44 49 6e 74 ...internal.const.string.kHIDInt
17c0 65 72 66 61 63 65 20 3d 20 22 48 49 44 22 3b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 erface.=."HID";..........interna
17e0 6c 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 6b 48 49 44 4e 61 6d 65 73 70 61 63 65 20 3d 20 22 l.const.string.kHIDNamespace.=."
1800 48 49 44 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a HID";............///.<summary>..
1820 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6d 6d 61 6e 64 20 63 6f 64 65 20 66 6f 72 20 71 75 65 ........///.Command.code.for.que
1840 72 79 69 6e 67 20 74 68 65 20 48 49 44 20 72 65 70 6f 72 74 20 64 65 73 63 72 69 70 74 6f 72 20 rying.the.HID.report.descriptor.
1860 66 72 6f 6d 20 61 20 64 65 76 69 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 from.a.device...........///.</su
1880 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 6c 73 6f 20 63 72 65 mmary>..........///.<seealso.cre
18a0 66 3d 22 49 6e 70 75 74 44 65 76 69 63 65 2e 45 78 65 63 75 74 65 43 6f 6d 6d 61 6e 64 7b 54 43 f="InputDevice.ExecuteCommand{TC
18c0 6f 6d 6d 61 6e 64 7d 22 2f 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 ommand}"/>..........public.stati
18e0 63 20 46 6f 75 72 43 43 20 51 75 65 72 79 48 49 44 52 65 70 6f 72 74 44 65 73 63 72 69 70 74 6f c.FourCC.QueryHIDReportDescripto
1900 72 44 65 76 69 63 65 43 6f 6d 6d 61 6e 64 54 79 70 65 20 7b 20 67 65 74 20 7b 20 72 65 74 75 72 rDeviceCommandType.{.get.{.retur
1920 6e 20 6e 65 77 20 46 6f 75 72 43 43 28 27 48 27 2c 20 27 49 27 2c 20 27 44 27 2c 20 27 44 27 29 n.new.FourCC('H',.'I',.'D',.'D')
1940 3b 20 7d 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a ;.}.}............///.<summary>..
1960 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6d 6d 61 6e 64 20 63 6f 64 65 20 66 6f 72 20 71 75 65 ........///.Command.code.for.que
1980 72 79 69 6e 67 20 74 68 65 20 48 49 44 20 72 65 70 6f 72 74 20 64 65 73 63 72 69 70 74 6f 72 20 rying.the.HID.report.descriptor.
19a0 73 69 7a 65 20 69 6e 20 62 79 74 65 73 20 66 72 6f 6d 20 61 20 64 65 76 69 63 65 2e 0d 0a 20 20 size.in.bytes.from.a.device.....
19c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f ......///.</summary>..........//
19e0 2f 20 3c 73 65 65 61 6c 73 6f 20 63 72 65 66 3d 22 49 6e 70 75 74 44 65 76 69 63 65 2e 45 78 65 /.<seealso.cref="InputDevice.Exe
1a00 63 75 74 65 43 6f 6d 6d 61 6e 64 7b 54 43 6f 6d 6d 61 6e 64 7d 22 2f 3e 0d 0a 20 20 20 20 20 20 cuteCommand{TCommand}"/>........
1a20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 46 6f 75 72 43 43 20 51 75 65 72 79 48 49 44 52 ..public.static.FourCC.QueryHIDR
1a40 65 70 6f 72 74 44 65 73 63 72 69 70 74 6f 72 53 69 7a 65 44 65 76 69 63 65 43 6f 6d 6d 61 6e 64 eportDescriptorSizeDeviceCommand
1a60 54 79 70 65 20 7b 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 65 77 20 46 6f 75 72 43 43 28 27 Type.{.get.{.return.new.FourCC('
1a80 48 27 2c 20 27 49 27 2c 20 27 44 27 2c 20 27 53 27 29 3b 20 7d 20 7d 0d 0a 0d 0a 20 20 20 20 20 H',.'I',.'D',.'S');.}.}.........
1aa0 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 46 6f 75 72 43 43 20 51 75 65 72 79 48 49 44 ...public.static.FourCC.QueryHID
1ac0 50 61 72 73 65 64 52 65 70 6f 72 74 44 65 73 63 72 69 70 74 6f 72 44 65 76 69 63 65 43 6f 6d 6d ParsedReportDescriptorDeviceComm
1ae0 61 6e 64 54 79 70 65 20 7b 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 65 77 20 46 6f 75 72 43 andType.{.get.{.return.new.FourC
1b00 43 28 27 48 27 2c 20 27 49 27 2c 20 27 44 27 2c 20 27 50 27 29 3b 20 7d 20 7d 0d 0a 0d 0a 20 20 C('H',.'I',.'D',.'P');.}.}......
1b20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f ......///.<summary>..........///
1b40 20 54 68 65 20 48 49 44 20 64 65 76 69 63 65 20 64 65 73 63 72 69 70 74 6f 72 20 61 73 20 72 65 .The.HID.device.descriptor.as.re
1b60 63 65 69 76 65 64 20 66 72 6f 6d 20 74 68 65 20 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20 20 20 20 ceived.from.the.system..........
1b80 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 .///.</summary>..........public.
1ba0 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 20 68 69 64 44 65 73 63 72 69 70 74 6f HIDDeviceDescriptor.hidDescripto
1bc0 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 r..........{..............get...
1be0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 ...........{..................if
1c00 20 28 21 6d 5f 48 61 76 65 50 61 72 73 65 64 48 49 44 44 65 73 63 72 69 70 74 6f 72 29 0d 0a 20 .(!m_HaveParsedHIDDescriptor)...
1c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...............{................
1c40 20 20 20 20 20 20 69 66 20 28 21 73 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 ......if.(!string.IsNullOrEmpty(
1c60 64 65 73 63 72 69 70 74 69 6f 6e 2e 63 61 70 61 62 69 6c 69 74 69 65 73 29 29 0d 0a 20 20 20 20 description.capabilities))......
1c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 5f 48 49 44 44 65 73 63 72 69 70 ....................m_HIDDescrip
1ca0 74 6f 72 20 3d 20 4a 73 6f 6e 55 74 69 6c 69 74 79 2e 46 72 6f 6d 4a 73 6f 6e 3c 48 49 44 44 65 tor.=.JsonUtility.FromJson<HIDDe
1cc0 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 3e 28 64 65 73 63 72 69 70 74 69 6f 6e 2e 63 61 70 61 viceDescriptor>(description.capa
1ce0 62 69 6c 69 74 69 65 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 bilities);......................
1d00 6d 5f 48 61 76 65 50 61 72 73 65 64 48 49 44 44 65 73 63 72 69 70 74 6f 72 20 3d 20 74 72 75 65 m_HaveParsedHIDDescriptor.=.true
1d20 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 ;..................}............
1d40 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 5f 48 49 44 44 65 73 63 72 69 70 74 6f 72 3b 0d 0a 20 ......return.m_HIDDescriptor;...
1d60 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 ...........}..........}.........
1d80 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6d 5f 48 61 76 65 50 61 72 73 65 64 48 49 44 44 ...private.bool.m_HaveParsedHIDD
1da0 65 73 63 72 69 70 74 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 48 49 44 44 escriptor;..........private.HIDD
1dc0 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 20 6d 5f 48 49 44 44 65 73 63 72 69 70 74 6f 72 3b eviceDescriptor.m_HIDDescriptor;
1de0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 77 6f 72 6b 68 ............//.This.is.the.workh
1e00 6f 72 73 65 20 66 6f 72 20 66 69 67 75 72 69 6e 67 20 6f 75 74 20 66 61 6c 6c 62 61 63 6b 20 6f orse.for.figuring.out.fallback.o
1e20 70 74 69 6f 6e 73 20 66 6f 72 20 48 49 44 73 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 ptions.for.HIDs.attached.to.the.
1e40 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 74 68 65 20 73 79 73 74 65 system...........//.If.the.syste
1e60 6d 20 63 61 6e 6e 6f 74 20 66 69 6e 64 20 61 20 6d 6f 72 65 20 73 70 65 63 69 66 69 63 20 6c 61 m.cannot.find.a.more.specific.la
1e80 79 6f 75 74 20 66 6f 72 20 61 20 67 69 76 65 6e 20 48 49 44 2c 20 74 68 69 73 20 6d 65 74 68 6f yout.for.a.given.HID,.this.metho
1ea0 64 20 77 69 6c 6c 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 74 6f 20 70 72 6f 64 75 63 d.will.try..........//.to.produc
1ec0 65 20 61 20 6c 61 79 6f 75 74 20 62 75 69 6c 64 65 72 20 6f 6e 20 74 68 65 20 66 6c 79 20 62 61 e.a.layout.builder.on.the.fly.ba
1ee0 73 65 64 20 6f 6e 20 74 68 65 20 48 49 44 20 64 65 73 63 72 69 70 74 6f 72 20 72 65 63 65 69 76 sed.on.the.HID.descriptor.receiv
1f00 65 64 20 66 72 6f 6d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 74 68 65 20 64 65 76 69 63 65 2e 0d ed.from..........//.the.device..
1f20 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 .........internal.static.string.
1f40 4f 6e 46 69 6e 64 4c 61 79 6f 75 74 46 6f 72 44 65 76 69 63 65 28 72 65 66 20 49 6e 70 75 74 44 OnFindLayoutForDevice(ref.InputD
1f60 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 20 64 65 73 63 72 69 70 74 69 6f 6e 2c 20 73 74 eviceDescription.description,.st
1f80 72 69 6e 67 20 6d 61 74 63 68 65 64 4c 61 79 6f 75 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ring.matchedLayout,.............
1fa0 20 49 6e 70 75 74 44 65 76 69 63 65 45 78 65 63 75 74 65 43 6f 6d 6d 61 6e 64 44 65 6c 65 67 61 .InputDeviceExecuteCommandDelega
1fc0 74 65 20 65 78 65 63 75 74 65 44 65 76 69 63 65 43 6f 6d 6d 61 6e 64 29 0d 0a 20 20 20 20 20 20 te.executeDeviceCommand)........
1fe0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 74 68 65 20 73 79 73 74 65 ..{..............//.If.the.syste
2000 6d 20 66 6f 75 6e 64 20 61 20 6d 61 74 63 68 69 6e 67 20 6c 61 79 6f 75 74 2c 20 74 68 65 72 65 m.found.a.matching.layout,.there
2020 27 73 20 6e 6f 74 68 69 6e 67 20 66 6f 72 20 75 73 20 74 6f 20 64 6f 2e 0d 0a 20 20 20 20 20 20 's.nothing.for.us.to.do.........
2040 20 20 20 20 20 20 69 66 20 28 21 73 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 ......if.(!string.IsNullOrEmpty(
2060 6d 61 74 63 68 65 64 4c 61 79 6f 75 74 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 matchedLayout)).................
2080 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 .return.null;................//.
20a0 49 66 20 74 68 65 20 64 65 76 69 63 65 20 69 73 6e 27 74 20 61 20 48 49 44 2c 20 77 65 27 72 65 If.the.device.isn't.a.HID,.we're
20c0 20 6e 6f 74 20 69 6e 74 65 72 65 73 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .not.interested...............if
20e0 20 28 64 65 73 63 72 69 70 74 69 6f 6e 2e 69 6e 74 65 72 66 61 63 65 4e 61 6d 65 20 21 3d 20 6b .(description.interfaceName.!=.k
2100 48 49 44 49 6e 74 65 72 66 61 63 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 HIDInterface)..................r
2120 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 52 65 eturn.null;................//.Re
2140 61 64 20 48 49 44 20 64 65 73 63 72 69 70 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ad.HID.descriptor...............
2160 76 61 72 20 68 69 64 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 20 3d 20 52 65 61 64 48 49 var.hidDeviceDescriptor.=.ReadHI
2180 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 28 72 65 66 20 64 65 73 63 72 69 70 74 69 6f DDeviceDescriptor(ref.descriptio
21a0 6e 2c 20 65 78 65 63 75 74 65 44 65 76 69 63 65 43 6f 6d 6d 61 6e 64 29 3b 0d 0a 0d 0a 20 20 20 n,.executeDeviceCommand);.......
21c0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 48 49 44 53 75 70 70 6f 72 74 2e 73 75 70 70 6f 72 74 .........if.(!HIDSupport.support
21e0 65 64 48 49 44 55 73 61 67 65 73 2e 43 6f 6e 74 61 69 6e 73 28 6e 65 77 20 48 49 44 53 75 70 70 edHIDUsages.Contains(new.HIDSupp
2200 6f 72 74 2e 48 49 44 50 61 67 65 55 73 61 67 65 28 68 69 64 44 65 76 69 63 65 44 65 73 63 72 69 ort.HIDPageUsage(hidDeviceDescri
2220 70 74 6f 72 2e 75 73 61 67 65 50 61 67 65 2c 20 68 69 64 44 65 76 69 63 65 44 65 73 63 72 69 70 ptor.usagePage,.hidDeviceDescrip
2240 74 6f 72 2e 75 73 61 67 65 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 tor.usage)))..................re
2260 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 65 74 turn.null;................//.Det
2280 65 72 6d 69 6e 65 20 69 66 20 74 68 65 72 65 27 73 20 61 6e 79 20 75 73 61 62 6c 65 20 65 6c 65 ermine.if.there's.any.usable.ele
22a0 6d 65 6e 74 73 20 6f 6e 20 74 68 65 20 64 65 76 69 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 ments.on.the.device.............
22c0 20 20 76 61 72 20 68 61 73 55 73 61 62 6c 65 45 6c 65 6d 65 6e 74 73 20 3d 20 66 61 6c 73 65 3b ..var.hasUsableElements.=.false;
22e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 69 64 44 65 76 69 63 65 44 65 73 63 72 ..............if.(hidDeviceDescr
2300 69 70 74 6f 72 2e 65 6c 65 6d 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 iptor.elements.!=.null).........
2320 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 .....{..................foreach.
2340 28 76 61 72 20 65 6c 65 6d 65 6e 74 20 69 6e 20 68 69 64 44 65 76 69 63 65 44 65 73 63 72 69 70 (var.element.in.hidDeviceDescrip
2360 74 6f 72 2e 65 6c 65 6d 65 6e 74 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b tor.elements)..................{
2380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e ......................if.(elemen
23a0 74 2e 49 73 55 73 61 62 6c 65 45 6c 65 6d 65 6e 74 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 t.IsUsableElement())............
23c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........{.....................
23e0 20 20 20 20 20 68 61 73 55 73 61 62 6c 65 45 6c 65 6d 65 6e 74 73 20 3d 20 74 72 75 65 3b 0d 0a .....hasUsableElements.=.true;..
2400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a ........................break;..
2420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 ....................}...........
2440 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 .......}..............}.........
2460 20 20 20 20 20 20 20 2f 2f 20 49 66 20 6e 6f 74 2c 20 74 68 65 72 65 27 73 20 6e 6f 74 68 69 6e .......//.If.not,.there's.nothin
2480 67 20 77 65 20 63 61 6e 20 64 6f 20 77 69 74 68 20 74 68 65 20 64 65 76 69 63 65 2e 0d 0a 20 20 g.we.can.do.with.the.device.....
24a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 68 61 73 55 73 61 62 6c 65 45 6c 65 6d 65 6e 74 73 ..........if.(!hasUsableElements
24c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d )..................return.null;.
24e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 54 4f 44 4f 3a 20 77 65 20 73 68 6f 75 ...............////TODO:.we.shou
2500 6c 64 20 62 65 20 61 62 6c 65 20 74 6f 20 64 69 66 66 65 72 65 6e 74 69 61 74 65 20 61 20 48 49 ld.be.able.to.differentiate.a.HI
2520 44 20 6a 6f 79 73 74 69 63 6b 20 66 72 6f 6d 20 6f 74 68 65 72 20 6a 6f 79 73 74 69 63 6b 73 20 D.joystick.from.other.joysticks.
2540 69 6e 20 62 69 6e 64 69 6e 67 73 20 61 6c 6f 6e 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f in.bindings.alone............../
2560 2f 20 44 65 74 65 72 6d 69 6e 65 20 62 61 73 65 20 6c 61 79 6f 75 74 2e 0d 0a 20 20 20 20 20 20 /.Determine.base.layout.........
2580 20 20 20 20 20 20 76 61 72 20 62 61 73 65 54 79 70 65 20 3d 20 74 79 70 65 6f 66 28 48 49 44 29 ......var.baseType.=.typeof(HID)
25a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 62 61 73 65 4c 61 79 6f 75 74 20 3d 20 ;..............var.baseLayout.=.
25c0 22 48 49 44 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 69 64 44 65 76 69 63 "HID";..............if.(hidDevic
25e0 65 44 65 73 63 72 69 70 74 6f 72 2e 75 73 61 67 65 50 61 67 65 20 3d 3d 20 55 73 61 67 65 50 61 eDescriptor.usagePage.==.UsagePa
2600 67 65 2e 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ge.GenericDesktop)..............
2620 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 69 64 44 65 76 69 63 65 {..................if.(hidDevice
2640 44 65 73 63 72 69 70 74 6f 72 2e 75 73 61 67 65 20 3d 3d 20 28 69 6e 74 29 47 65 6e 65 72 69 63 Descriptor.usage.==.(int)Generic
2660 44 65 73 6b 74 6f 70 2e 4a 6f 79 73 74 69 63 6b 20 7c 7c 20 68 69 64 44 65 76 69 63 65 44 65 73 Desktop.Joystick.||.hidDeviceDes
2680 63 72 69 70 74 6f 72 2e 75 73 61 67 65 20 3d 3d 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 criptor.usage.==.(int)GenericDes
26a0 6b 74 6f 70 2e 47 61 6d 65 70 61 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b ktop.Gamepad)..................{
26c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 73 65 4c 61 79 6f 75 74 ......................baseLayout
26e0 20 3d 20 22 4a 6f 79 73 74 69 63 6b 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .=."Joystick";..................
2700 20 20 20 20 62 61 73 65 54 79 70 65 20 3d 20 74 79 70 65 6f 66 28 4a 6f 79 73 74 69 63 6b 29 3b ....baseType.=.typeof(Joystick);
2720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ..................}.............
2740 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 41 20 48 49 44 20 6d 61 79 20 69 .}................//.A.HID.may.i
2760 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 48 49 44 20 69 6e 74 65 72 66 61 63 65 20 61 72 62 69 74 mplement.the.HID.interface.arbit
2780 72 61 72 79 20 6d 61 6e 79 20 74 69 6d 65 73 2c 20 65 61 63 68 20 74 69 6d 65 20 77 69 74 68 20 rary.many.times,.each.time.with.
27a0 61 20 64 69 66 66 65 72 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 75 73 61 67 a.different..............//.usag
27c0 65 20 70 61 67 65 20 2b 20 75 73 61 67 65 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 2e 20 49 6e 20 61 e.page.+.usage.combination..In.a
27e0 20 4f 53 2c 20 74 68 69 73 20 77 69 6c 6c 20 74 79 70 69 63 61 6c 6c 79 20 63 6f 6d 65 20 6f 75 .OS,.this.will.typically.come.ou
2800 74 20 61 73 20 6d 75 6c 74 69 70 6c 65 20 73 65 70 61 72 61 74 65 0d 0a 20 20 20 20 20 20 20 20 t.as.multiple.separate..........
2820 20 20 20 20 2f 2f 20 64 65 76 69 63 65 73 2e 20 54 68 75 73 2c 20 74 6f 20 6d 61 6b 65 20 6c 61 ....//.devices..Thus,.to.make.la
2840 79 6f 75 74 20 6e 61 6d 65 73 20 75 6e 69 71 75 65 2c 20 77 65 20 68 61 76 65 20 74 6f 20 74 61 yout.names.unique,.we.have.to.ta
2860 6b 65 20 75 73 61 67 65 73 20 69 6e 74 6f 20 61 63 63 6f 75 6e 74 2e 20 57 68 61 74 20 77 65 20 ke.usages.into.account..What.we.
2880 64 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 73 20 77 65 20 74 61 67 20 74 68 65 do..............//.is.we.tag.the
28a0 20 75 73 61 67 65 20 6e 61 6d 65 20 6f 6e 74 6f 20 74 68 65 20 6c 61 79 6f 75 74 20 6e 61 6d 65 .usage.name.onto.the.layout.name
28c0 20 2a 65 78 63 65 70 74 2a 20 69 66 20 69 74 27 73 20 61 20 6a 6f 79 73 74 69 63 6b 20 6f 72 20 .*except*.if.it's.a.joystick.or.
28e0 67 61 6d 65 70 61 64 2e 20 54 68 69 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 67 69 gamepad..This..............//.gi
2900 76 65 73 20 75 73 20 6e 69 63 65 72 20 6e 61 6d 65 73 20 66 6f 72 20 6a 6f 79 73 74 69 63 6b 73 ves.us.nicer.names.for.joysticks
2920 20 77 68 69 6c 65 20 73 74 69 6c 6c 20 64 69 73 61 6d 62 69 67 75 61 74 69 6e 67 20 6f 74 68 65 .while.still.disambiguating.othe
2940 72 20 64 65 76 69 63 65 73 20 63 6f 72 72 65 63 74 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 r.devices.correctly.............
2960 20 20 76 61 72 20 75 73 61 67 65 4e 61 6d 65 20 3d 20 22 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 ..var.usageName.=."";...........
2980 20 20 20 69 66 20 28 62 61 73 65 4c 61 79 6f 75 74 20 21 3d 20 22 4a 6f 79 73 74 69 63 6b 22 29 ...if.(baseLayout.!=."Joystick")
29a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..............{.................
29c0 20 75 73 61 67 65 4e 61 6d 65 20 3d 20 68 69 64 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 .usageName.=.hidDeviceDescriptor
29e0 2e 75 73 61 67 65 50 61 67 65 20 3d 3d 20 55 73 61 67 65 50 61 67 65 2e 47 65 6e 65 72 69 63 44 .usagePage.==.UsagePage.GenericD
2a00 65 73 6b 74 6f 70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3f 20 24 22 esktop......................?.$"
2a20 20 7b 28 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 29 20 68 69 64 44 65 76 69 63 65 44 65 73 63 .{(GenericDesktop).hidDeviceDesc
2a40 72 69 70 74 6f 72 2e 75 73 61 67 65 7d 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 riptor.usage}"..................
2a60 20 20 20 20 3a 20 24 22 20 7b 68 69 64 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 2e 75 73 ....:.$".{hidDeviceDescriptor.us
2a80 61 67 65 50 61 67 65 7d 2d 7b 68 69 64 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 2e 75 73 agePage}-{hidDeviceDescriptor.us
2aa0 61 67 65 7d 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 age}";..............}...........
2ac0 20 20 20 20 20 2f 2f 2f 2f 52 45 56 49 45 57 3a 20 74 68 65 73 65 20 6c 61 79 6f 75 74 20 6e 61 .....////REVIEW:.these.layout.na
2ae0 6d 65 73 20 61 72 65 20 69 6d 70 6f 73 73 69 62 6c 65 20 74 6f 20 62 69 6e 64 20 74 6f 3b 20 63 mes.are.impossible.to.bind.to;.c
2b00 6f 6d 65 20 75 70 20 77 69 74 68 20 61 20 62 65 74 74 65 72 20 77 61 79 0d 0a 20 20 20 20 20 20 ome.up.with.a.better.way........
2b20 20 20 20 20 20 20 2f 2f 2f 2f 54 4f 44 4f 3a 20 6d 61 74 63 68 20 48 49 44 20 6c 61 79 6f 75 74 ......////TODO:.match.HID.layout
2b40 73 20 62 79 20 76 65 6e 64 6f 72 20 61 6e 64 20 70 72 6f 64 75 63 74 20 49 44 0d 0a 20 20 20 20 s.by.vendor.and.product.ID......
2b60 20 20 20 20 20 20 20 20 2f 2f 2f 2f 52 45 56 49 45 57 3a 20 74 68 69 73 20 70 72 6f 62 61 62 6c ........////REVIEW:.this.probabl
2b80 79 20 77 6f 72 6b 73 20 66 69 6e 65 20 66 6f 72 20 6d 6f 73 74 20 70 72 6f 64 75 63 74 73 20 6f y.works.fine.for.most.products.o
2ba0 75 74 20 74 68 65 72 65 20 62 75 74 20 49 27 6d 20 6e 6f 74 20 73 75 72 65 20 69 74 20 77 6f 72 ut.there.but.I'm.not.sure.it.wor
2bc0 6b 73 20 72 65 6c 69 61 62 6c 79 20 66 6f 72 20 61 6c 6c 20 63 61 73 65 73 0d 0a 20 20 20 20 20 ks.reliably.for.all.cases.......
2be0 20 20 20 20 20 20 20 2f 2f 20 43 6f 6d 65 20 75 70 20 77 69 74 68 20 61 20 75 6e 69 71 75 65 20 .......//.Come.up.with.a.unique.
2c00 74 65 6d 70 6c 61 74 65 20 6e 61 6d 65 2e 20 48 49 44 73 20 61 72 65 20 72 65 71 75 69 72 65 64 template.name..HIDs.are.required
2c20 20 74 6f 20 68 61 76 65 20 70 72 6f 64 75 63 74 20 61 6e 64 20 76 65 6e 64 6f 72 20 49 44 73 2e .to.have.product.and.vendor.IDs.
2c40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 57 65 20 67 6f 20 77 69 74 68 20 74 68 65 20 ..............//.We.go.with.the.
2c60 73 74 72 69 6e 67 20 76 65 72 73 69 6f 6e 73 20 69 66 20 77 65 20 68 61 76 65 20 74 68 65 6d 20 string.versions.if.we.have.them.
2c80 61 6e 64 20 77 69 74 68 20 74 68 65 20 6e 75 6d 65 72 69 63 20 76 65 72 73 69 6f 6e 73 20 69 66 and.with.the.numeric.versions.if
2ca0 20 77 65 20 64 6f 6e 27 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c .we.don't...............string.l
2cc0 61 79 6f 75 74 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 64 65 76 69 ayoutName;..............var.devi
2ce0 63 65 4d 61 74 63 68 65 72 20 3d 20 49 6e 70 75 74 44 65 76 69 63 65 4d 61 74 63 68 65 72 2e 46 ceMatcher.=.InputDeviceMatcher.F
2d00 72 6f 6d 44 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 28 64 65 73 63 72 69 70 74 69 6f 6e romDeviceDescription(description
2d20 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 73 74 72 69 6e 67 2e 49 73 4e 75 );..............if.(!string.IsNu
2d40 6c 6c 4f 72 45 6d 70 74 79 28 64 65 73 63 72 69 70 74 69 6f 6e 2e 70 72 6f 64 75 63 74 29 20 26 llOrEmpty(description.product).&
2d60 26 20 21 73 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 65 73 63 72 69 70 74 &.!string.IsNullOrEmpty(descript
2d80 69 6f 6e 2e 6d 61 6e 75 66 61 63 74 75 72 65 72 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ion.manufacturer))..............
2da0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 4e 61 6d 65 20 3d 20 {..................layoutName.=.
2dc0 24 22 7b 6b 48 49 44 4e 61 6d 65 73 70 61 63 65 7d 3a 3a 7b 64 65 73 63 72 69 70 74 69 6f 6e 2e $"{kHIDNamespace}::{description.
2de0 6d 61 6e 75 66 61 63 74 75 72 65 72 7d 20 7b 64 65 73 63 72 69 70 74 69 6f 6e 2e 70 72 6f 64 75 manufacturer}.{description.produ
2e00 63 74 7d 7b 75 73 61 67 65 4e 61 6d 65 7d 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d ct}{usageName}";..............}.
2e20 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 69 6e 67 2e 49 73 .............else.if.(!string.Is
2e40 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 65 73 63 72 69 70 74 69 6f 6e 2e 70 72 6f 64 75 63 74 29 NullOrEmpty(description.product)
2e60 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )..............{................
2e80 20 20 6c 61 79 6f 75 74 4e 61 6d 65 20 3d 20 24 22 7b 6b 48 49 44 4e 61 6d 65 73 70 61 63 65 7d ..layoutName.=.$"{kHIDNamespace}
2ea0 3a 3a 7b 64 65 73 63 72 69 70 74 69 6f 6e 2e 70 72 6f 64 75 63 74 7d 7b 75 73 61 67 65 4e 61 6d ::{description.product}{usageNam
2ec0 65 7d 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e}";..............}.............
2ee0 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 .else..............{............
2f00 20 20 20 20 20 20 2f 2f 20 53 61 6e 69 74 79 20 63 68 65 63 6b 20 74 6f 20 6d 61 6b 65 20 73 75 ......//.Sanity.check.to.make.su
2f20 72 65 20 77 65 20 72 65 61 6c 6c 79 20 68 61 76 65 20 74 68 65 20 64 61 74 61 20 77 65 20 65 78 re.we.really.have.the.data.we.ex
2f40 70 65 63 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 69 64 44 65 pect...................if.(hidDe
2f60 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 2e 76 65 6e 64 6f 72 49 64 20 3d 3d 20 30 29 0d 0a 20 viceDescriptor.vendorId.==.0)...
2f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d ...................return.null;.
2fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 4e 61 6d 65 20 3d 0d 0a 20 .................layoutName.=...
2fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 22 7b 6b 48 49 44 4e 61 6d 65 73 70 ...................$"{kHIDNamesp
2fe0 61 63 65 7d 3a 3a 7b 68 69 64 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 2e 76 65 6e 64 6f ace}::{hidDeviceDescriptor.vendo
3000 72 49 64 3a 58 7d 2d 7b 68 69 64 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 2e 70 72 6f 64 rId:X}-{hidDeviceDescriptor.prod
3020 75 63 74 49 64 3a 58 7d 7b 75 73 61 67 65 4e 61 6d 65 7d 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 uctId:X}{usageName}";...........
3040 20 20 20 20 20 20 20 20 20 64 65 76 69 63 65 4d 61 74 63 68 65 72 20 3d 20 64 65 76 69 63 65 4d .........deviceMatcher.=.deviceM
3060 61 74 63 68 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 atcher.......................Wit
3080 68 43 61 70 61 62 69 6c 69 74 79 28 22 70 72 6f 64 75 63 74 49 64 22 2c 20 68 69 64 44 65 76 69 hCapability("productId",.hidDevi
30a0 63 65 44 65 73 63 72 69 70 74 6f 72 2e 70 72 6f 64 75 63 74 49 64 29 0d 0a 20 20 20 20 20 20 20 ceDescriptor.productId).........
30c0 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 43 61 70 61 62 69 6c 69 74 79 28 22 76 65 ..............WithCapability("ve
30e0 6e 64 6f 72 49 64 22 2c 20 68 69 64 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 2e 76 65 6e ndorId",.hidDeviceDescriptor.ven
3100 64 6f 72 49 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 dorId);..............}..........
3120 20 20 20 20 20 20 2f 2f 20 41 6c 73 6f 20 6d 61 74 63 68 20 62 79 20 75 73 61 67 65 2e 20 53 65 ......//.Also.match.by.usage..Se
3140 65 20 63 6f 6d 6d 65 6e 74 20 61 62 6f 76 65 20 61 62 6f 75 74 20 6d 75 6c 74 69 70 6c 65 20 48 e.comment.above.about.multiple.H
3160 49 44 20 69 6e 74 65 72 66 61 63 65 73 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 64 65 76 69 63 65 ID.interfaces.on.the.same.device
3180 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 76 69 63 65 4d 61 74 63 68 65 72 20 3d 20 64 ...............deviceMatcher.=.d
31a0 65 76 69 63 65 4d 61 74 63 68 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 eviceMatcher...................W
31c0 69 74 68 43 61 70 61 62 69 6c 69 74 79 28 22 75 73 61 67 65 22 2c 20 68 69 64 44 65 76 69 63 65 ithCapability("usage",.hidDevice
31e0 44 65 73 63 72 69 70 74 6f 72 2e 75 73 61 67 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 Descriptor.usage)...............
3200 20 20 20 2e 57 69 74 68 43 61 70 61 62 69 6c 69 74 79 28 22 75 73 61 67 65 50 61 67 65 22 2c 20 ....WithCapability("usagePage",.
3220 68 69 64 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 2e 75 73 61 67 65 50 61 67 65 29 3b 0d hidDeviceDescriptor.usagePage);.
3240 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 52 65 67 69 73 74 65 72 20 6c 61 79 6f 75 ...............//.Register.layou
3260 74 20 62 75 69 6c 64 65 72 20 74 68 61 74 20 77 69 6c 6c 20 74 75 72 6e 20 74 68 65 20 48 49 44 t.builder.that.will.turn.the.HID
3280 20 64 65 73 63 72 69 70 74 6f 72 20 69 6e 74 6f 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 .descriptor.into.an.............
32a0 20 2f 2f 20 49 6e 70 75 74 43 6f 6e 74 72 6f 6c 4c 61 79 6f 75 74 20 69 6e 73 74 61 6e 63 65 2e .//.InputControlLayout.instance.
32c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6c 61 79 6f 75 74 20 3d 20 6e 65 77 20 48 ..............var.layout.=.new.H
32e0 49 44 4c 61 79 6f 75 74 42 75 69 6c 64 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a IDLayoutBuilder..............{..
3300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6c 61 79 4e 61 6d 65 20 3d 20 64 65 ................displayName.=.de
3320 73 63 72 69 70 74 69 6f 6e 2e 70 72 6f 64 75 63 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 scription.product,..............
3340 20 20 20 20 68 69 64 44 65 73 63 72 69 70 74 6f 72 20 3d 20 68 69 64 44 65 76 69 63 65 44 65 73 ....hidDescriptor.=.hidDeviceDes
3360 63 72 69 70 74 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 criptor,..................parent
3380 4c 61 79 6f 75 74 20 3d 20 62 61 73 65 4c 61 79 6f 75 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 Layout.=.baseLayout,............
33a0 20 20 20 20 20 20 64 65 76 69 63 65 54 79 70 65 20 3d 20 62 61 73 65 54 79 70 65 20 3f 3f 20 74 ......deviceType.=.baseType.??.t
33c0 79 70 65 6f 66 28 48 49 44 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20 ypeof(HID)..............};......
33e0 20 20 20 20 20 20 20 20 49 6e 70 75 74 53 79 73 74 65 6d 2e 52 65 67 69 73 74 65 72 4c 61 79 6f ........InputSystem.RegisterLayo
3400 75 74 42 75 69 6c 64 65 72 28 28 29 20 3d 3e 20 6c 61 79 6f 75 74 2e 42 75 69 6c 64 28 29 2c 0d utBuilder(().=>.layout.Build(),.
3420 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 4e 61 6d 65 2c 20 62 61 73 .................layoutName,.bas
3440 65 4c 61 79 6f 75 74 2c 20 64 65 76 69 63 65 4d 61 74 63 68 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 eLayout,.deviceMatcher);........
3460 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 61 79 6f 75 74 4e 61 6d 65 3b 0d 0a 20 20 20 20 ........return.layoutName;......
3480 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 ....}............internal.static
34a0 20 75 6e 73 61 66 65 20 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 20 52 65 61 64 .unsafe.HIDDeviceDescriptor.Read
34c0 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 28 72 65 66 20 49 6e 70 75 74 44 65 76 HIDDeviceDescriptor(ref.InputDev
34e0 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 20 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e iceDescription.deviceDescription
3500 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 70 75 74 44 65 76 69 63 65 45 78 65 63 75 74 ,..............InputDeviceExecut
3520 65 43 6f 6d 6d 61 6e 64 44 65 6c 65 67 61 74 65 20 65 78 65 63 75 74 65 43 6f 6d 6d 61 6e 64 44 eCommandDelegate.executeCommandD
3540 65 6c 65 67 61 74 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 elegate)..........{.............
3560 20 69 66 20 28 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 69 6e 74 65 72 66 61 63 65 .if.(deviceDescription.interface
3580 4e 61 6d 65 20 21 3d 20 6b 48 49 44 49 6e 74 65 72 66 61 63 65 29 0d 0a 20 20 20 20 20 20 20 20 Name.!=.kHIDInterface)..........
35a0 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 45 78 63 65 70 74 ........throw.new.ArgumentExcept
35c0 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 22 44 65 76 69 ion(......................$"Devi
35e0 63 65 20 27 7b 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 7d 27 20 69 73 20 6e 6f 74 20 ce.'{deviceDescription}'.is.not.
3600 61 20 48 49 44 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53 65 65 20 69 a.HID");................//.See.i
3620 66 20 77 65 20 68 61 76 65 20 74 6f 20 72 65 71 75 65 73 74 20 61 20 48 49 44 20 64 65 73 63 72 f.we.have.to.request.a.HID.descr
3640 69 70 74 6f 72 20 66 72 6f 6d 20 74 68 65 20 64 65 76 69 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 iptor.from.the.device...........
3660 20 20 20 20 2f 2f 20 57 65 20 73 75 70 70 6f 72 74 20 68 61 76 69 6e 67 20 74 68 65 20 64 65 73 ....//.We.support.having.the.des
3680 63 72 69 70 74 6f 72 20 64 69 72 65 63 74 6c 79 20 61 73 20 61 20 4a 53 4f 4e 20 73 74 72 69 6e criptor.directly.as.a.JSON.strin
36a0 67 20 69 6e 20 74 68 65 20 60 63 61 70 61 62 69 6c 69 74 69 65 73 60 0d 0a 20 20 20 20 20 20 20 g.in.the.`capabilities`.........
36c0 20 20 20 20 20 2f 2f 20 66 69 65 6c 64 20 6f 66 20 74 68 65 20 64 65 76 69 63 65 20 64 65 73 63 .....//.field.of.the.device.desc
36e0 72 69 70 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e 65 65 64 54 6f ription...............var.needTo
3700 52 65 71 75 65 73 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 RequestDescriptor.=.true;.......
3720 20 20 20 20 20 20 20 76 61 72 20 68 69 64 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 20 3d .......var.hidDeviceDescriptor.=
3740 20 6e 65 77 20 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 28 29 3b 0d 0a 20 20 20 .new.HIDDeviceDescriptor();.....
3760 20 20 20 20 20 20 20 20 20 69 66 20 28 21 73 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 .........if.(!string.IsNullOrEmp
3780 74 79 28 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 63 61 70 61 62 69 6c 69 74 69 65 ty(deviceDescription.capabilitie
37a0 73 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 s))..............{..............
37c0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 ....try..................{......
37e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 69 64 44 65 76 69 63 65 44 65 73 63 72 69 70 ................hidDeviceDescrip
3800 74 6f 72 20 3d 20 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 2e 46 72 6f 6d 4a 73 tor.=.HIDDeviceDescriptor.FromJs
3820 6f 6e 28 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 63 61 70 61 62 69 6c 69 74 69 65 on(deviceDescription.capabilitie
3840 73 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 66 s);........................//.If
3860 20 74 68 65 72 65 27 73 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 74 68 65 20 64 65 73 63 72 69 70 .there's.elements.in.the.descrip
3880 74 6f 72 2c 20 77 65 27 72 65 20 67 6f 6f 64 20 77 69 74 68 20 74 68 65 20 64 65 73 63 72 69 70 tor,.we're.good.with.the.descrip
38a0 74 6f 72 2e 20 49 66 20 74 68 65 72 65 20 61 72 65 6e 27 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 tor..If.there.aren't,...........
38c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 77 65 20 67 6f 20 61 6e 64 20 61 73 6b 20 74 68 65 20 ...........//.we.go.and.ask.the.
38e0 64 65 76 69 63 65 20 66 6f 72 20 61 20 66 75 6c 6c 20 64 65 73 63 72 69 70 74 6f 72 2e 0d 0a 20 device.for.a.full.descriptor....
3900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 69 64 44 65 76 69 63 65 ...................if.(hidDevice
3920 44 65 73 63 72 69 70 74 6f 72 2e 65 6c 65 6d 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 20 26 26 20 68 Descriptor.elements.!=.null.&&.h
3940 69 64 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 2e 65 6c 65 6d 65 6e 74 73 2e 4c 65 6e 67 idDeviceDescriptor.elements.Leng
3960 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 th.>.0).........................
3980 20 6e 65 65 64 54 6f 52 65 71 75 65 73 74 44 65 73 63 72 69 70 74 6f 72 20 3d 20 66 61 6c 73 65 .needToRequestDescriptor.=.false
39a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 ;..................}............
39c0 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 78 63 65 70 74 69 6f 6e ......catch.(Exception.exception
39e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 )..................{............
3a00 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 2e 4c 6f 67 45 72 72 6f 72 28 24 22 43 6f 75 6c 64 ..........Debug.LogError($"Could
3a20 20 6e 6f 74 20 70 61 72 73 65 20 48 49 44 20 64 65 73 63 72 69 70 74 6f 72 20 6f 66 20 64 65 76 .not.parse.HID.descriptor.of.dev
3a40 69 63 65 20 27 7b 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 7d 27 22 29 3b 0d 0a 20 20 ice.'{deviceDescription}'");....
3a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 2e 4c 6f 67 45 78 63 65 70 ..................Debug.LogExcep
3a80 74 69 6f 6e 28 65 78 63 65 70 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tion(exception);................
3aa0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 ..}..............}..............
3ac0 20 20 2f 2f 2f 2f 52 45 56 49 45 57 3a 20 77 65 20 2a 63 6f 75 6c 64 2a 20 73 77 69 74 63 68 20 ..////REVIEW:.we.*could*.switch.
3ae0 74 6f 20 61 20 73 69 6e 67 6c 65 20 70 61 74 68 20 68 65 72 65 20 74 68 61 74 20 73 75 70 70 6f to.a.single.path.here.that.suppo
3b00 72 74 73 20 2a 6f 6e 6c 79 2a 20 70 61 72 73 65 64 20 64 65 73 63 72 69 70 74 6f 72 73 20 62 75 rts.*only*.parsed.descriptors.bu
3b20 74 20 69 74 27 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 20 20 20 20 20 20 20 20 t.it'd..............////........
3b40 6d 65 61 6e 20 68 61 76 69 6e 67 20 74 6f 20 73 77 69 74 63 68 20 2a 65 76 65 72 79 2a 20 70 6c mean.having.to.switch.*every*.pl
3b60 61 74 66 6f 72 6d 20 73 75 70 70 6f 72 74 69 6e 67 20 48 49 44 20 74 6f 20 74 68 65 20 68 61 63 atform.supporting.HID.to.the.hac
3b80 6b 20 77 65 20 63 75 72 72 65 6e 74 6c 79 20 68 61 76 65 20 74 6f 20 64 6f 0d 0a 20 20 20 20 20 k.we.currently.have.to.do.......
3ba0 20 20 20 20 20 20 20 2f 2f 2f 2f 20 20 20 20 20 20 20 20 6f 6e 20 57 69 6e 64 6f 77 73 0d 0a 0d .......////........on.Windows...
3bc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 52 65 71 75 65 73 74 20 64 65 73 63 72 69 70 74 .............//.Request.descript
3be0 6f 72 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 or,.if.necessary...............i
3c00 66 20 28 6e 65 65 64 54 6f 52 65 71 75 65 73 74 44 65 73 63 72 69 70 74 6f 72 29 0d 0a 20 20 20 f.(needToRequestDescriptor).....
3c20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 .........{..................//.T
3c40 72 79 20 74 6f 20 67 65 74 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 48 49 44 20 64 65 ry.to.get.the.size.of.the.HID.de
3c60 73 63 72 69 70 74 6f 72 20 66 72 6f 6d 20 74 68 65 20 64 65 76 69 63 65 2e 0d 0a 20 20 20 20 20 scriptor.from.the.device........
3c80 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 73 69 7a 65 4f 66 44 65 73 63 72 69 70 74 6f 72 43 ...........var.sizeOfDescriptorC
3ca0 6f 6d 6d 61 6e 64 20 3d 20 6e 65 77 20 49 6e 70 75 74 44 65 76 69 63 65 43 6f 6d 6d 61 6e 64 28 ommand.=.new.InputDeviceCommand(
3cc0 51 75 65 72 79 48 49 44 52 65 70 6f 72 74 44 65 73 63 72 69 70 74 6f 72 53 69 7a 65 44 65 76 69 QueryHIDReportDescriptorSizeDevi
3ce0 63 65 43 6f 6d 6d 61 6e 64 54 79 70 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ceCommandType);.................
3d00 20 76 61 72 20 73 69 7a 65 4f 66 44 65 73 63 72 69 70 74 6f 72 49 6e 42 79 74 65 73 20 3d 20 65 .var.sizeOfDescriptorInBytes.=.e
3d20 78 65 63 75 74 65 43 6f 6d 6d 61 6e 64 44 65 6c 65 67 61 74 65 28 72 65 66 20 73 69 7a 65 4f 66 xecuteCommandDelegate(ref.sizeOf
3d40 44 65 73 63 72 69 70 74 6f 72 43 6f 6d 6d 61 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 DescriptorCommand);.............
3d60 20 20 20 20 20 69 66 20 28 73 69 7a 65 4f 66 44 65 73 63 72 69 70 74 6f 72 49 6e 42 79 74 65 73 .....if.(sizeOfDescriptorInBytes
3d80 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 .>.0)..................{........
3da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 6f 77 20 74 72 79 20 74 6f 20 66 65 74 63 ..............//.Now.try.to.fetc
3dc0 68 20 74 68 65 20 48 49 44 20 64 65 73 63 72 69 70 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 h.the.HID.descriptor............
3de0 20 20 20 20 20 20 20 20 20 20 20 75 73 69 6e 67 20 28 76 61 72 20 62 75 66 66 65 72 20 3d 0d 0a ...........using.(var.buffer.=..
3e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 ...............................I
3e20 6e 70 75 74 44 65 76 69 63 65 43 6f 6d 6d 61 6e 64 2e 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 nputDeviceCommand.AllocateNative
3e40 28 51 75 65 72 79 48 49 44 52 65 70 6f 72 74 44 65 73 63 72 69 70 74 6f 72 44 65 76 69 63 65 43 (QueryHIDReportDescriptorDeviceC
3e60 6f 6d 6d 61 6e 64 54 79 70 65 2c 20 28 69 6e 74 29 73 69 7a 65 4f 66 44 65 73 63 72 69 70 74 6f ommandType,.(int)sizeOfDescripto
3e80 72 49 6e 42 79 74 65 73 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rInBytes))......................
3ea0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 63 {..........................var.c
3ec0 6f 6d 6d 61 6e 64 50 74 72 20 3d 20 28 49 6e 70 75 74 44 65 76 69 63 65 43 6f 6d 6d 61 6e 64 2a ommandPtr.=.(InputDeviceCommand*
3ee0 29 62 75 66 66 65 72 2e 47 65 74 55 6e 73 61 66 65 50 74 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 )buffer.GetUnsafePtr();.........
3f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 78 65 63 75 74 65 43 6f 6d 6d .................if.(executeComm
3f20 61 6e 64 44 65 6c 65 67 61 74 65 28 72 65 66 20 2a 63 6f 6d 6d 61 6e 64 50 74 72 29 20 21 3d 20 andDelegate(ref.*commandPtr).!=.
3f40 73 69 7a 65 4f 66 44 65 73 63 72 69 70 74 6f 72 49 6e 42 79 74 65 73 29 0d 0a 20 20 20 20 20 20 sizeOfDescriptorInBytes)........
3f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 ......................return.new
3f80 20 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 .HIDDeviceDescriptor();.........
3fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 72 79 20 74 6f 20 70 61 72 ...................//.Try.to.par
3fc0 73 65 20 74 68 65 20 48 49 44 20 72 65 70 6f 72 74 20 64 65 73 63 72 69 70 74 6f 72 2e 0d 0a 20 se.the.HID.report.descriptor....
3fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 48 49 44 50 .......................if.(!HIDP
4000 61 72 73 65 72 2e 50 61 72 73 65 52 65 70 6f 72 74 44 65 73 63 72 69 70 74 6f 72 28 28 62 79 74 arser.ParseReportDescriptor((byt
4020 65 2a 29 63 6f 6d 6d 61 6e 64 50 74 72 2d 3e 70 61 79 6c 6f 61 64 50 74 72 2c 20 28 69 6e 74 29 e*)commandPtr->payloadPtr,.(int)
4040 73 69 7a 65 4f 66 44 65 73 63 72 69 70 74 6f 72 49 6e 42 79 74 65 73 2c 20 72 65 66 20 68 69 64 sizeOfDescriptorInBytes,.ref.hid
4060 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 DeviceDescriptor))..............
4080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 48 49 44 44 65 ................return.new.HIDDe
40a0 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 viceDescriptor();...............
40c0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .......}........................
40e0 2f 2f 20 55 70 64 61 74 65 20 74 68 65 20 64 65 73 63 72 69 70 74 6f 72 20 6f 6e 20 74 68 65 20 //.Update.the.descriptor.on.the.
4100 64 65 76 69 63 65 20 77 69 74 68 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 77 65 20 67 device.with.the.information.we.g
4120 6f 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 76 69 63 65 44 ot.......................deviceD
4140 65 73 63 72 69 70 74 69 6f 6e 2e 63 61 70 61 62 69 6c 69 74 69 65 73 20 3d 20 68 69 64 44 65 76 escription.capabilities.=.hidDev
4160 69 63 65 44 65 73 63 72 69 70 74 6f 72 2e 54 6f 4a 73 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20 iceDescriptor.ToJson();.........
4180 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 .........}..................else
41a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ..................{.............
41c0 20 20 20 20 20 20 20 20 20 2f 2f 20 54 68 65 20 64 65 76 69 63 65 20 6d 61 79 20 6e 6f 74 20 73 .........//.The.device.may.not.s
41e0 75 70 70 6f 72 74 20 62 69 6e 61 72 79 20 64 65 73 63 72 69 70 74 6f 72 73 20 62 75 74 20 6d 61 upport.binary.descriptors.but.ma
4200 79 20 73 75 70 70 6f 72 74 20 70 61 72 73 65 64 20 64 65 73 63 72 69 70 74 6f 72 73 20 73 6f 0d y.support.parsed.descriptors.so.
4220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 74 72 79 20 74 68 65 20 .....................//.try.the.
4240 49 4f 43 54 4c 20 66 6f 72 20 70 61 72 73 65 64 20 64 65 73 63 72 69 70 74 6f 72 73 20 6e 65 78 IOCTL.for.parsed.descriptors.nex
4260 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 t.......................//......
4280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 68 69 73 20 70 61 74 68 20 65 78 69 ................//.This.path.exi
42a0 73 74 73 20 70 72 65 74 74 79 20 6d 75 63 68 20 6f 6e 6c 79 20 66 6f 72 20 74 68 65 20 73 61 6b sts.pretty.much.only.for.the.sak
42c0 65 20 6f 66 20 57 69 6e 64 6f 77 73 20 77 68 65 72 65 20 69 74 20 69 73 20 6e 6f 74 20 70 6f 73 e.of.Windows.where.it.is.not.pos
42e0 73 69 62 6c 65 20 74 6f 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sible.to.get....................
4300 20 20 2f 2f 20 75 6e 70 61 72 73 65 64 2f 62 69 6e 61 72 79 20 64 65 73 63 72 69 70 74 6f 72 73 ..//.unparsed/binary.descriptors
4320 20 66 72 6f 6d 20 74 68 65 20 64 65 76 69 63 65 20 28 61 6e 64 20 77 68 65 72 65 20 67 65 74 74 .from.the.device.(and.where.gett
4340 69 6e 67 20 65 6c 65 6d 65 6e 74 20 6f 66 66 73 65 74 73 20 69 73 20 6f 6e 6c 79 20 70 6f 73 73 ing.element.offsets.is.only.poss
4360 69 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 77 69 74 ible......................//.wit
4380 68 20 73 6f 6d 65 20 64 69 72 74 79 20 68 61 63 6b 73 20 77 65 27 72 65 20 70 65 72 66 6f 72 6d h.some.dirty.hacks.we're.perform
43a0 69 6e 67 20 69 6e 20 74 68 65 20 6e 61 74 69 76 65 20 72 75 6e 74 69 6d 65 29 2e 0d 0a 0d 0a 20 ing.in.the.native.runtime)......
43c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 69 6e 74 20 6b 4d 61 ...................const.int.kMa
43e0 78 44 65 73 63 72 69 70 74 6f 72 42 75 66 66 65 72 53 69 7a 65 20 3d 20 32 20 2a 20 31 30 32 34 xDescriptorBufferSize.=.2.*.1024
4400 20 2a 20 31 30 32 34 3b 20 2f 2f 2f 2f 54 4f 44 4f 3a 20 73 77 69 74 63 68 20 74 6f 20 6c 61 72 .*.1024;.////TODO:.switch.to.lar
4420 67 65 72 20 62 75 66 66 65 72 20 62 61 73 65 64 20 6f 6e 20 72 65 74 75 72 6e 20 63 6f 64 65 20 ger.buffer.based.on.return.code.
4440 69 66 20 72 65 71 75 65 73 74 20 66 61 69 6c 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 if.request.fails................
4460 20 20 20 20 20 20 75 73 69 6e 67 20 28 76 61 72 20 62 75 66 66 65 72 20 3d 0d 0a 20 20 20 20 20 ......using.(var.buffer.=.......
4480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 70 75 74 44 ..........................InputD
44a0 65 76 69 63 65 43 6f 6d 6d 61 6e 64 2e 41 6c 6c 6f 63 61 74 65 4e 61 74 69 76 65 28 51 75 65 72 eviceCommand.AllocateNative(Quer
44c0 79 48 49 44 50 61 72 73 65 64 52 65 70 6f 72 74 44 65 73 63 72 69 70 74 6f 72 44 65 76 69 63 65 yHIDParsedReportDescriptorDevice
44e0 43 6f 6d 6d 61 6e 64 54 79 70 65 2c 20 6b 4d 61 78 44 65 73 63 72 69 70 74 6f 72 42 75 66 66 65 CommandType,.kMaxDescriptorBuffe
4500 72 53 69 7a 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a rSize))......................{..
4520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 63 6f 6d 6d ........................var.comm
4540 61 6e 64 50 74 72 20 3d 20 28 49 6e 70 75 74 44 65 76 69 63 65 43 6f 6d 6d 61 6e 64 2a 29 62 75 andPtr.=.(InputDeviceCommand*)bu
4560 66 66 65 72 2e 47 65 74 55 6e 73 61 66 65 50 74 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ffer.GetUnsafePtr();............
4580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 75 74 66 38 4c 65 6e 67 74 68 20 3d 20 65 ..............var.utf8Length.=.e
45a0 78 65 63 75 74 65 43 6f 6d 6d 61 6e 64 44 65 6c 65 67 61 74 65 28 72 65 66 20 2a 63 6f 6d 6d 61 xecuteCommandDelegate(ref.*comma
45c0 6e 64 50 74 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ndPtr);.........................
45e0 20 69 66 20 28 75 74 66 38 4c 65 6e 67 74 68 20 3c 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 .if.(utf8Length.<.0)............
4600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 48 49 44 ..................return.new.HID
4620 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 DeviceDescriptor();.............
4640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 75 72 6e 20 55 54 46 2d 38 20 62 75 66 ...............//.Turn.UTF-8.buf
4660 66 65 72 20 69 6e 74 6f 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fer.into.string.................
4680 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 54 4f 44 4f 3a 20 69 73 20 74 68 65 72 65 20 61 20 77 ..........////TODO:.is.there.a.w
46a0 61 79 20 74 6f 20 6e 6f 74 20 68 61 76 65 20 74 6f 20 63 6f 70 79 20 68 65 72 65 3f 0d 0a 20 20 ay.to.not.have.to.copy.here?....
46c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 75 74 66 38 20 3d ......................var.utf8.=
46e0 20 6e 65 77 20 62 79 74 65 5b 75 74 66 38 4c 65 6e 67 74 68 5d 3b 0d 0a 20 20 20 20 20 20 20 20 .new.byte[utf8Length];..........
4700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 78 65 64 28 62 79 74 65 2a 20 75 74 66 38 ................fixed(byte*.utf8
4720 50 74 72 20 3d 20 75 74 66 38 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Ptr.=.utf8).....................
4740 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....{..........................
4760 20 20 20 20 55 6e 73 61 66 65 55 74 69 6c 69 74 79 2e 4d 65 6d 43 70 79 28 75 74 66 38 50 74 72 ....UnsafeUtility.MemCpy(utf8Ptr
4780 2c 20 63 6f 6d 6d 61 6e 64 50 74 72 2d 3e 70 61 79 6c 6f 61 64 50 74 72 2c 20 75 74 66 38 4c 65 ,.commandPtr->payloadPtr,.utf8Le
47a0 6e 67 74 68 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ngth);..........................
47c0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 64 }..........................var.d
47e0 65 73 63 72 69 70 74 6f 72 4a 73 6f 6e 20 3d 20 45 6e 63 6f 64 69 6e 67 2e 55 54 46 38 2e 47 65 escriptorJson.=.Encoding.UTF8.Ge
4800 74 53 74 72 69 6e 67 28 75 74 66 38 2c 20 30 2c 20 28 69 6e 74 29 75 74 66 38 4c 65 6e 67 74 68 tString(utf8,.0,.(int)utf8Length
4820 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f );............................//
4840 20 54 72 79 20 74 6f 20 70 61 72 73 65 20 74 68 65 20 48 49 44 20 72 65 70 6f 72 74 20 64 65 73 .Try.to.parse.the.HID.report.des
4860 63 72 69 70 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 criptor.........................
4880 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b ..try..........................{
48a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 69 ..............................hi
48c0 64 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 20 3d 20 48 49 44 44 65 76 69 63 65 44 65 73 dDeviceDescriptor.=.HIDDeviceDes
48e0 63 72 69 70 74 6f 72 2e 46 72 6f 6d 4a 73 6f 6e 28 64 65 73 63 72 69 70 74 6f 72 4a 73 6f 6e 29 criptor.FromJson(descriptorJson)
4900 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 ;..........................}....
4920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 ......................catch.(Exc
4940 65 70 74 69 6f 6e 20 65 78 63 65 70 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 eption.exception)...............
4960 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........{....................
4980 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 2e 4c 6f 67 45 72 72 6f 72 28 24 22 43 6f 75 6c 64 ..........Debug.LogError($"Could
49a0 20 6e 6f 74 20 70 61 72 73 65 20 48 49 44 20 64 65 73 63 72 69 70 74 6f 72 20 6f 66 20 64 65 76 .not.parse.HID.descriptor.of.dev
49c0 69 63 65 20 27 7b 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 7d 27 22 29 3b 0d 0a 20 20 ice.'{deviceDescription}'");....
49e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 2e ..........................Debug.
4a00 4c 6f 67 45 78 63 65 70 74 69 6f 6e 28 65 78 63 65 70 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 LogException(exception);........
4a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 ......................return.new
4a40 20 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 .HIDDeviceDescriptor();.........
4a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 .................}..............
4a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 70 64 61 74 65 20 74 68 65 20 64 65 73 63 ..............//.Update.the.desc
4aa0 72 69 70 74 6f 72 20 6f 6e 20 74 68 65 20 64 65 76 69 63 65 20 77 69 74 68 20 74 68 65 20 69 6e riptor.on.the.device.with.the.in
4ac0 66 6f 72 6d 61 74 69 6f 6e 20 77 65 20 67 6f 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 formation.we.got................
4ae0 20 20 20 20 20 20 20 20 20 20 20 64 65 76 69 63 65 44 65 73 63 72 69 70 74 69 6f 6e 2e 63 61 70 ...........deviceDescription.cap
4b00 61 62 69 6c 69 74 69 65 73 20 3d 20 64 65 73 63 72 69 70 74 6f 72 4a 73 6f 6e 3b 0d 0a 20 20 20 abilities.=.descriptorJson;.....
4b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 .................}..............
4b40 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 ....}..............}............
4b60 20 20 20 20 72 65 74 75 72 6e 20 68 69 64 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 3b 0d ....return.hidDeviceDescriptor;.
4b80 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 .........}............public.sta
4ba0 74 69 63 20 73 74 72 69 6e 67 20 55 73 61 67 65 50 61 67 65 54 6f 53 74 72 69 6e 67 28 55 73 61 tic.string.UsagePageToString(Usa
4bc0 67 65 50 61 67 65 20 75 73 61 67 65 50 61 67 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 gePage.usagePage)..........{....
4be0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 69 6e 74 29 75 73 61 67 65 50 61 67 65 20 ..........return.(int)usagePage.
4c00 3e 3d 20 30 78 46 46 30 30 20 3f 20 22 56 65 6e 64 6f 72 2d 44 65 66 69 6e 65 64 22 20 3a 20 75 >=.0xFF00.?."Vendor-Defined".:.u
4c20 73 61 67 65 50 61 67 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d sagePage.ToString();..........}.
4c40 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 ...........public.static.string.
4c60 55 73 61 67 65 54 6f 53 74 72 69 6e 67 28 55 73 61 67 65 50 61 67 65 20 75 73 61 67 65 50 61 67 UsageToString(UsagePage.usagePag
4c80 65 2c 20 69 6e 74 20 75 73 61 67 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 e,.int.usage)..........{........
4ca0 20 20 20 20 20 20 73 77 69 74 63 68 20 28 75 73 61 67 65 50 61 67 65 29 0d 0a 20 20 20 20 20 20 ......switch.(usagePage)........
4cc0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 55 73 ......{..................case.Us
4ce0 61 67 65 50 61 67 65 2e 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 3a 0d 0a 20 20 20 20 20 20 20 agePage.GenericDesktop:.........
4d00 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 47 65 6e 65 72 69 63 44 65 73 .............return.((GenericDes
4d20 6b 74 6f 70 29 75 73 61 67 65 29 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 ktop)usage).ToString();.........
4d40 20 20 20 20 20 20 20 20 20 63 61 73 65 20 55 73 61 67 65 50 61 67 65 2e 53 69 6d 75 6c 61 74 69 .........case.UsagePage.Simulati
4d60 6f 6e 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 on:......................return.
4d80 28 28 53 69 6d 75 6c 61 74 69 6f 6e 29 75 73 61 67 65 29 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d ((Simulation)usage).ToString();.
4da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 .................default:.......
4dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 ...............return.null;.....
4de0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 .........}..........}...........
4e00 20 5b 53 65 72 69 61 6c 69 7a 61 62 6c 65 5d 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 .[Serializable]..........private
4e20 20 63 6c 61 73 73 20 48 49 44 4c 61 79 6f 75 74 42 75 69 6c 64 65 72 0d 0a 20 20 20 20 20 20 20 .class.HIDLayoutBuilder.........
4e40 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 64 69 .{..............public.string.di
4e60 73 70 6c 61 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 48 splayName;..............public.H
4e80 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 20 68 69 64 44 65 73 63 72 69 70 74 6f 72 IDDeviceDescriptor.hidDescriptor
4ea0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 70 61 72 ;..............public.string.par
4ec0 65 6e 74 4c 61 79 6f 75 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 54 entLayout;..............public.T
4ee0 79 70 65 20 64 65 76 69 63 65 54 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 ype.deviceType;................p
4f00 75 62 6c 69 63 20 49 6e 70 75 74 43 6f 6e 74 72 6f 6c 4c 61 79 6f 75 74 20 42 75 69 6c 64 28 29 ublic.InputControlLayout.Build()
4f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..............{.................
4f40 20 76 61 72 20 62 75 69 6c 64 65 72 20 3d 20 6e 65 77 20 49 6e 70 75 74 43 6f 6e 74 72 6f 6c 4c .var.builder.=.new.InputControlL
4f60 61 79 6f 75 74 2e 42 75 69 6c 64 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b ayout.Builder..................{
4f80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6c 61 79 4e 61 6d ......................displayNam
4fa0 65 20 3d 20 64 69 73 70 6c 61 79 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e.=.displayName,................
4fc0 20 20 20 20 20 20 74 79 70 65 20 3d 20 64 65 76 69 63 65 54 79 70 65 2c 0d 0a 20 20 20 20 20 20 ......type.=.deviceType,........
4fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 74 65 6e 64 73 4c 61 79 6f 75 74 20 3d 20 70 61 ..............extendsLayout.=.pa
5000 72 65 6e 74 4c 61 79 6f 75 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rentLayout,.....................
5020 20 73 74 61 74 65 46 6f 72 6d 61 74 20 3d 20 6e 65 77 20 46 6f 75 72 43 43 28 27 48 27 2c 20 27 .stateFormat.=.new.FourCC('H',.'
5040 49 27 2c 20 27 44 27 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a 0d 0a I',.'D')..................};....
5060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 78 45 6c 65 6d 65 6e 74 20 3d 20 41 ................var.xElement.=.A
5080 72 72 61 79 2e 46 69 6e 64 28 68 69 64 44 65 73 63 72 69 70 74 6f 72 2e 65 6c 65 6d 65 6e 74 73 rray.Find(hidDescriptor.elements
50a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 20 3d ,......................element.=
50c0 3e 20 65 6c 65 6d 65 6e 74 2e 75 73 61 67 65 50 61 67 65 20 3d 3d 20 55 73 61 67 65 50 61 67 65 >.element.usagePage.==.UsagePage
50e0 2e 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 .GenericDesktop.&&..............
5100 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 75 73 61 67 65 20 3d 3d 20 28 69 6e 74 29 47 65 ........element.usage.==.(int)Ge
5120 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 58 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nericDesktop.X);................
5140 20 20 76 61 72 20 79 45 6c 65 6d 65 6e 74 20 3d 20 41 72 72 61 79 2e 46 69 6e 64 28 68 69 64 44 ..var.yElement.=.Array.Find(hidD
5160 65 73 63 72 69 70 74 6f 72 2e 65 6c 65 6d 65 6e 74 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 escriptor.elements,.............
5180 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 20 3d 3e 20 65 6c 65 6d 65 6e 74 2e 75 73 61 67 .........element.=>.element.usag
51a0 65 50 61 67 65 20 3d 3d 20 55 73 61 67 65 50 61 67 65 2e 47 65 6e 65 72 69 63 44 65 73 6b 74 6f ePage.==.UsagePage.GenericDeskto
51c0 70 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e p.&&......................elemen
51e0 74 2e 75 73 61 67 65 20 3d 3d 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 59 t.usage.==.(int)GenericDesktop.Y
5200 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 52 45 56 49 45 57 );....................////REVIEW
5220 3a 20 69 6e 20 63 61 73 65 20 74 68 65 20 58 20 61 6e 64 20 59 20 63 6f 6e 74 72 6f 6c 20 61 72 :.in.case.the.X.and.Y.control.ar
5240 65 20 6e 6f 6e 2d 63 6f 6e 74 69 67 75 6f 75 73 2c 20 73 68 6f 75 6c 64 20 77 65 20 65 76 65 6e e.non-contiguous,.should.we.even
5260 20 74 75 72 6e 20 74 68 65 6d 20 69 6e 74 6f 20 61 20 73 74 69 63 6b 0d 0a 20 20 20 20 20 20 20 .turn.them.into.a.stick.........
5280 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 52 45 56 49 45 57 3a 20 74 68 65 72 65 20 2a 68 61 73 2a .........////REVIEW:.there.*has*
52a0 20 74 6f 20 62 65 20 61 6e 20 58 20 61 6e 64 20 61 20 59 20 66 6f 72 20 75 73 20 74 6f 20 62 65 .to.be.an.X.and.a.Y.for.us.to.be
52c0 20 61 62 6c 65 20 74 6f 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 63 72 65 61 74 65 20 61 20 6a .able.to.successfully.create.a.j
52e0 6f 79 73 74 69 63 6b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 47 oystick..................//.If.G
5300 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 58 20 61 6e 64 20 47 65 6e 65 72 69 63 44 65 73 6b 74 enericDesktop.X.and.GenericDeskt
5320 6f 70 2e 59 20 61 72 65 20 62 6f 74 68 20 70 72 65 73 65 6e 74 2c 20 74 75 72 6e 20 74 68 65 20 op.Y.are.both.present,.turn.the.
5340 63 6f 6e 74 72 6f 6c 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 6e 74 controls..................//.int
5360 6f 20 61 20 73 74 69 63 6b 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 o.a.stick...................var.
5380 68 61 76 65 53 74 69 63 6b 20 3d 20 78 45 6c 65 6d 65 6e 74 2e 75 73 61 67 65 20 3d 3d 20 28 69 haveStick.=.xElement.usage.==.(i
53a0 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 58 20 26 26 20 79 45 6c 65 6d 65 6e 74 2e nt)GenericDesktop.X.&&.yElement.
53c0 75 73 61 67 65 20 3d 3d 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 59 3b 0d usage.==.(int)GenericDesktop.Y;.
53e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 76 65 53 74 69 63 6b 29 0d .................if.(haveStick).
5400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 .................{..............
5420 20 20 20 20 20 20 20 20 69 6e 74 20 62 69 74 4f 66 66 73 65 74 2c 20 62 79 74 65 4f 66 66 73 65 ........int.bitOffset,.byteOffse
5440 74 2c 20 73 69 7a 65 49 6e 42 69 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t,.sizeInBits;..................
5460 20 20 20 20 69 66 20 28 78 45 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 ....if.(xElement.reportOffsetInB
5480 69 74 73 20 3c 3d 20 79 45 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 its.<=.yElement.reportOffsetInBi
54a0 74 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 ts)......................{......
54c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 69 74 4f 66 66 73 65 74 20 3d 20 ....................bitOffset.=.
54e0 78 45 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 74 73 20 25 20 38 3b xElement.reportOffsetInBits.%.8;
5500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 4f 66 ..........................byteOf
5520 66 73 65 74 20 3d 20 78 45 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 fset.=.xElement.reportOffsetInBi
5540 74 73 20 2f 20 38 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ts./.8;.........................
5560 20 73 69 7a 65 49 6e 42 69 74 73 20 3d 20 28 79 45 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 4f 66 .sizeInBits.=.(yElement.reportOf
5580 66 73 65 74 49 6e 42 69 74 73 20 2b 20 79 45 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 53 69 7a 65 fsetInBits.+.yElement.reportSize
55a0 49 6e 42 69 74 73 29 20 2d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 InBits).-.......................
55c0 20 20 20 20 20 20 20 78 45 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 .......xElement.reportOffsetInBi
55e0 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 ts;......................}......
5600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 ................else............
5620 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........{.....................
5640 20 20 20 20 20 62 69 74 4f 66 66 73 65 74 20 3d 20 79 45 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 .....bitOffset.=.yElement.report
5660 4f 66 66 73 65 74 49 6e 42 69 74 73 20 25 20 38 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 OffsetInBits.%.8;...............
5680 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 4f 66 66 73 65 74 20 3d 20 79 45 6c 65 6d 65 6e 74 ...........byteOffset.=.yElement
56a0 2e 72 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 74 73 20 2f 20 38 3b 0d 0a 20 20 20 20 20 20 .reportOffsetInBits./.8;........
56c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 49 6e 42 69 74 73 20 3d 20 28 ..................sizeInBits.=.(
56e0 78 45 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 74 73 20 2b 20 78 45 xElement.reportOffsetInBits.+.xE
5700 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 53 69 7a 65 49 6e 42 69 74 73 29 20 2d 0d 0a 20 20 20 20 lement.reportSizeInBits).-......
5720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 79 45 6c 65 6d 65 6e 74 ........................yElement
5740 2e 72 65 70 6f 72 74 53 69 7a 65 49 6e 42 69 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 .reportSizeInBits;..............
5760 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........}.......................
5780 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 73 74 69 63 6b 4e 61 6d 65 20 3d 20 22 73 74 69 63 6b .const.string.stickName.=."stick
57a0 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e ";......................builder.
57c0 41 64 64 43 6f 6e 74 72 6f 6c 28 73 74 69 63 6b 4e 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 20 AddControl(stickName)...........
57e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 44 69 73 70 6c 61 79 4e 61 6d 65 28 ................WithDisplayName(
5800 22 53 74 69 63 6b 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "Stick")........................
5820 20 20 2e 57 69 74 68 4c 61 79 6f 75 74 28 22 53 74 69 63 6b 22 29 0d 0a 20 20 20 20 20 20 20 20 ...WithLayout("Stick")..........
5840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 42 69 74 4f 66 66 73 65 74 28 28 .................WithBitOffset((
5860 75 69 6e 74 29 62 69 74 4f 66 66 73 65 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 uint)bitOffset).................
5880 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 42 79 74 65 4f 66 66 73 65 74 28 28 75 69 6e 74 29 62 ..........WithByteOffset((uint)b
58a0 79 74 65 4f 66 66 73 65 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 yteOffset)......................
58c0 20 20 20 20 2e 57 69 74 68 53 69 7a 65 49 6e 42 69 74 73 28 28 75 69 6e 74 29 73 69 7a 65 49 6e .....WithSizeInBits((uint)sizeIn
58e0 42 69 74 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e Bits)...........................
5900 57 69 74 68 55 73 61 67 65 73 28 43 6f 6d 6d 6f 6e 55 73 61 67 65 73 2e 50 72 69 6d 61 72 79 32 WithUsages(CommonUsages.Primary2
5920 44 4d 6f 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 DMotion);.......................
5940 20 76 61 72 20 78 45 6c 65 6d 65 6e 74 50 61 72 61 6d 65 74 65 72 73 20 3d 20 78 45 6c 65 6d 65 .var.xElementParameters.=.xEleme
5960 6e 74 2e 44 65 74 65 72 6d 69 6e 65 50 61 72 61 6d 65 74 65 72 73 28 29 3b 0d 0a 20 20 20 20 20 nt.DetermineParameters();.......
5980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 79 45 6c 65 6d 65 6e 74 50 61 72 61 6d ...............var.yElementParam
59a0 65 74 65 72 73 20 3d 20 79 45 6c 65 6d 65 6e 74 2e 44 65 74 65 72 6d 69 6e 65 50 61 72 61 6d 65 eters.=.yElement.DetermineParame
59c0 74 65 72 73 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 ters();........................b
59e0 75 69 6c 64 65 72 2e 41 64 64 43 6f 6e 74 72 6f 6c 28 73 74 69 63 6b 4e 61 6d 65 20 2b 20 22 2f uilder.AddControl(stickName.+."/
5a00 78 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 x")...........................Wi
5a20 74 68 46 6f 72 6d 61 74 28 78 45 6c 65 6d 65 6e 74 2e 69 73 53 69 67 6e 65 64 20 3f 20 49 6e 70 thFormat(xElement.isSigned.?.Inp
5a40 75 74 53 74 61 74 65 42 6c 6f 63 6b 2e 46 6f 72 6d 61 74 53 42 69 74 20 3a 20 49 6e 70 75 74 53 utStateBlock.FormatSBit.:.InputS
5a60 74 61 74 65 42 6c 6f 63 6b 2e 46 6f 72 6d 61 74 42 69 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 tateBlock.FormatBit)............
5a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 42 79 74 65 4f 66 66 73 65 74 28 28 75 ...............WithByteOffset((u
5aa0 69 6e 74 29 28 78 45 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 74 73 int)(xElement.reportOffsetInBits
5ac0 20 2f 20 38 20 2d 20 62 79 74 65 4f 66 66 73 65 74 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ./.8.-.byteOffset)).............
5ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 42 69 74 4f 66 66 73 65 74 28 28 75 69 6e ..............WithBitOffset((uin
5b00 74 29 28 78 45 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 74 73 20 25 t)(xElement.reportOffsetInBits.%
5b20 20 38 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 .8))...........................W
5b40 69 74 68 53 69 7a 65 49 6e 42 69 74 73 28 28 75 69 6e 74 29 78 45 6c 65 6d 65 6e 74 2e 72 65 70 ithSizeInBits((uint)xElement.rep
5b60 6f 72 74 53 69 7a 65 49 6e 42 69 74 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ortSizeInBits)..................
5b80 20 20 20 20 20 20 20 20 2e 57 69 74 68 50 61 72 61 6d 65 74 65 72 73 28 78 45 6c 65 6d 65 6e 74 .........WithParameters(xElement
5ba0 50 61 72 61 6d 65 74 65 72 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Parameters).....................
5bc0 20 20 20 20 20 2e 57 69 74 68 44 65 66 61 75 6c 74 53 74 61 74 65 28 78 45 6c 65 6d 65 6e 74 2e ......WithDefaultState(xElement.
5be0 44 65 74 65 72 6d 69 6e 65 44 65 66 61 75 6c 74 53 74 61 74 65 28 29 29 0d 0a 20 20 20 20 20 20 DetermineDefaultState())........
5c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 50 72 6f 63 65 73 73 6f 72 ...................WithProcessor
5c20 73 28 78 45 6c 65 6d 65 6e 74 2e 44 65 74 65 72 6d 69 6e 65 50 72 6f 63 65 73 73 6f 72 73 28 29 s(xElement.DetermineProcessors()
5c40 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 );........................builde
5c60 72 2e 41 64 64 43 6f 6e 74 72 6f 6c 28 73 74 69 63 6b 4e 61 6d 65 20 2b 20 22 2f 79 22 29 0d 0a r.AddControl(stickName.+."/y")..
5c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 46 6f 72 .........................WithFor
5ca0 6d 61 74 28 79 45 6c 65 6d 65 6e 74 2e 69 73 53 69 67 6e 65 64 20 3f 20 49 6e 70 75 74 53 74 61 mat(yElement.isSigned.?.InputSta
5cc0 74 65 42 6c 6f 63 6b 2e 46 6f 72 6d 61 74 53 42 69 74 20 3a 20 49 6e 70 75 74 53 74 61 74 65 42 teBlock.FormatSBit.:.InputStateB
5ce0 6c 6f 63 6b 2e 46 6f 72 6d 61 74 42 69 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 lock.FormatBit).................
5d00 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 42 79 74 65 4f 66 66 73 65 74 28 28 75 69 6e 74 29 28 ..........WithByteOffset((uint)(
5d20 79 45 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 74 73 20 2f 20 38 20 yElement.reportOffsetInBits./.8.
5d40 2d 20 62 79 74 65 4f 66 66 73 65 74 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -.byteOffset))..................
5d60 20 20 20 20 20 20 20 20 2e 57 69 74 68 42 69 74 4f 66 66 73 65 74 28 28 75 69 6e 74 29 28 79 45 .........WithBitOffset((uint)(yE
5d80 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 74 73 20 25 20 38 29 29 0d lement.reportOffsetInBits.%.8)).
5da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 53 69 ..........................WithSi
5dc0 7a 65 49 6e 42 69 74 73 28 28 75 69 6e 74 29 79 45 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 53 69 zeInBits((uint)yElement.reportSi
5de0 7a 65 49 6e 42 69 74 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 zeInBits).......................
5e00 20 20 20 2e 57 69 74 68 50 61 72 61 6d 65 74 65 72 73 28 79 45 6c 65 6d 65 6e 74 50 61 72 61 6d ....WithParameters(yElementParam
5e20 65 74 65 72 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 eters)..........................
5e40 2e 57 69 74 68 44 65 66 61 75 6c 74 53 74 61 74 65 28 79 45 6c 65 6d 65 6e 74 2e 44 65 74 65 72 .WithDefaultState(yElement.Deter
5e60 6d 69 6e 65 44 65 66 61 75 6c 74 53 74 61 74 65 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 mineDefaultState()).............
5e80 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 50 72 6f 63 65 73 73 6f 72 73 28 79 45 6c ..............WithProcessors(yEl
5ea0 65 6d 65 6e 74 2e 44 65 74 65 72 6d 69 6e 65 50 72 6f 63 65 73 73 6f 72 73 28 29 29 3b 0d 0a 0d ement.DetermineProcessors());...
5ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 50 72 6f 70 61 67 61 74 .....................//.Propagat
5ee0 65 20 70 61 72 61 6d 65 74 65 72 73 20 6e 65 65 64 65 64 20 6f 6e 20 78 20 61 6e 64 20 79 20 74 e.parameters.needed.on.x.and.y.t
5f00 6f 20 74 68 65 20 66 6f 75 72 20 62 75 74 74 6f 6e 20 63 6f 6e 74 72 6f 6c 73 2e 0d 0a 20 20 20 o.the.four.button.controls......
5f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41 64 64 43 6f 6e 74 .................builder.AddCont
5f40 72 6f 6c 28 73 74 69 63 6b 4e 61 6d 65 20 2b 20 22 2f 75 70 22 29 0d 0a 20 20 20 20 20 20 20 20 rol(stickName.+."/up")..........
5f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 50 61 72 61 6d 65 74 65 72 73 28 .................WithParameters(
5f80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 ..............................St
5fa0 72 69 6e 67 48 65 6c 70 65 72 73 2e 4a 6f 69 6e 28 22 2c 22 2c 20 79 45 6c 65 6d 65 6e 74 50 61 ringHelpers.Join(",",.yElementPa
5fc0 72 61 6d 65 74 65 72 73 2c 20 22 63 6c 61 6d 70 3d 32 2c 63 6c 61 6d 70 4d 69 6e 3d 2d 31 2c 63 rameters,."clamp=2,clampMin=-1,c
5fe0 6c 61 6d 70 4d 61 78 3d 30 2c 69 6e 76 65 72 74 3d 74 72 75 65 22 29 29 3b 0d 0a 20 20 20 20 20 lampMax=0,invert=true"));.......
6000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41 64 64 43 6f 6e 74 72 6f ...............builder.AddContro
6020 6c 28 73 74 69 63 6b 4e 61 6d 65 20 2b 20 22 2f 64 6f 77 6e 22 29 0d 0a 20 20 20 20 20 20 20 20 l(stickName.+."/down")..........
6040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 50 61 72 61 6d 65 74 65 72 73 28 .................WithParameters(
6060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 ..............................St
6080 72 69 6e 67 48 65 6c 70 65 72 73 2e 4a 6f 69 6e 28 22 2c 22 2c 20 79 45 6c 65 6d 65 6e 74 50 61 ringHelpers.Join(",",.yElementPa
60a0 72 61 6d 65 74 65 72 73 2c 20 22 63 6c 61 6d 70 3d 32 2c 63 6c 61 6d 70 4d 69 6e 3d 30 2c 63 6c rameters,."clamp=2,clampMin=0,cl
60c0 61 6d 70 4d 61 78 3d 31 2c 69 6e 76 65 72 74 3d 66 61 6c 73 65 22 29 29 3b 0d 0a 20 20 20 20 20 ampMax=1,invert=false"));.......
60e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41 64 64 43 6f 6e 74 72 6f ...............builder.AddContro
6100 6c 28 73 74 69 63 6b 4e 61 6d 65 20 2b 20 22 2f 6c 65 66 74 22 29 0d 0a 20 20 20 20 20 20 20 20 l(stickName.+."/left")..........
6120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 50 61 72 61 6d 65 74 65 72 73 28 .................WithParameters(
6140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 ..............................St
6160 72 69 6e 67 48 65 6c 70 65 72 73 2e 4a 6f 69 6e 28 22 2c 22 2c 20 78 45 6c 65 6d 65 6e 74 50 61 ringHelpers.Join(",",.xElementPa
6180 72 61 6d 65 74 65 72 73 2c 20 22 63 6c 61 6d 70 3d 32 2c 63 6c 61 6d 70 4d 69 6e 3d 2d 31 2c 63 rameters,."clamp=2,clampMin=-1,c
61a0 6c 61 6d 70 4d 61 78 3d 30 2c 69 6e 76 65 72 74 22 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 lampMax=0,invert"));............
61c0 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41 64 64 43 6f 6e 74 72 6f 6c 28 73 74 69 ..........builder.AddControl(sti
61e0 63 6b 4e 61 6d 65 20 2b 20 22 2f 72 69 67 68 74 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ckName.+."/right")..............
6200 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 50 61 72 61 6d 65 74 65 72 73 28 0d 0a 20 20 .............WithParameters(....
6220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 ..........................String
6240 48 65 6c 70 65 72 73 2e 4a 6f 69 6e 28 22 2c 22 2c 20 78 45 6c 65 6d 65 6e 74 50 61 72 61 6d 65 Helpers.Join(",",.xElementParame
6260 74 65 72 73 2c 20 22 63 6c 61 6d 70 3d 32 2c 63 6c 61 6d 70 4d 69 6e 3d 30 2c 63 6c 61 6d 70 4d ters,."clamp=2,clampMin=0,clampM
6280 61 78 3d 31 22 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 ax=1"));..................}.....
62a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 50 72 6f 63 65 73 73 20 48 49 44 20 64 65 ...............//.Process.HID.de
62c0 73 63 72 69 70 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 65 scriptor...................var.e
62e0 6c 65 6d 65 6e 74 73 20 3d 20 68 69 64 44 65 73 63 72 69 70 74 6f 72 2e 65 6c 65 6d 65 6e 74 73 lements.=.hidDescriptor.elements
6300 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 65 6c 65 6d 65 6e 74 43 6f ;..................var.elementCo
6320 75 6e 74 20 3d 20 65 6c 65 6d 65 6e 74 73 2e 4c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20 20 unt.=.elements.Length;..........
6340 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20 3c 20 65 6c 65 6d ........for.(var.i.=.0;.i.<.elem
6360 65 6e 74 43 6f 75 6e 74 3b 20 2b 2b 69 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 entCount;.++i)..................
6380 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 76 61 72 20 65 {......................ref.var.e
63a0 6c 65 6d 65 6e 74 20 3d 20 72 65 66 20 65 6c 65 6d 65 6e 74 73 5b 69 5d 3b 0d 0a 20 20 20 20 20 lement.=.ref.elements[i];.......
63c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 ...............if.(element.repor
63e0 74 54 79 70 65 20 21 3d 20 48 49 44 52 65 70 6f 72 74 54 79 70 65 2e 49 6e 70 75 74 29 0d 0a 20 tType.!=.HIDReportType.Input)...
6400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b .......................continue;
6420 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53 6b 69 70 20 ........................//.Skip.
6440 58 20 61 6e 64 20 59 20 69 66 20 77 65 20 61 6c 72 65 61 64 79 20 74 75 72 6e 65 64 20 74 68 65 X.and.Y.if.we.already.turned.the
6460 6d 20 69 6e 74 6f 20 61 20 73 74 69 63 6b 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 m.into.a.stick..................
6480 20 20 20 20 20 69 66 20 28 68 61 76 65 53 74 69 63 6b 20 26 26 20 28 65 6c 65 6d 65 6e 74 2e 49 .....if.(haveStick.&&.(element.I
64a0 73 28 55 73 61 67 65 50 61 67 65 2e 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2c 20 28 69 6e 74 s(UsagePage.GenericDesktop,.(int
64c0 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 58 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 )GenericDesktop.X).||...........
64e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 .............................ele
6500 6d 65 6e 74 2e 49 73 28 55 73 61 67 65 50 61 67 65 2e 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 ment.Is(UsagePage.GenericDesktop
6520 2c 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 59 29 29 29 0d 0a 20 20 20 20 ,.(int)GenericDesktop.Y)))......
6540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d ....................continue;...
6560 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6c 61 79 6f 75 74 20 .....................var.layout.
6580 3d 20 65 6c 65 6d 65 6e 74 2e 44 65 74 65 72 6d 69 6e 65 4c 61 79 6f 75 74 28 29 3b 0d 0a 20 20 =.element.DetermineLayout();....
65a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 61 79 6f 75 74 20 21 3d 20 ..................if.(layout.!=.
65c0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 null)......................{....
65e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 41 73 73 69 67 6e 20 ......................//.Assign.
6600 75 6e 69 71 75 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 unique.name.....................
6620 20 20 20 20 20 20 76 61 72 20 6e 61 6d 65 20 3d 20 65 6c 65 6d 65 6e 74 2e 44 65 74 65 72 6d 69 ......var.name.=.element.Determi
6640 6e 65 4e 61 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 neName();.......................
6660 20 20 20 44 65 62 75 67 2e 41 73 73 65 72 74 28 21 73 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 ...Debug.Assert(!string.IsNullOr
6680 45 6d 70 74 79 28 6e 61 6d 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Empty(name));...................
66a0 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 53 74 72 69 6e 67 48 65 6c 70 65 72 73 2e 4d 61 6b 65 .......name.=.StringHelpers.Make
66c0 55 6e 69 71 75 65 4e 61 6d 65 28 6e 61 6d 65 2c 20 62 75 69 6c 64 65 72 2e 63 6f 6e 74 72 6f 6c UniqueName(name,.builder.control
66e0 73 2c 20 78 20 3d 3e 20 78 2e 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 s,.x.=>.x.name);................
6700 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 41 64 64 20 63 6f 6e 74 72 6f 6c 2e 0d 0a 20 20 20 ............//.Add.control......
6720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 63 6f 6e 74 72 6f 6c .....................var.control
6740 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .=..............................
6760 62 75 69 6c 64 65 72 2e 41 64 64 43 6f 6e 74 72 6f 6c 28 6e 61 6d 65 29 0d 0a 20 20 20 20 20 20 builder.AddControl(name)........
6780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 44 ...........................WithD
67a0 69 73 70 6c 61 79 4e 61 6d 65 28 65 6c 65 6d 65 6e 74 2e 44 65 74 65 72 6d 69 6e 65 44 69 73 70 isplayName(element.DetermineDisp
67c0 6c 61 79 4e 61 6d 65 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 layName())......................
67e0 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 4c 61 79 6f 75 74 28 6c 61 79 6f 75 74 29 0d .............WithLayout(layout).
6800 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6820 20 2e 57 69 74 68 42 79 74 65 4f 66 66 73 65 74 28 28 75 69 6e 74 29 65 6c 65 6d 65 6e 74 2e 72 ..WithByteOffset((uint)element.r
6840 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 74 73 20 2f 20 38 29 0d 0a 20 20 20 20 20 20 20 20 eportOffsetInBits./.8)..........
6860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 42 69 74 .........................WithBit
6880 4f 66 66 73 65 74 28 28 75 69 6e 74 29 65 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 4f 66 66 73 65 Offset((uint)element.reportOffse
68a0 74 49 6e 42 69 74 73 20 25 20 38 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tInBits.%.8)....................
68c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 53 69 7a 65 49 6e 42 69 74 73 28 28 75 ...............WithSizeInBits((u
68e0 69 6e 74 29 65 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 53 69 7a 65 49 6e 42 69 74 73 29 0d 0a 20 int)element.reportSizeInBits)...
6900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e ................................
6920 57 69 74 68 46 6f 72 6d 61 74 28 65 6c 65 6d 65 6e 74 2e 44 65 74 65 72 6d 69 6e 65 46 6f 72 6d WithFormat(element.DetermineForm
6940 61 74 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 at())...........................
6960 20 20 20 20 20 20 20 2e 57 69 74 68 44 65 66 61 75 6c 74 53 74 61 74 65 28 65 6c 65 6d 65 6e 74 ........WithDefaultState(element
6980 2e 44 65 74 65 72 6d 69 6e 65 44 65 66 61 75 6c 74 53 74 61 74 65 28 29 29 0d 0a 20 20 20 20 20 .DetermineDefaultState()).......
69a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 ............................With
69c0 50 72 6f 63 65 73 73 6f 72 73 28 65 6c 65 6d 65 6e 74 2e 44 65 74 65 72 6d 69 6e 65 50 72 6f 63 Processors(element.DetermineProc
69e0 65 73 73 6f 72 73 28 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 essors());......................
6a00 20 20 20 20 20 20 76 61 72 20 70 61 72 61 6d 65 74 65 72 73 20 3d 20 65 6c 65 6d 65 6e 74 2e 44 ......var.parameters.=.element.D
6a20 65 74 65 72 6d 69 6e 65 50 61 72 61 6d 65 74 65 72 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 etermineParameters();...........
6a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 73 74 72 69 6e 67 2e 49 73 4e 75 6c ...............if.(!string.IsNul
6a60 6c 4f 72 45 6d 70 74 79 28 70 61 72 61 6d 65 74 65 72 73 29 29 0d 0a 20 20 20 20 20 20 20 20 20 lOrEmpty(parameters))...........
6a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 72 6f 6c 2e 57 69 74 68 50 ...................control.WithP
6aa0 61 72 61 6d 65 74 65 72 73 28 70 61 72 61 6d 65 74 65 72 73 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 arameters(parameters);..........
6ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 75 73 61 67 65 73 20 3d 20 65 ..................var.usages.=.e
6ae0 6c 65 6d 65 6e 74 2e 44 65 74 65 72 6d 69 6e 65 55 73 61 67 65 73 28 29 3b 0d 0a 20 20 20 20 20 lement.DetermineUsages();.......
6b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 75 73 61 67 65 73 20 21 3d ...................if.(usages.!=
6b20 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .null)..........................
6b40 20 20 20 20 63 6f 6e 74 72 6f 6c 2e 57 69 74 68 55 73 61 67 65 73 28 75 73 61 67 65 73 29 3b 0d ....control.WithUsages(usages);.
6b60 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 ...........................eleme
6b80 6e 74 2e 41 64 64 43 68 69 6c 64 43 6f 6e 74 72 6f 6c 73 28 72 65 66 20 65 6c 65 6d 65 6e 74 2c nt.AddChildControls(ref.element,
6ba0 20 6e 61 6d 65 2c 20 72 65 66 20 62 75 69 6c 64 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 .name,.ref.builder);............
6bc0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a ..........}..................}..
6be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 75 69 6c 64 65 72 ..................return.builder
6c00 2e 42 75 69 6c 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 .Build();..............}........
6c20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 48 49 44 52 65 ..}............public.enum.HIDRe
6c40 70 6f 72 74 54 79 70 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 portType..........{.............
6c60 20 55 6e 6b 6e 6f 77 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 70 75 74 2c 0d 0a 20 .Unknown,..............Input,...
6c80 20 20 20 20 20 20 20 20 20 20 20 4f 75 74 70 75 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ...........Output,..............
6ca0 46 65 61 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 Feature..........}............pu
6cc0 62 6c 69 63 20 65 6e 75 6d 20 48 49 44 43 6f 6c 6c 65 63 74 69 6f 6e 54 79 70 65 0d 0a 20 20 20 blic.enum.HIDCollectionType.....
6ce0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 50 68 79 73 69 63 61 6c 20 3d 20 30 .....{..............Physical.=.0
6d00 78 30 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 20 3d 20 x00,..............Application.=.
6d20 30 78 30 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4c 6f 67 69 63 61 6c 20 3d 20 30 78 30 0x01,..............Logical.=.0x0
6d40 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 52 65 70 6f 72 74 20 3d 20 30 78 30 33 2c 0d 0a 2,..............Report.=.0x03,..
6d60 20 20 20 20 20 20 20 20 20 20 20 20 4e 61 6d 65 64 41 72 72 61 79 20 3d 20 30 78 30 34 2c 0d 0a ............NamedArray.=.0x04,..
6d80 20 20 20 20 20 20 20 20 20 20 20 20 55 73 61 67 65 53 77 69 74 63 68 20 3d 20 30 78 30 35 2c 0d ............UsageSwitch.=.0x05,.
6da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 73 61 67 65 4d 6f 64 69 66 69 65 72 20 3d 20 30 78 30 .............UsageModifier.=.0x0
6dc0 36 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 5b 53 79 73 74 65 6d 2e 6..........}............[System.
6de0 44 69 61 67 6e 6f 73 74 69 63 73 2e 43 6f 64 65 41 6e 61 6c 79 73 69 73 2e 53 75 70 70 72 65 73 Diagnostics.CodeAnalysis.Suppres
6e00 73 4d 65 73 73 61 67 65 28 22 4d 69 63 72 6f 73 6f 66 74 2e 4e 61 6d 69 6e 67 22 2c 20 22 43 41 sMessage("Microsoft.Naming",."CA
6e20 31 37 32 36 3a 55 73 65 50 72 65 66 65 72 72 65 64 54 65 72 6d 73 22 2c 20 4d 65 73 73 61 67 65 1726:UsePreferredTerms",.Message
6e40 49 64 20 3d 20 22 46 6c 61 67 73 22 2c 20 4a 75 73 74 69 66 69 63 61 74 69 6f 6e 20 3d 20 22 4e Id.=."Flags",.Justification.=."N
6e60 6f 20 62 65 74 74 65 72 20 74 65 72 6d 20 66 6f 72 20 75 6e 64 65 72 6c 79 69 6e 67 20 64 61 74 o.better.term.for.underlying.dat
6e80 61 2e 22 29 5d 0d 0a 20 20 20 20 20 20 20 20 5b 46 6c 61 67 73 5d 0d 0a 20 20 20 20 20 20 20 20 a.")]..........[Flags]..........
6ea0 70 75 62 6c 69 63 20 65 6e 75 6d 20 48 49 44 45 6c 65 6d 65 6e 74 46 6c 61 67 73 0d 0a 20 20 20 public.enum.HIDElementFlags.....
6ec0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e 73 74 61 6e 74 20 3d 20 31 .....{..............Constant.=.1
6ee0 20 3c 3c 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 56 61 72 69 61 62 6c 65 20 3d 20 31 .<<.0,..............Variable.=.1
6f00 20 3c 3c 20 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 52 65 6c 61 74 69 76 65 20 3d 20 31 .<<.1,..............Relative.=.1
6f20 20 3c 3c 20 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 57 72 61 70 20 3d 20 31 20 3c 3c 20 .<<.2,..............Wrap.=.1.<<.
6f40 33 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4e 6f 6e 4c 69 6e 65 61 72 20 3d 20 31 20 3c 3c 3,..............NonLinear.=.1.<<
6f60 20 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4e 6f 50 72 65 66 65 72 72 65 64 20 3d 20 31 .4,..............NoPreferred.=.1
6f80 20 3c 3c 20 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4e 75 6c 6c 53 74 61 74 65 20 3d 20 .<<.5,..............NullState.=.
6fa0 31 20 3c 3c 20 36 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 56 6f 6c 61 74 69 6c 65 20 3d 20 1.<<.6,..............Volatile.=.
6fc0 31 20 3c 3c 20 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 42 75 66 66 65 72 65 64 42 79 74 1.<<.7,..............BufferedByt
6fe0 65 73 20 3d 20 31 20 3c 3c 20 38 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 es.=.1.<<.8..........}..........
7000 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 73 ..///.<summary>..........///.Des
7020 63 72 69 70 74 6f 72 20 66 6f 72 20 61 20 73 69 6e 67 6c 65 20 72 65 70 6f 72 74 20 65 6c 65 6d criptor.for.a.single.report.elem
7040 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 ent...........///.</summary>....
7060 20 20 20 20 20 20 5b 53 65 72 69 61 6c 69 7a 61 62 6c 65 5d 0d 0a 20 20 20 20 20 20 20 20 70 75 ......[Serializable]..........pu
7080 62 6c 69 63 20 73 74 72 75 63 74 20 48 49 44 45 6c 65 6d 65 6e 74 44 65 73 63 72 69 70 74 6f 72 blic.struct.HIDElementDescriptor
70a0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 ..........{..............public.
70c0 69 6e 74 20 75 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 55 int.usage;..............public.U
70e0 73 61 67 65 50 61 67 65 20 75 73 61 67 65 50 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 sagePage.usagePage;.............
7100 20 70 75 62 6c 69 63 20 69 6e 74 20 75 6e 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 .public.int.unit;..............p
7120 75 62 6c 69 63 20 69 6e 74 20 75 6e 69 74 45 78 70 6f 6e 65 6e 74 3b 0d 0a 20 20 20 20 20 20 20 ublic.int.unitExponent;.........
7140 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6c 6f 67 69 63 61 6c 4d 69 6e 3b 0d 0a 20 20 20 .....public.int.logicalMin;.....
7160 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 6c 6f 67 69 63 61 6c 4d 61 78 3b 0d .........public.int.logicalMax;.
7180 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 70 68 79 73 69 63 61 6c .............public.int.physical
71a0 4d 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 70 68 79 Min;..............public.int.phy
71c0 73 69 63 61 6c 4d 61 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 48 49 sicalMax;..............public.HI
71e0 44 52 65 70 6f 72 74 54 79 70 65 20 72 65 70 6f 72 74 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 DReportType.reportType;.........
7200 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 63 6f 6c 6c 65 63 74 69 6f 6e 49 6e 64 65 78 3b .....public.int.collectionIndex;
7220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 72 65 70 6f 72 74 49 ..............public.int.reportI
7240 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 72 65 70 6f 72 d;..............public.int.repor
7260 74 53 69 7a 65 49 6e 42 69 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 tSizeInBits;..............public
7280 20 69 6e 74 20 72 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 74 73 3b 0d 0a 20 20 20 20 20 20 .int.reportOffsetInBits;........
72a0 20 20 20 20 20 20 5b 53 79 73 74 65 6d 2e 44 69 61 67 6e 6f 73 74 69 63 73 2e 43 6f 64 65 41 6e ......[System.Diagnostics.CodeAn
72c0 61 6c 79 73 69 73 2e 53 75 70 70 72 65 73 73 4d 65 73 73 61 67 65 28 22 4d 69 63 72 6f 73 6f 66 alysis.SuppressMessage("Microsof
72e0 74 2e 4e 61 6d 69 6e 67 22 2c 20 22 43 41 31 37 32 36 3a 55 73 65 50 72 65 66 65 72 72 65 64 54 t.Naming",."CA1726:UsePreferredT
7300 65 72 6d 73 22 2c 20 4d 65 73 73 61 67 65 49 64 20 3d 20 22 66 6c 61 67 73 22 2c 20 4a 75 73 74 erms",.MessageId.=."flags",.Just
7320 69 66 69 63 61 74 69 6f 6e 20 3d 20 22 4e 6f 20 62 65 74 74 65 72 20 74 65 72 6d 20 66 6f 72 20 ification.=."No.better.term.for.
7340 75 6e 64 65 72 6c 79 69 6e 67 20 64 61 74 61 2e 22 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 underlying.data.")].............
7360 20 70 75 62 6c 69 63 20 48 49 44 45 6c 65 6d 65 6e 74 46 6c 61 67 73 20 66 6c 61 67 73 3b 0d 0a .public.HIDElementFlags.flags;..
7380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 46 69 65 6c 64 73 20 6f 6e 6c 79 20 72 65 6c ..............//.Fields.only.rel
73a0 65 76 61 6e 74 20 74 6f 20 61 72 72 61 79 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 evant.to.arrays...............pu
73c0 62 6c 69 63 20 69 6e 74 3f 20 75 73 61 67 65 4d 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 blic.int?.usageMin;.............
73e0 20 70 75 62 6c 69 63 20 69 6e 74 3f 20 75 73 61 67 65 4d 61 78 3b 0d 0a 0d 0a 20 20 20 20 20 20 .public.int?.usageMax;..........
7400 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 68 61 73 4e 75 6c 6c 53 74 61 74 65 20 3d ......public.bool.hasNullState.=
7420 3e 20 28 66 6c 61 67 73 20 26 20 48 49 44 45 6c 65 6d 65 6e 74 46 6c 61 67 73 2e 4e 75 6c 6c 53 >.(flags.&.HIDElementFlags.NullS
7440 74 61 74 65 29 20 3d 3d 20 48 49 44 45 6c 65 6d 65 6e 74 46 6c 61 67 73 2e 4e 75 6c 6c 53 74 61 tate).==.HIDElementFlags.NullSta
7460 74 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 68 te;................public.bool.h
7480 61 73 50 72 65 66 65 72 72 65 64 53 74 61 74 65 20 3d 3e 20 28 66 6c 61 67 73 20 26 20 48 49 44 asPreferredState.=>.(flags.&.HID
74a0 45 6c 65 6d 65 6e 74 46 6c 61 67 73 2e 4e 6f 50 72 65 66 65 72 72 65 64 29 20 21 3d 20 48 49 44 ElementFlags.NoPreferred).!=.HID
74c0 45 6c 65 6d 65 6e 74 46 6c 61 67 73 2e 4e 6f 50 72 65 66 65 72 72 65 64 3b 0d 0a 0d 0a 20 20 20 ElementFlags.NoPreferred;.......
74e0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 69 73 41 72 72 61 79 20 3d 3e 20 .........public.bool.isArray.=>.
7500 28 66 6c 61 67 73 20 26 20 48 49 44 45 6c 65 6d 65 6e 74 46 6c 61 67 73 2e 56 61 72 69 61 62 6c (flags.&.HIDElementFlags.Variabl
7520 65 29 20 21 3d 20 48 49 44 45 6c 65 6d 65 6e 74 46 6c 61 67 73 2e 56 61 72 69 61 62 6c 65 3b 0d e).!=.HIDElementFlags.Variable;.
7540 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 69 73 4e 6f 6e ...............public.bool.isNon
7560 4c 69 6e 65 61 72 20 3d 3e 20 28 66 6c 61 67 73 20 26 20 48 49 44 45 6c 65 6d 65 6e 74 46 6c 61 Linear.=>.(flags.&.HIDElementFla
7580 67 73 2e 4e 6f 6e 4c 69 6e 65 61 72 29 20 3d 3d 20 48 49 44 45 6c 65 6d 65 6e 74 46 6c 61 67 73 gs.NonLinear).==.HIDElementFlags
75a0 2e 4e 6f 6e 4c 69 6e 65 61 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 .NonLinear;................publi
75c0 63 20 62 6f 6f 6c 20 69 73 52 65 6c 61 74 69 76 65 20 3d 3e 20 28 66 6c 61 67 73 20 26 20 48 49 c.bool.isRelative.=>.(flags.&.HI
75e0 44 45 6c 65 6d 65 6e 74 46 6c 61 67 73 2e 52 65 6c 61 74 69 76 65 29 20 3d 3d 20 48 49 44 45 6c DElementFlags.Relative).==.HIDEl
7600 65 6d 65 6e 74 46 6c 61 67 73 2e 52 65 6c 61 74 69 76 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 ementFlags.Relative;............
7620 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 69 73 43 6f 6e 73 74 61 6e 74 20 3d 3e 20 28 66 ....public.bool.isConstant.=>.(f
7640 6c 61 67 73 20 26 20 48 49 44 45 6c 65 6d 65 6e 74 46 6c 61 67 73 2e 43 6f 6e 73 74 61 6e 74 29 lags.&.HIDElementFlags.Constant)
7660 20 3d 3d 20 48 49 44 45 6c 65 6d 65 6e 74 46 6c 61 67 73 2e 43 6f 6e 73 74 61 6e 74 3b 0d 0a 0d .==.HIDElementFlags.Constant;...
7680 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 69 73 57 72 61 70 70 .............public.bool.isWrapp
76a0 69 6e 67 20 3d 3e 20 28 66 6c 61 67 73 20 26 20 48 49 44 45 6c 65 6d 65 6e 74 46 6c 61 67 73 2e ing.=>.(flags.&.HIDElementFlags.
76c0 57 72 61 70 29 20 3d 3d 20 48 49 44 45 6c 65 6d 65 6e 74 46 6c 61 67 73 2e 57 72 61 70 3b 0d 0a Wrap).==.HIDElementFlags.Wrap;..
76e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 62 6f 6f 6c 20 69 73 53 69 ..............internal.bool.isSi
7700 67 6e 65 64 20 3d 3e 20 6c 6f 67 69 63 61 6c 4d 69 6e 20 3c 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 gned.=>.logicalMin.<.0;.........
7720 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 66 6c 6f 61 74 20 6d 69 6e 46 6c 6f 61 74 56 61 .......internal.float.minFloatVa
7740 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 lue..............{..............
7760 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 ....get..................{......
7780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6d 61 78 56 61 6c 75 65 20 3d 20 28 ................var.maxValue.=.(
77a0 31 20 3c 3c 20 72 65 70 6f 72 74 53 69 7a 65 49 6e 42 69 74 73 29 20 2d 20 31 3b 0d 0a 20 20 20 1.<<.reportSizeInBits).-.1;.....
77c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73 53 69 67 6e 65 64 29 0d 0a .................if.(isSigned)..
77e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c ........................return.l
7800 6f 67 69 63 61 6c 4d 69 6e 20 2f 20 28 66 6c 6f 61 74 29 28 28 6d 61 78 56 61 6c 75 65 20 2b 20 ogicalMin./.(float)((maxValue.+.
7820 31 29 20 2f 20 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 1)./.2);......................re
7840 74 75 72 6e 20 6c 6f 67 69 63 61 6c 4d 69 6e 20 2f 20 28 66 6c 6f 61 74 29 6d 61 78 56 61 6c 75 turn.logicalMin./.(float)maxValu
7860 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 e;..................}...........
7880 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 66 6c 6f ...}................internal.flo
78a0 61 74 20 6d 61 78 46 6c 6f 61 74 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d at.maxFloatValue..............{.
78c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 .................get............
78e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 ......{......................var
7900 20 6d 61 78 56 61 6c 75 65 20 3d 20 28 31 20 3c 3c 20 72 65 70 6f 72 74 53 69 7a 65 49 6e 42 69 .maxValue.=.(1.<<.reportSizeInBi
7920 74 73 29 20 2d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 ts).-.1;......................if
7940 20 28 69 73 53 69 67 6e 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(isSigned).....................
7960 20 20 20 20 20 72 65 74 75 72 6e 20 6c 6f 67 69 63 61 6c 4d 61 78 20 2f 20 28 66 6c 6f 61 74 29 .....return.logicalMax./.(float)
7980 28 28 6d 61 78 56 61 6c 75 65 20 2b 20 31 29 20 2f 20 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 ((maxValue.+.1)./.2);...........
79a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 6f 67 69 63 61 6c 4d 61 78 20 2f 20 28 ...........return.logicalMax./.(
79c0 66 6c 6f 61 74 29 6d 61 78 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 float)maxValue;.................
79e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 .}..............}...............
7a00 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 28 55 73 61 67 65 50 61 67 65 20 75 73 61 67 65 50 .public.bool.Is(UsagePage.usageP
7a20 61 67 65 2c 20 69 6e 74 20 75 73 61 67 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a age,.int.usage)..............{..
7a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 73 61 67 65 50 61 67 65 ................return.usagePage
7a60 20 3d 3d 20 74 68 69 73 2e 75 73 61 67 65 50 61 67 65 20 26 26 20 75 73 61 67 65 20 3d 3d 20 74 .==.this.usagePage.&&.usage.==.t
7a80 68 69 73 2e 75 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 his.usage;..............}.......
7aa0 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 69 6e 67 20 44 65 74 65 72 6d 69 .........internal.string.Determi
7ac0 6e 65 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 neName()..............{.........
7ae0 20 20 20 20 20 20 20 20 20 2f 2f 20 49 74 27 73 20 72 61 72 65 20 66 6f 72 20 48 49 44 73 20 74 .........//.It's.rare.for.HIDs.t
7b00 6f 20 64 65 63 6c 61 72 65 20 73 74 72 69 6e 67 20 6e 61 6d 65 73 20 66 6f 72 20 69 74 65 6d 73 o.declare.string.names.for.items
7b20 20 61 6e 64 20 48 49 44 20 64 72 69 76 65 72 73 20 6d 61 79 20 72 65 70 6f 72 74 20 77 65 69 72 .and.HID.drivers.may.report.weir
7b40 64 20 73 74 72 69 6e 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 70 6c d.strings..................//.pl
7b60 75 73 20 74 68 65 72 65 27 73 20 6e 6f 20 67 75 61 72 61 6e 74 65 65 20 74 68 61 74 20 74 68 65 us.there's.no.guarantee.that.the
7b80 73 65 20 6e 61 6d 65 73 20 61 72 65 20 75 6e 69 71 75 65 20 70 65 72 20 69 74 65 6d 2e 20 53 6f se.names.are.unique.per.item..So
7ba0 2c 20 77 65 20 64 6f 6e 27 74 20 62 6f 74 68 65 72 20 68 65 72 65 20 77 69 74 68 0d 0a 20 20 20 ,.we.don't.bother.here.with.....
7bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 65 76 69 63 65 2f 64 72 69 76 65 72 2d 73 75 .............//.device/driver-su
7be0 70 70 6c 69 65 64 20 6e 61 6d 65 73 20 61 74 20 61 6c 6c 20 62 75 74 20 72 61 74 68 65 72 20 64 pplied.names.at.all.but.rather.d
7c00 6f 20 6f 75 72 20 6f 77 6e 20 6e 61 6d 69 6e 67 2e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 o.our.own.naming................
7c20 20 20 20 20 20 73 77 69 74 63 68 20 28 75 73 61 67 65 50 61 67 65 29 0d 0a 20 20 20 20 20 20 20 .....switch.(usagePage).........
7c40 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .........{......................
7c60 63 61 73 65 20 55 73 61 67 65 50 61 67 65 2e 42 75 74 74 6f 6e 3a 0d 0a 20 20 20 20 20 20 20 20 case.UsagePage.Button:..........
7c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 75 73 61 67 65 20 3d 3d 20 31 29 0d ................if.(usage.==.1).
7ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 .............................ret
7cc0 75 72 6e 20 22 74 72 69 67 67 65 72 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 urn."trigger";..................
7ce0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 22 62 75 74 74 6f 6e 7b 75 73 61 67 65 7d 22 3b ........return.$"button{usage}";
7d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 55 73 61 67 65 ......................case.Usage
7d20 50 61 67 65 2e 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 Page.GenericDesktop:............
7d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 75 73 61 67 65 20 3d 3d 20 28 69 6e 74 29 ..............if.(usage.==.(int)
7d60 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 48 61 74 53 77 69 74 63 68 29 0d 0a 20 20 20 20 20 GenericDesktop.HatSwitch).......
7d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 68 .......................return."h
7da0 61 74 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 at";..........................va
7dc0 72 20 74 65 78 74 20 3d 20 28 28 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 29 75 73 61 67 65 29 r.text.=.((GenericDesktop)usage)
7de0 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .ToString();....................
7e00 20 20 20 20 20 20 2f 2f 20 4c 6f 77 65 72 2d 63 61 73 65 20 66 69 72 73 74 20 6c 65 74 74 65 72 ......//.Lower-case.first.letter
7e20 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 ...........................text.
7e40 3d 20 63 68 61 72 2e 54 6f 4c 6f 77 65 72 49 6e 76 61 72 69 61 6e 74 28 74 65 78 74 5b 30 5d 29 =.char.ToLowerInvariant(text[0])
7e60 20 2b 20 74 65 78 74 2e 53 75 62 73 74 72 69 6e 67 28 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 .+.text.Substring(1);...........
7e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 65 78 74 3b 0d 0a 20 20 20 ...............return.text;.....
7ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .............}..................
7ec0 20 20 2f 2f 20 46 61 6c 6c 62 61 63 6b 20 74 68 61 74 20 67 65 6e 65 72 61 74 65 73 20 61 20 73 ..//.Fallback.that.generates.a.s
7ee0 6f 6d 65 77 68 61 74 20 75 73 65 6c 65 73 73 20 62 75 74 20 61 74 20 6c 65 61 73 74 20 76 65 72 omewhat.useless.but.at.least.ver
7f00 79 20 69 6e 66 6f 72 6d 61 74 69 76 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 y.informative.name..............
7f20 20 20 20 20 20 72 65 74 75 72 6e 20 24 22 55 73 61 67 65 50 61 67 65 28 7b 75 73 61 67 65 50 61 .....return.$"UsagePage({usagePa
7f40 67 65 3a 58 7d 29 20 55 73 61 67 65 28 7b 75 73 61 67 65 3a 58 7d 29 22 3b 0d 0a 20 20 20 20 20 ge:X}).Usage({usage:X})";.......
7f60 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c .......}................internal
7f80 20 73 74 72 69 6e 67 20 44 65 74 65 72 6d 69 6e 65 44 69 73 70 6c 61 79 4e 61 6d 65 28 29 0d 0a .string.DetermineDisplayName()..
7fa0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 ............{..................s
7fc0 77 69 74 63 68 20 28 75 73 61 67 65 50 61 67 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 witch.(usagePage)...............
7fe0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 55 ...{......................case.U
8000 73 61 67 65 50 61 67 65 2e 42 75 74 74 6f 6e 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sagePage.Button:................
8020 20 20 20 20 20 20 20 20 20 20 69 66 20 28 75 73 61 67 65 20 3d 3d 20 31 29 0d 0a 20 20 20 20 20 ..........if.(usage.==.1).......
8040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 54 .......................return."T
8060 72 69 67 67 65 72 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rigger";........................
8080 20 20 72 65 74 75 72 6e 20 24 22 42 75 74 74 6f 6e 20 7b 75 73 61 67 65 7d 22 3b 0d 0a 20 20 20 ..return.$"Button.{usage}";.....
80a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 55 73 61 67 65 50 61 67 65 2e .................case.UsagePage.
80c0 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 GenericDesktop:.................
80e0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 .........return.((GenericDesktop
8100 29 75 73 61 67 65 29 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 )usage).ToString();.............
8120 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .....}....................return
8140 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 .null;..............}...........
8160 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 62 6f 6f 6c 20 49 73 55 73 61 62 6c 65 45 6c 65 6d 65 .....internal.bool.IsUsableEleme
8180 6e 74 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 nt()..............{.............
81a0 20 20 20 20 20 73 77 69 74 63 68 20 28 75 73 61 67 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 .....switch.(usage).............
81c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 .....{......................case
81e0 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 58 3a 0d 0a 20 20 20 20 20 20 20 .(int)GenericDesktop.X:.........
8200 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 .............case.(int)GenericDe
8220 73 6b 74 6f 70 2e 59 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sktop.Y:........................
8240 20 20 72 65 74 75 72 6e 20 75 73 61 67 65 50 61 67 65 20 3d 3d 20 55 73 61 67 65 50 61 67 65 2e ..return.usagePage.==.UsagePage.
8260 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 GenericDesktop;.................
8280 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....default:...................
82a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 65 74 65 72 6d 69 6e 65 4c 61 79 6f 75 74 28 29 20 .......return.DetermineLayout().
82c0 21 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 !=.null;..................}.....
82e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e .........}................intern
8300 61 6c 20 73 74 72 69 6e 67 20 44 65 74 65 72 6d 69 6e 65 4c 61 79 6f 75 74 28 29 0d 0a 20 20 20 al.string.DetermineLayout().....
8320 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 .........{..................if.(
8340 72 65 70 6f 72 74 54 79 70 65 20 21 3d 20 48 49 44 52 65 70 6f 72 74 54 79 70 65 2e 49 6e 70 75 reportType.!=.HIDReportType.Inpu
8360 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e t)......................return.n
8380 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 54 4f 44 4f ull;....................////TODO
83a0 3a 20 64 65 61 6c 20 77 69 74 68 20 61 72 72 61 79 73 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 :.deal.with.arrays..............
83c0 20 20 20 20 20 20 73 77 69 74 63 68 20 28 75 73 61 67 65 50 61 67 65 29 0d 0a 20 20 20 20 20 20 ......switch.(usagePage)........
83e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........{.....................
8400 20 63 61 73 65 20 55 73 61 67 65 50 61 67 65 2e 42 75 74 74 6f 6e 3a 0d 0a 20 20 20 20 20 20 20 .case.UsagePage.Button:.........
8420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 42 75 74 74 6f 6e 22 .................return."Button"
8440 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 55 73 61 67 ;......................case.Usag
8460 65 50 61 67 65 2e 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 3a 0d 0a 20 20 20 20 20 20 20 20 20 ePage.GenericDesktop:...........
8480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 75 73 61 67 65 29 0d 0a 20 ...............switch.(usage)...
84a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 .......................{........
84c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 ......................case.(int)
84e0 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 58 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 GenericDesktop.X:...............
8500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 ...............case.(int)Generic
8520 44 65 73 6b 74 6f 70 2e 59 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Desktop.Y:......................
8540 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 ........case.(int)GenericDesktop
8560 2e 5a 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .Z:.............................
8580 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 52 78 3a 0d 0a 20 .case.(int)GenericDesktop.Rx:...
85a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 ...........................case.
85c0 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 52 79 3a 0d 0a 20 20 20 20 20 20 20 (int)GenericDesktop.Ry:.........
85e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 .....................case.(int)G
8600 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 52 7a 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 enericDesktop.Rz:...............
8620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 ...............case.(int)Generic
8640 44 65 73 6b 74 6f 70 2e 56 78 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Desktop.Vx:.....................
8660 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f .........case.(int)GenericDeskto
8680 70 2e 56 79 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 p.Vy:...........................
86a0 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 56 7a 3a 0d ...case.(int)GenericDesktop.Vz:.
86c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 .............................cas
86e0 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 56 62 72 78 3a 0d 0a 20 20 20 e.(int)GenericDesktop.Vbrx:.....
8700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 .........................case.(i
8720 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 56 62 72 79 3a 0d 0a 20 20 20 20 20 20 20 nt)GenericDesktop.Vbry:.........
8740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 .....................case.(int)G
8760 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 56 62 72 7a 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 enericDesktop.Vbrz:.............
8780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 .................case.(int)Gener
87a0 69 63 44 65 73 6b 74 6f 70 2e 53 6c 69 64 65 72 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 icDesktop.Slider:...............
87c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 ...............case.(int)Generic
87e0 44 65 73 6b 74 6f 70 2e 44 69 61 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Desktop.Dial:...................
8800 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b ...........case.(int)GenericDesk
8820 74 6f 70 2e 57 68 65 65 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 top.Wheel:......................
8840 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 41 78 69 73 22 3b 0d 0a 0d 0a 20 20 ............return."Axis";......
8860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 ..........................case.(
8880 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 53 65 6c 65 63 74 3a 0d 0a 20 20 20 20 int)GenericDesktop.Select:......
88a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e ........................case.(in
88c0 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 53 74 61 72 74 3a 0d 0a 20 20 20 20 20 20 20 t)GenericDesktop.Start:.........
88e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 .....................case.(int)G
8900 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 44 70 61 64 55 70 3a 0d 0a 20 20 20 20 20 20 20 20 20 enericDesktop.DpadUp:...........
8920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e ...................case.(int)Gen
8940 65 72 69 63 44 65 73 6b 74 6f 70 2e 44 70 61 64 44 6f 77 6e 3a 0d 0a 20 20 20 20 20 20 20 20 20 ericDesktop.DpadDown:...........
8960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e ...................case.(int)Gen
8980 65 72 69 63 44 65 73 6b 74 6f 70 2e 44 70 61 64 4c 65 66 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 ericDesktop.DpadLeft:...........
89a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e ...................case.(int)Gen
89c0 65 72 69 63 44 65 73 6b 74 6f 70 2e 44 70 61 64 52 69 67 68 74 3a 0d 0a 20 20 20 20 20 20 20 20 ericDesktop.DpadRight:..........
89e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 ........................return."
8a00 42 75 74 74 6f 6e 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Button";........................
8a20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 ........case.(int)GenericDesktop
8a40 2e 48 61 74 53 77 69 74 63 68 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .HatSwitch:.....................
8a60 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4f 6e 6c 79 20 73 75 70 70 6f 72 74 20 68 61 74 .............//.Only.support.hat
8a80 20 73 77 69 74 63 68 65 73 20 77 69 74 68 20 38 20 64 69 72 65 63 74 69 6f 6e 73 2e 0d 0a 20 20 .switches.with.8.directions.....
8aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 ..............................if
8ac0 20 28 6c 6f 67 69 63 61 6c 4d 61 78 20 2d 20 6c 6f 67 69 63 61 6c 4d 69 6e 20 2b 20 31 20 3d 3d .(logicalMax.-.logicalMin.+.1.==
8ae0 20 38 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .8).............................
8b00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 44 70 61 64 22 3b 0d 0a 20 20 20 20 20 20 20 .........return."Dpad";.........
8b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d .........................break;.
8b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 .........................}......
8b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 ....................break;......
8b80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ............}...................
8ba0 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a .return.null;..............}....
8bc0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 46 6f 75 72 43 43 20 44 65 74 65 ............internal.FourCC.Dete
8be0 72 6d 69 6e 65 46 6f 72 6d 61 74 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 rmineFormat()..............{....
8c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 72 65 70 6f 72 74 53 69 7a 65 ..............switch.(reportSize
8c20 49 6e 42 69 74 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 InBits)..................{......
8c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 38 3a 0d 0a 20 20 20 20 20 20 20 ................case.8:.........
8c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73 53 69 67 6e 65 64 29 0d 0a .................if.(isSigned)..
8c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 ............................retu
8ca0 72 6e 20 49 6e 70 75 74 53 74 61 74 65 42 6c 6f 63 6b 2e 46 6f 72 6d 61 74 53 42 79 74 65 3b 0d rn.InputStateBlock.FormatSByte;.
8cc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 .........................return.
8ce0 49 6e 70 75 74 53 74 61 74 65 42 6c 6f 63 6b 2e 46 6f 72 6d 61 74 42 79 74 65 3b 0d 0a 20 20 20 InputStateBlock.FormatByte;.....
8d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 36 3a 0d 0a 20 20 20 20 20 .................case.16:.......
8d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73 53 69 67 6e 65 64 29 ...................if.(isSigned)
8d40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 ..............................re
8d60 74 75 72 6e 20 49 6e 70 75 74 53 74 61 74 65 42 6c 6f 63 6b 2e 46 6f 72 6d 61 74 53 68 6f 72 74 turn.InputStateBlock.FormatShort
8d80 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 ;..........................retur
8da0 6e 20 49 6e 70 75 74 53 74 61 74 65 42 6c 6f 63 6b 2e 46 6f 72 6d 61 74 55 53 68 6f 72 74 3b 0d n.InputStateBlock.FormatUShort;.
8dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 33 32 3a 0d 0a 20 .....................case.32:...
8de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73 53 69 67 .......................if.(isSig
8e00 6e 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ned)............................
8e20 20 20 72 65 74 75 72 6e 20 49 6e 70 75 74 53 74 61 74 65 42 6c 6f 63 6b 2e 46 6f 72 6d 61 74 49 ..return.InputStateBlock.FormatI
8e40 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 nt;..........................ret
8e60 75 72 6e 20 49 6e 70 75 74 53 74 61 74 65 42 6c 6f 63 6b 2e 46 6f 72 6d 61 74 55 49 6e 74 3b 0d urn.InputStateBlock.FormatUInt;.
8e80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 .....................default:...
8ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 47 65 6e 65 72 69 .......................//.Generi
8ec0 63 20 62 69 74 66 69 65 6c 64 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 c.bitfield.value................
8ee0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49 6e 70 75 74 53 74 61 74 65 42 6c 6f 63 ...........return.InputStateBloc
8f00 6b 2e 46 6f 72 6d 61 74 42 69 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d k.FormatBit;..................}.
8f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e .............}................in
8f40 74 65 72 6e 61 6c 20 49 6e 74 65 72 6e 65 64 53 74 72 69 6e 67 5b 5d 20 44 65 74 65 72 6d 69 6e ternal.InternedString[].Determin
8f60 65 55 73 61 67 65 73 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 eUsages()..............{........
8f80 20 20 20 20 20 20 20 20 20 20 69 66 20 28 75 73 61 67 65 50 61 67 65 20 3d 3d 20 55 73 61 67 65 ..........if.(usagePage.==.Usage
8fa0 50 61 67 65 2e 42 75 74 74 6f 6e 20 26 26 20 75 73 61 67 65 20 3d 3d 20 31 29 0d 0a 20 20 20 20 Page.Button.&&.usage.==.1)......
8fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 5b 5d 20 7b 43 6f ................return.new[].{Co
8fe0 6d 6d 6f 6e 55 73 61 67 65 73 2e 50 72 69 6d 61 72 79 54 72 69 67 67 65 72 2c 20 43 6f 6d 6d 6f mmonUsages.PrimaryTrigger,.Commo
9000 6e 55 73 61 67 65 73 2e 50 72 69 6d 61 72 79 41 63 74 69 6f 6e 7d 3b 0d 0a 20 20 20 20 20 20 20 nUsages.PrimaryAction};.........
9020 20 20 20 20 20 20 20 20 20 69 66 20 28 75 73 61 67 65 50 61 67 65 20 3d 3d 20 55 73 61 67 65 50 .........if.(usagePage.==.UsageP
9040 61 67 65 2e 42 75 74 74 6f 6e 20 26 26 20 75 73 61 67 65 20 3d 3d 20 32 29 0d 0a 20 20 20 20 20 age.Button.&&.usage.==.2).......
9060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 5b 5d 20 7b 43 6f 6d ...............return.new[].{Com
9080 6d 6f 6e 55 73 61 67 65 73 2e 53 65 63 6f 6e 64 61 72 79 54 72 69 67 67 65 72 2c 20 43 6f 6d 6d monUsages.SecondaryTrigger,.Comm
90a0 6f 6e 55 73 61 67 65 73 2e 53 65 63 6f 6e 64 61 72 79 41 63 74 69 6f 6e 7d 3b 0d 0a 20 20 20 20 onUsages.SecondaryAction};......
90c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 75 73 61 67 65 50 61 67 65 20 3d 3d 20 55 73 61 ............if.(usagePage.==.Usa
90e0 67 65 50 61 67 65 2e 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 20 26 26 20 75 73 61 67 65 20 3d gePage.GenericDesktop.&&.usage.=
9100 3d 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 52 7a 29 0d 0a 20 20 20 20 20 =.(int)GenericDesktop.Rz).......
9120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 5b 5d 20 7b 20 43 6f ...............return.new[].{.Co
9140 6d 6d 6f 6e 55 73 61 67 65 73 2e 54 77 69 73 74 20 7d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 mmonUsages.Twist.};.............
9160 20 20 20 20 20 2f 2f 2f 2f 54 4f 44 4f 3a 20 61 73 73 69 67 6e 20 68 61 74 73 77 69 74 63 68 20 .....////TODO:.assign.hatswitch.
9180 75 73 61 67 65 20 74 6f 20 66 69 72 73 74 20 61 6e 64 20 6f 6e 6c 79 20 74 6f 20 66 69 72 73 74 usage.to.first.and.only.to.first
91a0 20 68 61 74 73 77 69 74 63 68 20 65 6c 65 6d 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 .hatswitch.element..............
91c0 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d ....return.null;..............}.
91e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 69 6e 67 20 44 ...............internal.string.D
9200 65 74 65 72 6d 69 6e 65 50 61 72 61 6d 65 74 65 72 73 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 etermineParameters()............
9220 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 75 73 61 67 65 50 61 ..{..................if.(usagePa
9240 67 65 20 3d 3d 20 55 73 61 67 65 50 61 67 65 2e 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 29 0d ge.==.UsagePage.GenericDesktop).
9260 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 .................{..............
9280 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 75 73 61 67 65 29 0d 0a 20 20 20 20 20 20 20 20 ........switch.(usage)..........
92a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ............{...................
92c0 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e .......case.(int)GenericDesktop.
92e0 58 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 X:..........................case
9300 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 5a 3a 0d 0a 20 20 20 20 20 20 20 .(int)GenericDesktop.Z:.........
9320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 .................case.(int)Gener
9340 69 63 44 65 73 6b 74 6f 70 2e 52 78 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 icDesktop.Rx:...................
9360 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e .......case.(int)GenericDesktop.
9380 52 7a 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 Rz:..........................cas
93a0 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 56 78 3a 0d 0a 20 20 20 20 20 e.(int)GenericDesktop.Vx:.......
93c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e ...................case.(int)Gen
93e0 65 72 69 63 44 65 73 6b 74 6f 70 2e 56 7a 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ericDesktop.Vz:.................
9400 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f .........case.(int)GenericDeskto
9420 70 2e 56 62 72 78 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 p.Vbrx:.........................
9440 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 56 62 72 7a 3a 0d .case.(int)GenericDesktop.Vbrz:.
9460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 .........................case.(i
9480 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 53 6c 69 64 65 72 3a 0d 0a 20 20 20 20 20 nt)GenericDesktop.Slider:.......
94a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e ...................case.(int)Gen
94c0 65 72 69 63 44 65 73 6b 74 6f 70 2e 44 69 61 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ericDesktop.Dial:...............
94e0 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b ...........case.(int)GenericDesk
9500 74 6f 70 2e 57 68 65 65 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 top.Wheel:......................
9520 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 65 74 65 72 6d 69 6e 65 41 78 69 73 4e 6f 72 6d ........return.DetermineAxisNorm
9540 61 6c 69 7a 61 74 69 6f 6e 50 61 72 61 6d 65 74 65 72 73 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 alizationParameters();..........
9560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4f 75 72 20 59 73 20 74 65 6e 64 ..................//.Our.Ys.tend
9580 20 74 6f 20 62 65 20 74 68 65 20 6f 70 70 6f 73 69 74 65 20 6f 66 20 77 68 61 74 20 6d 6f 73 74 .to.be.the.opposite.of.what.most
95a0 20 48 49 44 73 20 64 6f 2e 20 57 65 20 63 61 6e 27 74 20 62 65 20 73 75 72 65 20 61 6e 64 20 6d .HIDs.do..We.can't.be.sure.and.m
95c0 61 79 20 77 65 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ay.well.........................
95e0 20 2f 2f 20 65 6e 64 20 75 70 20 69 6e 76 65 72 74 69 6e 67 20 61 20 76 61 6c 75 65 20 68 65 72 .//.end.up.inverting.a.value.her
9600 65 20 77 68 65 6e 20 77 65 20 73 68 6f 75 6c 64 6e 27 74 20 62 75 74 20 61 73 20 61 6c 77 61 79 e.when.we.shouldn't.but.as.alway
9620 73 20 77 69 74 68 20 74 68 65 20 48 49 44 20 66 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 s.with.the.HID.fallback,........
9640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 6c 65 74 27 73 20 74 72 79 20 74 ..................//.let's.try.t
9660 6f 20 64 6f 20 77 68 61 74 20 2a 73 65 65 6d 73 2a 20 74 6f 20 77 6f 72 6b 20 77 69 74 68 20 74 o.do.what.*seems*.to.work.with.t
9680 68 65 20 6d 61 6a 6f 72 69 74 79 20 6f 66 20 64 65 76 69 63 65 73 2e 0d 0a 20 20 20 20 20 20 20 he.majority.of.devices..........
96a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 .................case.(int)Gener
96c0 69 63 44 65 73 6b 74 6f 70 2e 59 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 icDesktop.Y:....................
96e0 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 52 ......case.(int)GenericDesktop.R
9700 79 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 y:..........................case
9720 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 56 79 3a 0d 0a 20 20 20 20 20 20 .(int)GenericDesktop.Vy:........
9740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 ..................case.(int)Gene
9760 72 69 63 44 65 73 6b 74 6f 70 2e 56 62 72 79 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ricDesktop.Vbry:................
9780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 48 65 6c 70 65 ..............return.StringHelpe
97a0 72 73 2e 4a 6f 69 6e 28 22 2c 22 2c 20 22 69 6e 76 65 72 74 22 2c 20 44 65 74 65 72 6d 69 6e 65 rs.Join(",",."invert",.Determine
97c0 41 78 69 73 4e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 50 61 72 61 6d 65 74 65 72 73 28 29 29 3b 0d AxisNormalizationParameters());.
97e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 .....................}..........
9800 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ........}....................ret
9820 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 urn.null;..............}........
9840 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 44 65 74 65 72 6d 69 6e 65 ........private.string.Determine
9860 41 78 69 73 4e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 50 61 72 61 6d 65 74 65 72 73 28 29 0d 0a 20 AxisNormalizationParameters()...
9880 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f ...........{..................//
98a0 20 49 66 20 77 65 20 68 61 76 65 20 6d 69 6e 2f 6d 61 78 20 62 6f 75 6e 64 73 20 6f 6e 20 74 68 .If.we.have.min/max.bounds.on.th
98c0 65 20 61 78 69 73 20 76 61 6c 75 65 73 2c 20 73 65 74 20 75 70 20 6e 6f 72 6d 61 6c 69 7a 61 74 e.axis.values,.set.up.normalizat
98e0 69 6f 6e 20 6f 6e 20 74 68 65 20 61 78 69 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ion.on.the.axis.................
9900 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 70 75 74 20 74 68 65 20 63 65 6e 74 65 72 20 69 6e 20 ..//.NOTE:.We.put.the.center.in.
9920 74 68 65 20 6d 69 64 64 6c 65 20 62 65 74 77 65 65 6e 20 6d 69 6e 2f 6d 61 78 20 61 73 20 77 65 the.middle.between.min/max.as.we
9940 20 63 61 6e 27 74 20 6b 6e 6f 77 20 77 68 65 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 .can't.know.where.the...........
9960 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65 73 74 69 6e 67 20 70 6f 69 6e 74 20 6f 66 .......//.......resting.point.of
9980 20 74 68 65 20 61 78 69 73 20 69 73 20 28 6d 61 79 20 62 65 20 6f 6e 20 6d 69 6e 20 69 66 20 69 .the.axis.is.(may.be.on.min.if.i
99a0 74 27 73 20 61 20 74 72 69 67 67 65 72 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 29 2e 0d 0a 20 20 t's.a.trigger,.for.example).....
99c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 6f 67 69 63 61 6c 4d 69 6e 20 3d 3d 20 ..............if.(logicalMin.==.
99e0 30 20 26 26 20 6c 6f 67 69 63 61 6c 4d 61 78 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 0.&&.logicalMax.==.0)...........
9a00 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 6e 6f 72 6d 61 6c 69 7a 65 2c 6e 6f 72 ...........return."normalize,nor
9a20 6d 61 6c 69 7a 65 4d 69 6e 3d 30 2c 6e 6f 72 6d 61 6c 69 7a 65 4d 61 78 3d 31 2c 6e 6f 72 6d 61 malizeMin=0,normalizeMax=1,norma
9a40 6c 69 7a 65 5a 65 72 6f 3d 30 2e 35 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 lizeZero=0.5";..................
9a60 76 61 72 20 6d 69 6e 20 3d 20 6d 69 6e 46 6c 6f 61 74 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 var.min.=.minFloatValue;........
9a80 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6d 61 78 20 3d 20 6d 61 78 46 6c 6f 61 74 56 61 6c 75 ..........var.max.=.maxFloatValu
9aa0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 6f 20 6e 6f 74 68 69 6e e;..................//.Do.nothin
9ac0 67 20 69 66 20 72 65 73 75 6c 74 20 6f 66 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 63 6f g.if.result.of.floating-point.co
9ae0 6e 76 65 72 73 69 6f 6e 20 69 73 20 61 6c 72 65 61 64 79 20 6e 6f 72 6d 61 6c 69 7a 65 64 2e 0d nversion.is.already.normalized..
9b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4d 61 74 68 66 2e 41 70 70 72 6f .................if.(Mathf.Appro
9b20 78 69 6d 61 74 65 6c 79 28 30 66 2c 20 6d 69 6e 29 20 26 26 20 4d 61 74 68 66 2e 41 70 70 72 6f ximately(0f,.min).&&.Mathf.Appro
9b40 78 69 6d 61 74 65 6c 79 28 30 66 2c 20 6d 61 78 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ximately(0f,.max))..............
9b60 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ........return.null;............
9b80 20 20 20 20 20 20 76 61 72 20 7a 65 72 6f 20 3d 20 6d 69 6e 20 2b 20 28 6d 61 78 20 2d 20 6d 69 ......var.zero.=.min.+.(max.-.mi
9ba0 6e 29 20 2f 20 32 2e 30 66 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 n)./.2.0f;..................retu
9bc0 72 6e 20 73 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 rn.string.Format(CultureInfo.Inv
9be0 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 20 22 6e 6f 72 6d 61 6c 69 7a 65 2c 6e 6f 72 6d 61 6c ariantCulture,."normalize,normal
9c00 69 7a 65 4d 69 6e 3d 7b 30 7d 2c 6e 6f 72 6d 61 6c 69 7a 65 4d 61 78 3d 7b 31 7d 2c 6e 6f 72 6d izeMin={0},normalizeMax={1},norm
9c20 61 6c 69 7a 65 5a 65 72 6f 3d 7b 32 7d 22 2c 20 6d 69 6e 2c 20 6d 61 78 2c 20 7a 65 72 6f 29 3b alizeZero={2}",.min,.max,.zero);
9c40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 ..............}................i
9c60 6e 74 65 72 6e 61 6c 20 73 74 72 69 6e 67 20 44 65 74 65 72 6d 69 6e 65 50 72 6f 63 65 73 73 6f nternal.string.DetermineProcesso
9c80 72 73 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 rs()..............{.............
9ca0 20 20 20 20 20 73 77 69 74 63 68 20 28 75 73 61 67 65 50 61 67 65 29 0d 0a 20 20 20 20 20 20 20 .....switch.(usagePage).........
9cc0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .........{......................
9ce0 63 61 73 65 20 55 73 61 67 65 50 61 67 65 2e 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 3a 0d 0a case.UsagePage.GenericDesktop:..
9d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 ........................switch.(
9d20 75 73 61 67 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 usage)..........................
9d40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 {..............................c
9d60 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 58 3a 0d 0a 20 20 20 20 ase.(int)GenericDesktop.X:......
9d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e ........................case.(in
9da0 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 59 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 t)GenericDesktop.Y:.............
9dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 .................case.(int)Gener
9de0 69 63 44 65 73 6b 74 6f 70 2e 5a 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 icDesktop.Z:....................
9e00 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 ..........case.(int)GenericDeskt
9e20 6f 70 2e 52 78 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 op.Rx:..........................
9e40 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 52 79 3a ....case.(int)GenericDesktop.Ry:
9e60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ..............................ca
9e80 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 52 7a 3a 0d 0a 20 20 20 20 se.(int)GenericDesktop.Rz:......
9ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e ........................case.(in
9ec0 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 56 78 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 t)GenericDesktop.Vx:............
9ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 ..................case.(int)Gene
9f00 72 69 63 44 65 73 6b 74 6f 70 2e 56 79 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ricDesktop.Vy:..................
9f20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 ............case.(int)GenericDes
9f40 6b 74 6f 70 2e 56 7a 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ktop.Vz:........................
9f60 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 56 ......case.(int)GenericDesktop.V
9f80 62 72 78 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 brx:............................
9fa0 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 56 62 72 79 3a ..case.(int)GenericDesktop.Vbry:
9fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ..............................ca
9fe0 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 56 62 72 7a 3a 0d 0a 20 20 se.(int)GenericDesktop.Vbrz:....
a000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 ..........................case.(
a020 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 53 6c 69 64 65 72 3a 0d 0a 20 20 20 20 int)GenericDesktop.Slider:......
a040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e ........................case.(in
a060 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 44 69 61 6c 3a 0d 0a 20 20 20 20 20 20 20 20 t)GenericDesktop.Dial:..........
a080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 ....................case.(int)Ge
a0a0 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 57 68 65 65 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 nericDesktop.Wheel:.............
a0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 61 78 69 .....................return."axi
a0e0 73 44 65 61 64 7a 6f 6e 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sDeadzone";.....................
a100 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....}..........................
a120 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 break;..................}.......
a140 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 .............return.null;.......
a160 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c .......}................internal
a180 20 50 72 69 6d 69 74 69 76 65 56 61 6c 75 65 20 44 65 74 65 72 6d 69 6e 65 44 65 66 61 75 6c 74 .PrimitiveValue.DetermineDefault
a1a0 53 74 61 74 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 State()..............{..........
a1c0 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 75 73 61 67 65 50 61 67 65 29 0d 0a 20 20 20 20 ........switch.(usagePage)......
a1e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ............{...................
a200 20 20 20 63 61 73 65 20 55 73 61 67 65 50 61 67 65 2e 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 ...case.UsagePage.GenericDesktop
a220 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74 63 :..........................switc
a240 68 20 28 75 73 61 67 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 h.(usage).......................
a260 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...{............................
a280 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 48 61 74 53 77 ..case.(int)GenericDesktop.HatSw
a2a0 69 74 63 68 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 itch:...........................
a2c0 20 20 20 20 20 20 20 2f 2f 20 46 69 67 75 72 65 20 6f 75 74 20 6e 75 6c 6c 20 73 74 61 74 65 20 .......//.Figure.out.null.state.
a2e0 66 6f 72 20 68 61 74 20 73 77 69 74 63 68 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 for.hat.switches................
a300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 68 61 73 4e 75 6c 6c 53 74 ...................if.(hasNullSt
a320 61 74 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ate)............................
a340 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......{.........................
a360 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 57 65 27 72 65 20 6c 6f 6f 6b 69 6e 67 20 66 6f .............//.We're.looking.fo
a380 72 20 61 20 76 61 6c 75 65 20 74 68 61 74 20 69 73 20 6f 75 74 2d 6f 66 2d 72 61 6e 67 65 20 77 r.a.value.that.is.out-of-range.w
a3a0 69 74 68 20 72 65 73 70 65 63 74 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ith.respect.to.the..............
a3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 6c 6f 67 69 63 ........................//.logic
a3e0 61 6c 20 6d 69 6e 20 61 6e 64 20 6d 61 78 20 62 75 74 20 69 6e 20 72 61 6e 67 65 20 77 69 74 68 al.min.and.max.but.in.range.with
a400 20 72 65 73 70 65 63 74 20 74 6f 20 77 68 61 74 20 77 65 20 63 61 6e 20 73 74 6f 72 65 0d 0a 20 .respect.to.what.we.can.store...
a420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a440 20 20 20 2f 2f 20 69 6e 20 74 68 65 20 62 69 74 73 20 77 65 20 68 61 76 65 2e 0d 0a 0d 0a 20 20 ...//.in.the.bits.we.have.......
a460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a480 20 20 2f 2f 20 54 65 73 74 20 6c 6f 77 65 72 20 62 6f 75 6e 64 2e 0d 0a 20 20 20 20 20 20 20 20 ..//.Test.lower.bound...........
a4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 ............................var.
a4c0 6d 69 6e 4d 69 6e 75 73 4f 6e 65 20 3d 20 6c 6f 67 69 63 61 6c 4d 69 6e 20 2d 20 31 3b 0d 0a 20 minMinusOne.=.logicalMin.-.1;...
a4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a500 20 20 20 69 66 20 28 6d 69 6e 4d 69 6e 75 73 4f 6e 65 20 3e 3d 20 30 29 0d 0a 20 20 20 20 20 20 ...if.(minMinusOne.>=.0)........
a520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a540 20 20 72 65 74 75 72 6e 20 6e 65 77 20 50 72 69 6d 69 74 69 76 65 56 61 6c 75 65 28 6d 69 6e 4d ..return.new.PrimitiveValue(minM
a560 69 6e 75 73 4f 6e 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 inusOne);.......................
a580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 65 73 74 20 75 70 70 65 72 20 62 .................//.Test.upper.b
a5a0 6f 75 6e 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ound............................
a5c0 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6d 61 78 50 6c 75 73 4f 6e 65 20 3d 20 6c 6f 67 69 ...........var.maxPlusOne.=.logi
a5e0 63 61 6c 4d 61 78 20 2b 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 calMax.+.1;.....................
a600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 61 78 50 6c 75 73 4f 6e 65 20 .................if.(maxPlusOne.
a620 3c 3d 20 28 31 20 3c 3c 20 72 65 70 6f 72 74 53 69 7a 65 49 6e 42 69 74 73 29 20 2d 20 31 29 0d <=.(1.<<.reportSizeInBits).-.1).
a640 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a660 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 50 72 69 6d 69 74 69 76 65 56 61 6c .........return.new.PrimitiveVal
a680 75 65 28 6d 61 78 50 6c 75 73 4f 6e 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ue(maxPlusOne);.................
a6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 .................}..............
a6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a 20 20 ....................break;......
a6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 ..........................case.(
a700 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 58 3a 0d 0a 20 20 20 20 20 20 20 20 20 int)GenericDesktop.X:...........
a720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e ...................case.(int)Gen
a740 65 72 69 63 44 65 73 6b 74 6f 70 2e 59 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ericDesktop.Y:..................
a760 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 ............case.(int)GenericDes
a780 6b 74 6f 70 2e 5a 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ktop.Z:.........................
a7a0 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 52 78 .....case.(int)GenericDesktop.Rx
a7c0 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 :..............................c
a7e0 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 52 79 3a 0d 0a 20 20 20 ase.(int)GenericDesktop.Ry:.....
a800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 .........................case.(i
a820 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 52 7a 3a 0d 0a 20 20 20 20 20 20 20 20 20 nt)GenericDesktop.Rz:...........
a840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e ...................case.(int)Gen
a860 65 72 69 63 44 65 73 6b 74 6f 70 2e 56 78 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ericDesktop.Vx:.................
a880 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 .............case.(int)GenericDe
a8a0 73 6b 74 6f 70 2e 56 79 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sktop.Vy:.......................
a8c0 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e .......case.(int)GenericDesktop.
a8e0 56 7a 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Vz:.............................
a900 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 56 62 72 78 3a 0d .case.(int)GenericDesktop.Vbrx:.
a920 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 .............................cas
a940 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 56 62 72 79 3a 0d 0a 20 20 20 e.(int)GenericDesktop.Vbry:.....
a960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 .........................case.(i
a980 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 56 62 72 7a 3a 0d 0a 20 20 20 20 20 20 20 nt)GenericDesktop.Vbrz:.........
a9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 .....................case.(int)G
a9c0 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 53 6c 69 64 65 72 3a 0d 0a 20 20 20 20 20 20 20 20 20 enericDesktop.Slider:...........
a9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e ...................case.(int)Gen
aa00 65 72 69 63 44 65 73 6b 74 6f 70 2e 44 69 61 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ericDesktop.Dial:...............
aa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 28 69 6e 74 29 47 65 6e 65 72 69 63 ...............case.(int)Generic
aa40 44 65 73 6b 74 6f 70 2e 57 68 65 65 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Desktop.Wheel:..................
aa60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 46 6f 72 20 61 78 65 73 20 74 68 61 74 ................//.For.axes.that
aa80 20 61 72 65 20 2a 4e 4f 54 2a 20 73 74 6f 72 65 64 20 61 73 20 73 69 67 6e 65 64 20 76 61 6c 75 .are.*NOT*.stored.as.signed.valu
aaa0 65 73 20 28 77 68 69 63 68 20 77 65 20 61 73 73 75 6d 65 20 61 72 65 0d 0a 20 20 20 20 20 20 20 es.(which.we.assume.are.........
aac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 63 65 6e 74 .........................//.cent
aae0 65 72 65 64 20 6f 6e 20 30 29 2c 20 70 75 74 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 74 61 74 ered.on.0),.put.the.default.stat
ab00 65 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 62 65 74 77 65 65 6e 20 74 68 65 20 6d 69 6e 20 e.in.the.middle.between.the.min.
ab20 61 6e 64 20 6d 61 78 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 and.max.........................
ab40 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 69 73 53 69 67 6e 65 64 29 0d 0a 20 20 20 20 20 20 ..........if.(!isSigned)........
ab60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 ..........................{.....
ab80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
aba0 20 76 61 72 20 64 65 66 61 75 6c 74 56 61 6c 75 65 20 3d 20 6c 6f 67 69 63 61 6c 4d 69 6e 20 2b .var.defaultValue.=.logicalMin.+
abc0 20 28 6c 6f 67 69 63 61 6c 4d 61 78 20 2d 20 6c 6f 67 69 63 61 6c 4d 69 6e 29 20 2f 20 32 3b 0d .(logicalMax.-.logicalMin)./.2;.
abe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
ac00 20 20 20 20 20 69 66 20 28 64 65 66 61 75 6c 74 56 61 6c 75 65 20 21 3d 20 30 29 0d 0a 20 20 20 .....if.(defaultValue.!=.0).....
ac20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
ac40 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 50 72 69 6d 69 74 69 76 65 56 61 6c 75 65 28 64 .....return.new.PrimitiveValue(d
ac60 65 66 61 75 6c 74 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 efaultValue);...................
ac80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...............}................
aca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 ..................break;........
acc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ..................}.............
ace0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 .............break;.............
ad00 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .....}....................return
ad20 20 6e 65 77 20 50 72 69 6d 69 74 69 76 65 56 61 6c 75 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 .new.PrimitiveValue();..........
ad40 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 76 6f ....}................internal.vo
ad60 69 64 20 41 64 64 43 68 69 6c 64 43 6f 6e 74 72 6f 6c 73 28 72 65 66 20 48 49 44 45 6c 65 6d 65 id.AddChildControls(ref.HIDEleme
ad80 6e 74 44 65 73 63 72 69 70 74 6f 72 20 65 6c 65 6d 65 6e 74 2c 20 73 74 72 69 6e 67 20 63 6f 6e ntDescriptor.element,.string.con
ada0 74 72 6f 6c 4e 61 6d 65 2c 20 72 65 66 20 49 6e 70 75 74 43 6f 6e 74 72 6f 6c 4c 61 79 6f 75 74 trolName,.ref.InputControlLayout
adc0 2e 42 75 69 6c 64 65 72 20 62 75 69 6c 64 65 72 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b .Builder.builder)..............{
ade0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 75 73 61 67 65 50 61 67 65 20 ..................if.(usagePage.
ae00 3d 3d 20 55 73 61 67 65 50 61 67 65 2e 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 20 26 26 20 75 ==.UsagePage.GenericDesktop.&&.u
ae20 73 61 67 65 20 3d 3d 20 28 69 6e 74 29 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2e 48 61 74 53 sage.==.(int)GenericDesktop.HatS
ae40 77 69 74 63 68 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 witch)..................{.......
ae60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 68 65 72 65 20 64 6f 65 73 6e 27 74 20 ...............//.There.doesn't.
ae80 73 65 65 6d 20 74 6f 20 62 65 20 65 6e 6f 75 67 68 20 73 70 65 63 69 66 69 63 69 74 79 20 69 6e seem.to.be.enough.specificity.in
aea0 20 74 68 65 20 48 49 44 20 73 70 65 63 20 74 6f 20 72 65 6c 69 61 62 6c 79 20 66 69 67 75 72 65 .the.HID.spec.to.reliably.figure
aec0 20 74 68 69 73 20 63 61 73 65 20 6f 75 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .this.case.out..................
aee0 20 20 20 20 20 2f 2f 20 41 6c 62 65 69 74 20 64 65 74 61 69 6c 20 69 73 20 73 63 61 72 63 65 2c .....//.Albeit.detail.is.scarce,
af00 20 77 65 20 63 6f 75 6c 64 20 70 72 6f 62 61 62 6c 79 20 6d 61 6b 65 20 73 6f 6d 65 20 69 6e 66 .we.could.probably.make.some.inf
af20 65 72 65 6e 63 65 73 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 75 6e 69 74 20 73 65 74 74 69 6e erences.based.on.the.unit.settin
af40 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 6f 66 20 74 68 65 g......................//.of.the
af60 20 68 61 74 20 73 77 69 74 63 68 20 62 75 74 20 65 76 65 6e 20 74 68 65 6e 20 69 74 20 73 65 65 .hat.switch.but.even.then.it.see
af80 6d 73 20 74 68 65 72 65 27 73 20 6d 75 63 68 20 6c 65 66 74 20 74 6f 20 74 68 65 20 77 68 69 6d ms.there's.much.left.to.the.whim
afa0 73 20 6f 66 20 61 20 68 61 72 64 77 61 72 65 20 6d 61 6e 75 66 61 63 74 75 72 65 72 2e 0d 0a 20 s.of.a.hardware.manufacturer....
afc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 45 76 65 6e 20 69 66 20 77 65 ...................//.Even.if.we
afe0 20 6b 6e 6f 77 20 76 61 6c 75 65 73 20 67 6f 20 63 6c 6f 63 6b 77 69 73 65 20 28 48 49 44 20 73 .know.values.go.clockwise.(HID.s
b000 70 65 63 20 64 6f 65 73 6e 27 74 20 72 65 61 6c 6c 79 20 73 61 79 3b 20 70 72 6f 62 61 62 6c 79 pec.doesn't.really.say;.probably
b020 20 63 61 6e 20 62 65 20 69 6e 66 65 72 72 65 64 20 66 72 6f 6d 20 75 6e 69 74 29 2c 0d 0a 20 20 .can.be.inferred.from.unit),....
b040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 77 68 69 63 68 20 64 69 72 65 63 ..................//.which.direc
b060 74 69 6f 6e 20 64 6f 20 77 65 20 73 74 61 72 74 20 77 69 74 68 3f 20 49 73 20 30 20 64 65 67 72 tion.do.we.start.with?.Is.0.degr
b080 65 65 73 20 75 70 20 6f 72 20 72 69 67 68 74 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ees.up.or.right?................
b0a0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f ......//......................//
b0c0 20 57 68 61 74 20 77 65 20 64 6f 20 68 65 72 65 20 69 73 20 73 69 6d 70 6c 79 20 6d 61 6b 65 20 .What.we.do.here.is.simply.make.
b0e0 74 68 65 20 61 73 73 75 6d 70 74 69 6f 6e 20 74 68 61 74 20 77 65 27 72 65 20 64 65 61 6c 69 6e the.assumption.that.we're.dealin
b100 67 20 77 69 74 68 20 64 65 67 72 65 65 73 20 68 65 72 65 2c 20 74 68 61 74 20 77 65 20 67 6f 20 g.with.degrees.here,.that.we.go.
b120 63 6c 6f 63 6b 77 69 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 clockwise,......................
b140 2f 2f 20 61 6e 64 20 74 68 61 74 20 30 20 64 65 67 72 65 65 73 20 69 73 20 75 70 20 28 77 68 69 //.and.that.0.degrees.is.up.(whi
b160 63 68 20 69 73 20 61 63 74 75 61 6c 6c 79 20 74 68 65 20 6f 70 70 6f 73 69 74 65 20 6f 66 20 74 ch.is.actually.the.opposite.of.t
b180 68 65 20 63 6f 6f 72 64 69 6e 61 74 65 20 73 79 73 74 65 6d 20 73 75 67 67 65 73 74 65 64 20 69 he.coordinate.system.suggested.i
b1a0 6e 20 35 2e 39 20 6f 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f n.5.9.of......................//
b1c0 20 6f 66 20 74 68 65 20 48 49 44 20 73 70 65 63 20 62 75 74 20 73 65 65 6d 73 20 74 6f 20 62 65 .of.the.HID.spec.but.seems.to.be
b1e0 20 77 68 61 74 20 6d 61 6e 75 66 61 63 74 75 72 65 72 73 20 61 72 65 20 61 63 74 75 61 6c 6c 79 .what.manufacturers.are.actually
b200 20 75 73 69 6e 67 20 69 6e 20 70 72 61 63 74 69 63 65 29 2e 20 4f 66 20 63 6f 75 72 73 65 2c 20 .using.in.practice)..Of.course,.
b220 69 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 if.the......................//.d
b240 65 76 69 63 65 20 77 65 27 72 65 20 6c 6f 6f 6b 69 6e 67 20 61 74 20 61 63 74 75 61 6c 6c 79 20 evice.we're.looking.at.actually.
b260 73 65 74 73 20 74 68 69 6e 67 73 20 75 70 20 64 69 66 66 65 72 65 6e 74 6c 79 2c 20 74 68 65 6e sets.things.up.differently,.then
b280 20 77 65 20 65 6e 64 20 75 70 20 77 69 74 68 20 65 69 74 68 65 72 20 61 6e 20 69 6e 63 6f 72 72 .we.end.up.with.either.an.incorr
b2a0 65 63 74 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 6f 72 ectly......................//.or
b2c0 69 65 6e 74 65 64 20 6f 72 20 28 77 6f 72 73 65 29 20 61 20 6e 6f 6e 2d 66 75 6e 63 74 69 6f 6e iented.or.(worse).a.non-function
b2e0 61 6c 20 68 61 74 20 73 77 69 74 63 68 2e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 al.hat.switch...................
b300 20 20 20 20 20 20 76 61 72 20 6e 75 6c 6c 56 61 6c 75 65 20 3d 20 44 65 74 65 72 6d 69 6e 65 44 ......var.nullValue.=.DetermineD
b320 65 66 61 75 6c 74 53 74 61 74 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 efaultState();..................
b340 20 20 20 20 69 66 20 28 6e 75 6c 6c 56 61 6c 75 65 2e 69 73 45 6d 70 74 79 29 0d 0a 20 20 20 20 ....if.(nullValue.isEmpty)......
b360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 ....................return;.....
b380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 52 45 56 49 45 57 3a 20 74 ...................////REVIEW:.t
b3a0 68 69 73 20 70 72 6f 62 61 62 6c 79 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 77 69 74 68 20 68 61 74 his.probably.only.works.with.hat
b3c0 73 77 69 74 63 68 65 73 20 74 68 61 74 20 68 61 76 65 20 74 68 65 69 72 20 6e 75 6c 6c 20 76 61 switches.that.have.their.null.va
b3e0 6c 75 65 20 61 74 20 6c 6f 67 69 63 61 6c 4d 61 78 2b 31 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 lue.at.logicalMax+1.............
b400 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41 64 64 43 6f 6e 74 72 6f 6c 28 63 6f ...........builder.AddControl(co
b420 6e 74 72 6f 6c 4e 61 6d 65 20 2b 20 22 2f 75 70 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ntrolName.+."/up")..............
b440 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 46 6f 72 6d 61 74 28 49 6e 70 75 74 53 74 61 .............WithFormat(InputSta
b460 74 65 42 6c 6f 63 6b 2e 46 6f 72 6d 61 74 42 69 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 teBlock.FormatBit)..............
b480 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 4c 61 79 6f 75 74 28 22 44 69 73 63 72 65 74 .............WithLayout("Discret
b4a0 65 42 75 74 74 6f 6e 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 eButton").......................
b4c0 20 20 20 2e 57 69 74 68 50 61 72 61 6d 65 74 65 72 73 28 73 74 72 69 6e 67 2e 46 6f 72 6d 61 74 ....WithParameters(string.Format
b4e0 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a (CultureInfo.InvariantCulture,..
b500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 6d 69 6e ............................"min
b520 56 61 6c 75 65 3d 7b 30 7d 2c 6d 61 78 56 61 6c 75 65 3d 7b 31 7d 2c 6e 75 6c 6c 56 61 6c 75 65 Value={0},maxValue={1},nullValue
b540 3d 7b 32 7d 2c 77 72 61 70 41 74 56 61 6c 75 65 3d 7b 33 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 ={2},wrapAtValue={3}",..........
b560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 69 63 61 6c 4d 61 78 2c 20 ....................logicalMax,.
b580 6c 6f 67 69 63 61 6c 4d 69 6e 20 2b 20 31 2c 20 6e 75 6c 6c 56 61 6c 75 65 2e 54 6f 53 74 72 69 logicalMin.+.1,.nullValue.ToStri
b5a0 6e 67 28 29 2c 20 6c 6f 67 69 63 61 6c 4d 61 78 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ng(),.logicalMax))..............
b5c0 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 42 69 74 4f 66 66 73 65 74 28 28 75 69 6e 74 .............WithBitOffset((uint
b5e0 29 65 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 74 73 20 25 20 38 29 )element.reportOffsetInBits.%.8)
b600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 53 ...........................WithS
b620 69 7a 65 49 6e 42 69 74 73 28 28 75 69 6e 74 29 72 65 70 6f 72 74 53 69 7a 65 49 6e 42 69 74 73 izeInBits((uint)reportSizeInBits
b640 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 );........................builde
b660 72 2e 41 64 64 43 6f 6e 74 72 6f 6c 28 63 6f 6e 74 72 6f 6c 4e 61 6d 65 20 2b 20 22 2f 72 69 67 r.AddControl(controlName.+."/rig
b680 68 74 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 ht")...........................W
b6a0 69 74 68 46 6f 72 6d 61 74 28 49 6e 70 75 74 53 74 61 74 65 42 6c 6f 63 6b 2e 46 6f 72 6d 61 74 ithFormat(InputStateBlock.Format
b6c0 42 69 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 Bit)...........................W
b6e0 69 74 68 4c 61 79 6f 75 74 28 22 44 69 73 63 72 65 74 65 42 75 74 74 6f 6e 22 29 0d 0a 20 20 20 ithLayout("DiscreteButton").....
b700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 50 61 72 61 6d 65 ......................WithParame
b720 74 65 72 73 28 73 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 ters(string.Format(CultureInfo.I
b740 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nvariantCulture,................
b760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 6d 69 6e 56 61 6c 75 65 3d 7b 30 7d 2c 6d 61 78 56 .............."minValue={0},maxV
b780 61 6c 75 65 3d 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 alue={1}",......................
b7a0 20 20 20 20 20 20 20 20 6c 6f 67 69 63 61 6c 4d 69 6e 20 2b 20 31 2c 20 6c 6f 67 69 63 61 6c 4d ........logicalMin.+.1,.logicalM
b7c0 69 6e 20 2b 20 33 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 in.+.3))........................
b7e0 20 20 2e 57 69 74 68 42 69 74 4f 66 66 73 65 74 28 28 75 69 6e 74 29 65 6c 65 6d 65 6e 74 2e 72 ...WithBitOffset((uint)element.r
b800 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 74 73 20 25 20 38 29 0d 0a 20 20 20 20 20 20 20 20 eportOffsetInBits.%.8)..........
b820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 53 69 7a 65 49 6e 42 69 74 73 28 .................WithSizeInBits(
b840 28 75 69 6e 74 29 72 65 70 6f 72 74 53 69 7a 65 49 6e 42 69 74 73 29 3b 0d 0a 0d 0a 20 20 20 20 (uint)reportSizeInBits);........
b860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41 64 64 43 6f 6e 74 72 ................builder.AddContr
b880 6f 6c 28 63 6f 6e 74 72 6f 6c 4e 61 6d 65 20 2b 20 22 2f 64 6f 77 6e 22 29 0d 0a 20 20 20 20 20 ol(controlName.+."/down").......
b8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 46 6f 72 6d 61 74 28 49 ....................WithFormat(I
b8c0 6e 70 75 74 53 74 61 74 65 42 6c 6f 63 6b 2e 46 6f 72 6d 61 74 42 69 74 29 0d 0a 20 20 20 20 20 nputStateBlock.FormatBit).......
b8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 4c 61 79 6f 75 74 28 22 ....................WithLayout("
b900 44 69 73 63 72 65 74 65 42 75 74 74 6f 6e 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 DiscreteButton")................
b920 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 50 61 72 61 6d 65 74 65 72 73 28 73 74 72 69 6e 67 ...........WithParameters(string
b940 2e 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c .Format(CultureInfo.InvariantCul
b960 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ture,...........................
b980 20 20 20 22 6d 69 6e 56 61 6c 75 65 3d 7b 30 7d 2c 6d 61 78 56 61 6c 75 65 3d 7b 31 7d 22 2c 0d ..."minValue={0},maxValue={1}",.
b9a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 .............................log
b9c0 69 63 61 6c 4d 69 6e 20 2b 20 33 2c 20 6c 6f 67 69 63 61 6c 4d 69 6e 20 2b 20 35 29 29 0d 0a 20 icalMin.+.3,.logicalMin.+.5))...
b9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 42 69 74 4f ........................WithBitO
ba00 66 66 73 65 74 28 28 75 69 6e 74 29 65 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 4f 66 66 73 65 74 ffset((uint)element.reportOffset
ba20 49 6e 42 69 74 73 20 25 20 38 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 InBits.%.8).....................
ba40 20 20 20 20 20 2e 57 69 74 68 53 69 7a 65 49 6e 42 69 74 73 28 28 75 69 6e 74 29 72 65 70 6f 72 ......WithSizeInBits((uint)repor
ba60 74 53 69 7a 65 49 6e 42 69 74 73 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tSizeInBits);...................
ba80 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41 64 64 43 6f 6e 74 72 6f 6c 28 63 6f 6e 74 72 6f 6c 4e .....builder.AddControl(controlN
baa0 61 6d 65 20 2b 20 22 2f 6c 65 66 74 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ame.+."/left")..................
bac0 20 20 20 20 20 20 20 20 2e 57 69 74 68 46 6f 72 6d 61 74 28 49 6e 70 75 74 53 74 61 74 65 42 6c .........WithFormat(InputStateBl
bae0 6f 63 6b 2e 46 6f 72 6d 61 74 42 69 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ock.FormatBit)..................
bb00 20 20 20 20 20 20 20 20 2e 57 69 74 68 4c 61 79 6f 75 74 28 22 44 69 73 63 72 65 74 65 42 75 74 .........WithLayout("DiscreteBut
bb20 74 6f 6e 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e ton")...........................
bb40 57 69 74 68 50 61 72 61 6d 65 74 65 72 73 28 73 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 43 75 6c WithParameters(string.Format(Cul
bb60 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 tureInfo.InvariantCulture,......
bb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 6d 69 6e 56 61 6c 75 ........................"minValu
bba0 65 3d 7b 30 7d 2c 6d 61 78 56 61 6c 75 65 3d 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 e={0},maxValue={1}",............
bbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 69 63 61 6c 4d 69 6e 20 2b 20 35 ..................logicalMin.+.5
bbe0 2c 20 6c 6f 67 69 63 61 6c 4d 69 6e 20 2b 20 37 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ,.logicalMin.+.7))..............
bc00 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 42 69 74 4f 66 66 73 65 74 28 28 75 69 6e 74 .............WithBitOffset((uint
bc20 29 65 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 74 73 20 25 20 38 29 )element.reportOffsetInBits.%.8)
bc40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 57 69 74 68 53 ...........................WithS
bc60 69 7a 65 49 6e 42 69 74 73 28 28 75 69 6e 74 29 72 65 70 6f 72 74 53 69 7a 65 49 6e 42 69 74 73 izeInBits((uint)reportSizeInBits
bc80 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 );..................}...........
bca0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c ...}..........}............///.<
bcc0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 65 73 63 72 69 70 74 6f 72 summary>..........///.Descriptor
bce0 20 66 6f 72 20 61 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 20 48 49 44 20 65 6c 65 6d 65 6e 74 .for.a.collection.of.HID.element
bd00 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 s...........///.</summary>......
bd20 20 20 20 20 5b 53 65 72 69 61 6c 69 7a 61 62 6c 65 5d 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c ....[Serializable]..........publ
bd40 69 63 20 73 74 72 75 63 74 20 48 49 44 43 6f 6c 6c 65 63 74 69 6f 6e 44 65 73 63 72 69 70 74 6f ic.struct.HIDCollectionDescripto
bd60 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 r..........{..............public
bd80 20 48 49 44 43 6f 6c 6c 65 63 74 69 6f 6e 54 79 70 65 20 74 79 70 65 3b 0d 0a 20 20 20 20 20 20 .HIDCollectionType.type;........
bda0 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 75 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 ......public.int.usage;.........
bdc0 20 20 20 20 20 70 75 62 6c 69 63 20 55 73 61 67 65 50 61 67 65 20 75 73 61 67 65 50 61 67 65 3b .....public.UsagePage.usagePage;
bde0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 70 61 72 65 6e 74 3b ..............public.int.parent;
be00 20 2f 2f 20 2d 31 20 69 66 20 6e 6f 20 70 61 72 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 .//.-1.if.no.parent.............
be20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 63 68 69 6c 64 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 ..public.int.childCount;........
be40 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 66 69 72 73 74 43 68 69 6c 64 3b 0d 0a 20 20 ......public.int.firstChild;....
be60 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e ......}............///.<summary>
be80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 48 49 44 20 64 65 73 63 72 69 70 74 6f 72 20 66 6f 72 ..........///.HID.descriptor.for
bea0 20 61 20 48 49 44 20 63 6c 61 73 73 20 64 65 76 69 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f .a.HID.class.device...........//
bec0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 /.</summary>..........///.<remar
bee0 6b 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 20 70 72 6f 63 65 ks>..........///.This.is.a.proce
bf00 73 73 65 64 20 76 69 65 77 20 6f 66 20 74 68 65 20 63 6f 6d 62 69 6e 65 64 20 64 65 73 63 72 69 ssed.view.of.the.combined.descri
bf20 70 74 6f 72 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 61 20 48 49 44 20 61 73 20 64 65 66 69 6e ptors.provided.by.a.HID.as.defin
bf40 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 20 74 68 65 20 48 49 44 20 73 70 65 63 69 ed..........///.in.the.HID.speci
bf60 66 69 63 61 74 69 6f 6e 2c 20 69 2e 65 2e 20 69 74 27 73 20 61 20 63 6f 6d 62 69 6e 61 74 69 6f fication,.i.e..it's.a.combinatio
bf80 6e 20 6f 66 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20 55 53 42 20 64 65 n.of.information.from.the.USB.de
bfa0 76 69 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 73 63 72 69 70 74 6f 72 2c 20 48 49 vice..........///.descriptor,.HI
bfc0 44 20 63 6c 61 73 73 20 64 65 73 63 72 69 70 74 6f 72 2c 20 61 6e 64 20 48 49 44 20 72 65 70 6f D.class.descriptor,.and.HID.repo
bfe0 72 74 20 64 65 73 63 72 69 70 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 rt.descriptor...........///.</re
c000 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 20 20 20 20 5b 53 65 72 69 61 6c 69 7a 61 62 6c 65 5d 0d 0a marks>..........[Serializable]..
c020 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 75 63 74 20 48 49 44 44 65 76 69 63 65 44 ........public.struct.HIDDeviceD
c040 65 73 63 72 69 70 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 escriptor..........{............
c060 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f ..///.<summary>..............///
c080 20 55 53 42 20 76 65 6e 64 6f 72 20 49 44 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f .USB.vendor.ID...............///
c0a0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 .</summary>..............///.<re
c0c0 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 6f 20 67 65 74 20 74 marks>..............///.To.get.t
c0e0 68 65 20 73 74 72 69 6e 67 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 76 65 6e 64 6f 72 20 he.string.version.of.the.vendor.
c100 49 44 2c 20 73 65 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 70 75 74 44 65 76 69 63 65 44 65 ID,.see.<see.cref="InputDeviceDe
c120 73 63 72 69 70 74 69 6f 6e 2e 6d 61 6e 75 66 61 63 74 75 72 65 72 22 2f 3e 0d 0a 20 20 20 20 20 scription.manufacturer"/>.......
c140 20 20 20 20 20 20 20 2f 2f 2f 20 6f 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 70 75 74 44 65 .......///.on.<see.cref="InputDe
c160 76 69 63 65 2e 64 65 73 63 72 69 70 74 69 6f 6e 22 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 vice.description"/>.............
c180 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 ..///.</remarks>..............pu
c1a0 62 6c 69 63 20 69 6e 74 20 76 65 6e 64 6f 72 49 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 blic.int.vendorId;..............
c1c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f ..///.<summary>..............///
c1e0 20 55 53 42 20 70 72 6f 64 75 63 74 20 49 44 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f .USB.product.ID...............//
c200 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 /.</summary>..............public
c220 20 69 6e 74 20 70 72 6f 64 75 63 74 49 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 .int.productId;..............pub
c240 6c 69 63 20 69 6e 74 20 75 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c lic.int.usage;..............publ
c260 69 63 20 55 73 61 67 65 50 61 67 65 20 75 73 61 67 65 50 61 67 65 3b 0d 0a 0d 0a 20 20 20 20 20 ic.UsagePage.usagePage;.........
c280 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 .......///.<summary>............
c2a0 20 20 2f 2f 2f 20 4d 61 78 69 6d 75 6d 20 73 69 7a 65 20 6f 66 20 69 6e 64 69 76 69 64 75 61 6c ..///.Maximum.size.of.individual
c2c0 20 69 6e 70 75 74 20 72 65 70 6f 72 74 73 20 73 65 6e 74 20 62 79 20 74 68 65 20 64 65 76 69 63 .input.reports.sent.by.the.devic
c2e0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a e...............///.</summary>..
c300 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69 6e 70 75 74 52 65 70 6f ............public.int.inputRepo
c320 72 74 53 69 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d rtSize;................///.<summ
c340 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 4d 61 78 69 6d 75 6d 20 73 69 ary>..............///.Maximum.si
c360 7a 65 20 6f 66 20 69 6e 64 69 76 69 64 75 61 6c 20 6f 75 74 70 75 74 20 72 65 70 6f 72 74 73 20 ze.of.individual.output.reports.
c380 73 65 6e 74 20 74 6f 20 74 68 65 20 64 65 76 69 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 sent.to.the.device..............
c3a0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 .///.</summary>..............pub
c3c0 6c 69 63 20 69 6e 74 20 6f 75 74 70 75 74 52 65 70 6f 72 74 53 69 7a 65 3b 0d 0a 0d 0a 20 20 20 lic.int.outputReportSize;.......
c3e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 .........///.<summary>..........
c400 20 20 20 20 2f 2f 2f 20 4d 61 78 69 6d 75 6d 20 73 69 7a 65 20 6f 66 20 69 6e 64 69 76 69 64 75 ....///.Maximum.size.of.individu
c420 61 6c 20 66 65 61 74 75 72 65 20 72 65 70 6f 72 74 73 20 65 78 63 68 61 6e 67 65 64 20 77 69 74 al.feature.reports.exchanged.wit
c440 68 20 74 68 65 20 64 65 76 69 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c h.the.device...............///.<
c460 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e /summary>..............public.in
c480 74 20 66 65 61 74 75 72 65 52 65 70 6f 72 74 53 69 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 t.featureReportSize;............
c4a0 20 20 20 20 70 75 62 6c 69 63 20 48 49 44 45 6c 65 6d 65 6e 74 44 65 73 63 72 69 70 74 6f 72 5b ....public.HIDElementDescriptor[
c4c0 5d 20 65 6c 65 6d 65 6e 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 ].elements;..............public.
c4e0 48 49 44 43 6f 6c 6c 65 63 74 69 6f 6e 44 65 73 63 72 69 70 74 6f 72 5b 5d 20 63 6f 6c 6c 65 63 HIDCollectionDescriptor[].collec
c500 74 69 6f 6e 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 tions;................public.str
c520 69 6e 67 20 54 6f 4a 73 6f 6e 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 ing.ToJson()..............{.....
c540 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4a 73 6f 6e 55 74 69 6c 69 74 79 2e .............return.JsonUtility.
c560 54 6f 4a 73 6f 6e 28 74 68 69 73 2c 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ToJson(this,.true);.............
c580 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 .}................public.static.
c5a0 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 20 46 72 6f 6d 4a 73 6f 6e 28 73 74 72 HIDDeviceDescriptor.FromJson(str
c5c0 69 6e 67 20 6a 73 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 ing.json)..............{........
c5e0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4a 73 6f 6e 55 74 69 6c 69 74 79 2e 46 72 6f ..........return.JsonUtility.Fro
c600 6d 4a 73 6f 6e 3c 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 3e 28 6a 73 6f 6e 29 mJson<HIDDeviceDescriptor>(json)
c620 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 ;..............}..........}.....
c640 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f .......///.<summary>..........//
c660 2f 20 48 65 6c 70 65 72 20 74 6f 20 71 75 69 63 6b 6c 79 20 62 75 69 6c 64 20 64 65 73 63 72 69 /.Helper.to.quickly.build.descri
c680 70 74 6f 72 73 20 66 6f 72 20 61 72 62 69 74 72 61 72 79 20 48 49 44 73 2e 0d 0a 20 20 20 20 20 ptors.for.arbitrary.HIDs........
c6a0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 ...///.</summary>..........publi
c6c0 63 20 73 74 72 75 63 74 20 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 42 75 69 6c c.struct.HIDDeviceDescriptorBuil
c6e0 64 65 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c der..........{..............publ
c700 69 63 20 55 73 61 67 65 50 61 67 65 20 75 73 61 67 65 50 61 67 65 3b 0d 0a 20 20 20 20 20 20 20 ic.UsagePage.usagePage;.........
c720 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 75 73 61 67 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 .....public.int.usage;..........
c740 20 20 20 20 20 20 70 75 62 6c 69 63 20 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 ......public.HIDDeviceDescriptor
c760 42 75 69 6c 64 65 72 28 55 73 61 67 65 50 61 67 65 20 75 73 61 67 65 50 61 67 65 2c 20 69 6e 74 Builder(UsagePage.usagePage,.int
c780 20 75 73 61 67 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 .usage)..................:.this(
c7a0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 )..............{................
c7c0 20 20 74 68 69 73 2e 75 73 61 67 65 50 61 67 65 20 3d 20 75 73 61 67 65 50 61 67 65 3b 0d 0a 20 ..this.usagePage.=.usagePage;...
c7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 75 73 61 67 65 20 3d 20 75 73 61 67 ...............this.usage.=.usag
c800 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e;..............}...............
c820 20 70 75 62 6c 69 63 20 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 42 75 69 6c 64 .public.HIDDeviceDescriptorBuild
c840 65 72 28 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 20 75 73 61 67 65 29 0d 0a 20 20 20 20 20 20 er(GenericDesktop.usage)........
c860 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 55 73 61 67 65 50 61 67 65 2e 47 65 6e 65 72 ..........:.this(UsagePage.Gener
c880 69 63 44 65 73 6b 74 6f 70 2c 20 28 69 6e 74 29 75 73 61 67 65 29 0d 0a 20 20 20 20 20 20 20 20 icDesktop,.(int)usage)..........
c8a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 ....{..............}............
c8c0 20 20 20 20 70 75 62 6c 69 63 20 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 42 75 ....public.HIDDeviceDescriptorBu
c8e0 69 6c 64 65 72 20 53 74 61 72 74 52 65 70 6f 72 74 28 48 49 44 52 65 70 6f 72 74 54 79 70 65 20 ilder.StartReport(HIDReportType.
c900 72 65 70 6f 72 74 54 79 70 65 2c 20 69 6e 74 20 72 65 70 6f 72 74 49 64 20 3d 20 31 29 0d 0a 20 reportType,.int.reportId.=.1)...
c920 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 5f ...........{..................m_
c940 43 75 72 72 65 6e 74 52 65 70 6f 72 74 49 64 20 3d 20 72 65 70 6f 72 74 49 64 3b 0d 0a 20 20 20 CurrentReportId.=.reportId;.....
c960 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 5f 43 75 72 72 65 6e 74 52 65 70 6f 72 74 54 79 70 65 .............m_CurrentReportType
c980 20 3d 20 72 65 70 6f 72 74 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .=.reportType;..................
c9a0 6d 5f 43 75 72 72 65 6e 74 52 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 74 73 20 3d 20 38 3b m_CurrentReportOffsetInBits.=.8;
c9c0 20 2f 2f 20 52 65 70 6f 72 74 20 49 44 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .//.Report.ID...................
c9e0 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 return.this;..............}.....
ca00 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 48 49 44 44 65 76 69 63 65 44 65 73 63 72 ...........public.HIDDeviceDescr
ca20 69 70 74 6f 72 42 75 69 6c 64 65 72 20 41 64 64 45 6c 65 6d 65 6e 74 28 55 73 61 67 65 50 61 67 iptorBuilder.AddElement(UsagePag
ca40 65 20 75 73 61 67 65 50 61 67 65 2c 20 69 6e 74 20 75 73 61 67 65 2c 20 69 6e 74 20 73 69 7a 65 e.usagePage,.int.usage,.int.size
ca60 49 6e 42 69 74 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 InBits)..............{..........
ca80 20 20 20 20 20 20 20 20 69 66 20 28 6d 5f 45 6c 65 6d 65 6e 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d ........if.(m_Elements.==.null).
caa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 .................{..............
cac0 20 20 20 20 20 20 20 20 6d 5f 45 6c 65 6d 65 6e 74 73 20 3d 20 6e 65 77 20 4c 69 73 74 3c 48 49 ........m_Elements.=.new.List<HI
cae0 44 45 6c 65 6d 65 6e 74 44 65 73 63 72 69 70 74 6f 72 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 DElementDescriptor>();..........
cb00 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d ........}..................else.
cb20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 .................{..............
cb40 20 20 20 20 20 20 20 20 2f 2f 20 4d 61 6b 65 20 73 75 72 65 20 74 68 65 20 75 73 61 67 65 20 61 ........//.Make.sure.the.usage.a
cb60 6e 64 20 75 73 61 67 65 50 61 67 65 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 69 73 20 75 6e 69 71 nd.usagePage.combination.is.uniq
cb80 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 ue.......................foreach
cba0 20 28 76 61 72 20 65 6c 65 6d 65 6e 74 20 69 6e 20 6d 5f 45 6c 65 6d 65 6e 74 73 29 0d 0a 20 20 .(var.element.in.m_Elements)....
cbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ..................{.............
cbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53 6b 69 70 20 65 6c 65 6d 65 6e 74 73 20 74 68 .............//.Skip.elements.th
cc00 61 74 20 61 72 65 6e 27 74 20 69 6e 20 74 68 65 20 73 61 6d 65 20 72 65 70 6f 72 74 2e 0d 0a 20 at.aren't.in.the.same.report....
cc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 .......................if.(eleme
cc40 6e 74 2e 72 65 70 6f 72 74 49 64 20 21 3d 20 6d 5f 43 75 72 72 65 6e 74 52 65 70 6f 72 74 49 64 nt.reportId.!=.m_CurrentReportId
cc60 20 7c 7c 20 65 6c 65 6d 65 6e 74 2e 72 65 70 6f 72 74 54 79 70 65 20 21 3d 20 6d 5f 43 75 72 72 .||.element.reportType.!=.m_Curr
cc80 65 6e 74 52 65 70 6f 72 74 54 79 70 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 entReportType)..................
cca0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 ............continue;...........
ccc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 2e 75 73 61 .................if.(element.usa
cce0 67 65 50 61 67 65 20 3d 3d 20 75 73 61 67 65 50 61 67 65 20 26 26 20 65 6c 65 6d 65 6e 74 2e 75 gePage.==.usagePage.&&.element.u
cd00 73 61 67 65 20 3d 3d 20 75 73 61 67 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sage.==.usage)..................
cd20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 ............throw.new.InvalidOpe
cd40 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rationException(................
cd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 22 43 61 6e 6e 6f 74 20 61 64 64 20 74 ..................$"Cannot.add.t
cd80 77 6f 20 65 6c 65 6d 65 6e 74 73 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 75 73 61 67 65 20 wo.elements.with.the.same.usage.
cda0 70 61 67 65 20 27 7b 75 73 61 67 65 50 61 67 65 7d 27 20 61 6e 64 20 75 73 61 67 65 20 27 30 78 page.'{usagePage}'.and.usage.'0x
cdc0 7b 75 73 61 67 65 3a 58 7d 20 74 68 65 20 74 6f 20 73 61 6d 65 20 64 65 76 69 63 65 22 29 3b 0d {usage:X}.the.to.same.device");.
cde0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 .....................}..........
ce00 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 5f 45 ........}....................m_E
ce20 6c 65 6d 65 6e 74 73 2e 41 64 64 28 6e 65 77 20 48 49 44 45 6c 65 6d 65 6e 74 44 65 73 63 72 69 lements.Add(new.HIDElementDescri
ce40 70 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 ptor..................{.........
ce60 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 61 67 65 20 3d 20 75 73 61 67 65 2c 0d 0a 20 20 20 .............usage.=.usage,.....
ce80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 61 67 65 50 61 67 65 20 3d 20 75 73 61 .................usagePage.=.usa
cea0 67 65 50 61 67 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 gePage,......................rep
cec0 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 74 73 20 3d 20 6d 5f 43 75 72 72 65 6e 74 52 65 70 6f 72 ortOffsetInBits.=.m_CurrentRepor
cee0 74 4f 66 66 73 65 74 49 6e 42 69 74 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tOffsetInBits,..................
cf00 20 20 20 20 72 65 70 6f 72 74 53 69 7a 65 49 6e 42 69 74 73 20 3d 20 73 69 7a 65 49 6e 42 69 74 ....reportSizeInBits.=.sizeInBit
cf20 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 6f 72 74 54 79 s,......................reportTy
cf40 70 65 20 3d 20 6d 5f 43 75 72 72 65 6e 74 52 65 70 6f 72 74 54 79 70 65 2c 0d 0a 20 20 20 20 20 pe.=.m_CurrentReportType,.......
cf60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 6f 72 74 49 64 20 3d 20 6d 5f 43 75 72 72 ...............reportId.=.m_Curr
cf80 65 6e 74 52 65 70 6f 72 74 49 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 29 3b entReportId..................});
cfa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 5f 43 75 72 72 65 6e 74 52 65 70 6f 72 ..................m_CurrentRepor
cfc0 74 4f 66 66 73 65 74 49 6e 42 69 74 73 20 2b 3d 20 73 69 7a 65 49 6e 42 69 74 73 3b 0d 0a 0d 0a tOffsetInBits.+=.sizeInBits;....
cfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 ................return.this;....
d000 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 ..........}................publi
d020 63 20 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 42 75 69 6c 64 65 72 20 41 64 64 c.HIDDeviceDescriptorBuilder.Add
d040 45 6c 65 6d 65 6e 74 28 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 20 75 73 61 67 65 2c 20 69 6e Element(GenericDesktop.usage,.in
d060 74 20 73 69 7a 65 49 6e 42 69 74 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 t.sizeInBits)..............{....
d080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 41 64 64 45 6c 65 6d 65 6e 74 28 ..............return.AddElement(
d0a0 55 73 61 67 65 50 61 67 65 2e 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 2c 20 28 69 6e 74 29 75 UsagePage.GenericDesktop,.(int)u
d0c0 73 61 67 65 2c 20 73 69 7a 65 49 6e 42 69 74 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 sage,.sizeInBits);..............
d0e0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 48 49 44 44 65 76 69 63 }................public.HIDDevic
d100 65 44 65 73 63 72 69 70 74 6f 72 42 75 69 6c 64 65 72 20 57 69 74 68 50 68 79 73 69 63 61 6c 4d eDescriptorBuilder.WithPhysicalM
d120 69 6e 4d 61 78 28 69 6e 74 20 6d 69 6e 2c 20 69 6e 74 20 6d 61 78 29 0d 0a 20 20 20 20 20 20 20 inMax(int.min,.int.max).........
d140 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 69 6e 64 65 .....{..................var.inde
d160 78 20 3d 20 6d 5f 45 6c 65 6d 65 6e 74 73 2e 43 6f 75 6e 74 20 2d 20 31 3b 0d 0a 20 20 20 20 20 x.=.m_Elements.Count.-.1;.......
d180 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 64 65 78 20 3c 20 30 29 0d 0a 20 20 20 20 20 ...........if.(index.<.0).......
d1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 ...............throw.new.Invalid
d1c0 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 22 4e 6f 20 65 6c 65 6d 65 6e 74 20 68 OperationException("No.element.h
d1e0 61 73 20 62 65 65 6e 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 64 65 73 63 72 69 70 74 6f 72 20 as.been.added.to.the.descriptor.
d200 79 65 74 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 65 6c yet");....................var.el
d220 65 6d 65 6e 74 20 3d 20 6d 5f 45 6c 65 6d 65 6e 74 73 5b 69 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 ement.=.m_Elements[index];......
d240 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 70 68 79 73 69 63 61 6c 4d 69 6e 20 ............element.physicalMin.
d260 3d 20 6d 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e =.min;..................element.
d280 70 68 79 73 69 63 61 6c 4d 61 78 20 3d 20 6d 61 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 physicalMax.=.max;..............
d2a0 20 20 20 20 6d 5f 45 6c 65 6d 65 6e 74 73 5b 69 6e 64 65 78 5d 20 3d 20 65 6c 65 6d 65 6e 74 3b ....m_Elements[index].=.element;
d2c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 3b ....................return.this;
d2e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 ..............}................p
d300 75 62 6c 69 63 20 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 42 75 69 6c 64 65 72 ublic.HIDDeviceDescriptorBuilder
d320 20 57 69 74 68 4c 6f 67 69 63 61 6c 4d 69 6e 4d 61 78 28 69 6e 74 20 6d 69 6e 2c 20 69 6e 74 20 .WithLogicalMinMax(int.min,.int.
d340 6d 61 78 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 max)..............{.............
d360 20 20 20 20 20 76 61 72 20 69 6e 64 65 78 20 3d 20 6d 5f 45 6c 65 6d 65 6e 74 73 2e 43 6f 75 6e .....var.index.=.m_Elements.Coun
d380 74 20 2d 20 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 64 65 t.-.1;..................if.(inde
d3a0 78 20 3c 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f x.<.0)......................thro
d3c0 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 w.new.InvalidOperationException(
d3e0 22 4e 6f 20 65 6c 65 6d 65 6e 74 20 68 61 73 20 62 65 65 6e 20 61 64 64 65 64 20 74 6f 20 74 68 "No.element.has.been.added.to.th
d400 65 20 64 65 73 63 72 69 70 74 6f 72 20 79 65 74 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 e.descriptor.yet");.............
d420 20 20 20 20 20 20 20 76 61 72 20 65 6c 65 6d 65 6e 74 20 3d 20 6d 5f 45 6c 65 6d 65 6e 74 73 5b .......var.element.=.m_Elements[
d440 69 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 index];..................element
d460 2e 6c 6f 67 69 63 61 6c 4d 69 6e 20 3d 20 6d 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 .logicalMin.=.min;..............
d480 20 20 20 20 65 6c 65 6d 65 6e 74 2e 6c 6f 67 69 63 61 6c 4d 61 78 20 3d 20 6d 61 78 3b 0d 0a 20 ....element.logicalMax.=.max;...
d4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 5f 45 6c 65 6d 65 6e 74 73 5b 69 6e 64 65 78 5d ...............m_Elements[index]
d4c0 20 3d 20 65 6c 65 6d 65 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 .=.element;....................r
d4e0 65 74 75 72 6e 20 74 68 69 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 eturn.this;..............}......
d500 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 ..........public.HIDDeviceDescri
d520 70 74 6f 72 20 46 69 6e 69 73 68 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 ptor.Finish()..............{....
d540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 64 65 73 63 72 69 70 74 6f 72 20 3d 20 6e ..............var.descriptor.=.n
d560 65 77 20 48 49 44 44 65 76 69 63 65 44 65 73 63 72 69 70 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 ew.HIDDeviceDescriptor..........
d580 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 ........{......................u
d5a0 73 61 67 65 20 3d 20 75 73 61 67 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sage.=.usage,...................
d5c0 20 20 20 75 73 61 67 65 50 61 67 65 20 3d 20 75 73 61 67 65 50 61 67 65 2c 0d 0a 20 20 20 20 20 ...usagePage.=.usagePage,.......
d5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 73 20 3d 20 6d 5f 45 6c 65 6d ...............elements.=.m_Elem
d600 65 6e 74 73 3f 2e 54 6f 41 72 72 61 79 28 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ents?.ToArray(),................
d620 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 69 6f 6e 73 20 3d 20 6d 5f 43 6f 6c 6c 65 63 74 69 6f 6e ......collections.=.m_Collection
d640 73 3f 2e 54 6f 41 72 72 61 79 28 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d s?.ToArray(),..................}
d660 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 73 63 ;....................return.desc
d680 72 69 70 74 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 riptor;..............}..........
d6a0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 20 6d 5f 43 75 72 72 65 6e 74 52 65 70 6f 72 ......private.int.m_CurrentRepor
d6c0 74 49 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 48 49 44 52 65 70 tId;..............private.HIDRep
d6e0 6f 72 74 54 79 70 65 20 6d 5f 43 75 72 72 65 6e 74 52 65 70 6f 72 74 54 79 70 65 3b 0d 0a 20 20 ortType.m_CurrentReportType;....
d700 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 20 6d 5f 43 75 72 72 65 6e 74 52 ..........private.int.m_CurrentR
d720 65 70 6f 72 74 4f 66 66 73 65 74 49 6e 42 69 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 eportOffsetInBits;..............
d740 20 20 70 72 69 76 61 74 65 20 4c 69 73 74 3c 48 49 44 45 6c 65 6d 65 6e 74 44 65 73 63 72 69 70 ..private.List<HIDElementDescrip
d760 74 6f 72 3e 20 6d 5f 45 6c 65 6d 65 6e 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 tor>.m_Elements;..............pr
d780 69 76 61 74 65 20 4c 69 73 74 3c 48 49 44 43 6f 6c 6c 65 63 74 69 6f 6e 44 65 73 63 72 69 70 74 ivate.List<HIDCollectionDescript
d7a0 6f 72 3e 20 6d 5f 43 6f 6c 6c 65 63 74 69 6f 6e 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 or>.m_Collections;..............
d7c0 20 20 70 72 69 76 61 74 65 20 69 6e 74 20 6d 5f 49 6e 70 75 74 52 65 70 6f 72 74 53 69 7a 65 3b ..private.int.m_InputReportSize;
d7e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 20 6d 5f 4f 75 74 70 ..............private.int.m_Outp
d800 75 74 52 65 70 6f 72 74 53 69 7a 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 utReportSize;..............priva
d820 74 65 20 69 6e 74 20 6d 5f 46 65 61 74 75 72 65 52 65 70 6f 72 74 53 69 7a 65 3b 0d 0a 20 20 20 te.int.m_FeatureReportSize;.....
d840 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d .....}............///.<summary>.
d860 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 45 6e 75 6d 65 72 61 74 69 6f 6e 20 6f 66 20 48 49 44 20 .........///.Enumeration.of.HID.
d880 75 73 61 67 65 20 70 61 67 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d usage.pages...........///.</summ
d8a0 61 72 79 3e 30 30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 ary>00..........///.<remarks>...
d8c0 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 74 65 20 74 68 61 74 20 73 6f 6d 65 20 6f 66 20 74 68 65 .......///.Note.that.some.of.the
d8e0 20 76 61 6c 75 65 73 20 61 72 65 20 61 63 74 75 61 6c 6c 79 20 72 61 6e 67 65 73 2e 0d 0a 20 20 .values.are.actually.ranges.....
d900 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f ......///.</remarks>..........//
d920 2f 20 3c 73 65 65 61 6c 73 6f 20 63 72 65 66 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 75 73 62 2e /.<seealso.cref="http://www.usb.
d940 6f 72 67 2f 64 65 76 65 6c 6f 70 65 72 73 2f 68 69 64 70 61 67 65 2f 48 75 74 31 5f 31 32 76 32 org/developers/hidpage/Hut1_12v2
d960 2e 70 64 66 22 2f 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 55 73 61 .pdf"/>..........public.enum.Usa
d980 67 65 50 61 67 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 gePage..........{..............U
d9a0 6e 64 65 66 69 6e 65 64 20 3d 20 30 78 30 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 47 65 ndefined.=.0x00,..............Ge
d9c0 6e 65 72 69 63 44 65 73 6b 74 6f 70 20 3d 20 30 78 30 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 nericDesktop.=.0x01,............
d9e0 20 20 53 69 6d 75 6c 61 74 69 6f 6e 20 3d 20 30 78 30 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 ..Simulation.=.0x02,............
da00 20 20 56 52 43 6f 6e 74 72 6f 6c 73 20 3d 20 30 78 30 33 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 ..VRControls.=.0x03,............
da20 20 20 53 70 6f 72 74 43 6f 6e 74 72 6f 6c 73 20 3d 20 30 78 30 34 2c 0d 0a 20 20 20 20 20 20 20 ..SportControls.=.0x04,.........
da40 20 20 20 20 20 47 61 6d 65 43 6f 6e 74 72 6f 6c 73 20 3d 20 30 78 30 35 2c 0d 0a 20 20 20 20 20 .....GameControls.=.0x05,.......
da60 20 20 20 20 20 20 20 47 65 6e 65 72 69 63 44 65 76 69 63 65 43 6f 6e 74 72 6f 6c 73 20 3d 20 30 .......GenericDeviceControls.=.0
da80 78 30 36 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4b 65 79 62 6f 61 72 64 20 3d 20 30 78 30 x06,..............Keyboard.=.0x0
daa0 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4c 45 44 73 20 3d 20 30 78 30 38 2c 0d 0a 20 20 7,..............LEDs.=.0x08,....
dac0 20 20 20 20 20 20 20 20 20 20 42 75 74 74 6f 6e 20 3d 20 30 78 30 39 2c 0d 0a 20 20 20 20 20 20 ..........Button.=.0x09,........
dae0 20 20 20 20 20 20 4f 72 64 69 6e 61 6c 20 3d 20 30 78 30 41 2c 0d 0a 20 20 20 20 20 20 20 20 20 ......Ordinal.=.0x0A,...........
db00 20 20 20 54 65 6c 65 70 68 6f 6e 79 20 3d 20 30 78 30 42 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 ...Telephony.=.0x0B,............
db20 20 20 43 6f 6e 73 75 6d 65 72 20 3d 20 30 78 30 43 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..Consumer.=.0x0C,..............
db40 44 69 67 69 74 69 7a 65 72 20 3d 20 30 78 30 44 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 50 Digitizer.=.0x0D,..............P
db60 49 44 20 3d 20 30 78 30 46 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 69 63 6f 64 65 20 ID.=.0x0F,..............Unicode.
db80 3d 20 30 78 31 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 6c 70 68 61 6e 75 6d 65 72 69 =.0x10,..............Alphanumeri
dba0 63 44 69 73 70 6c 61 79 20 3d 20 30 78 31 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 65 cDisplay.=.0x14,..............Me
dbc0 64 69 63 61 6c 49 6e 73 74 72 75 6d 65 6e 74 73 20 3d 20 30 78 34 30 2c 0d 0a 20 20 20 20 20 20 dicalInstruments.=.0x40,........
dbe0 20 20 20 20 20 20 4d 6f 6e 69 74 6f 72 20 3d 20 30 78 38 30 2c 20 2f 2f 20 53 74 61 72 74 73 20 ......Monitor.=.0x80,.//.Starts.
dc00 68 65 72 65 20 61 6e 64 20 67 6f 65 73 20 75 70 20 74 6f 20 30 78 38 33 2e 0d 0a 20 20 20 20 20 here.and.goes.up.to.0x83........
dc20 20 20 20 20 20 20 20 50 6f 77 65 72 20 3d 20 30 78 38 34 2c 20 2f 2f 20 53 74 61 72 74 73 20 68 .......Power.=.0x84,.//.Starts.h
dc40 65 72 65 20 61 6e 64 20 67 6f 65 73 20 75 70 20 74 6f 20 30 78 38 37 2e 0d 0a 20 20 20 20 20 20 ere.and.goes.up.to.0x87.........
dc60 20 20 20 20 20 20 42 61 72 43 6f 64 65 53 63 61 6e 6e 65 72 20 3d 20 30 78 38 43 2c 0d 0a 20 20 ......BarCodeScanner.=.0x8C,....
dc80 20 20 20 20 20 20 20 20 20 20 4d 61 67 6e 65 74 69 63 53 74 72 69 70 65 52 65 61 64 65 72 20 3d ..........MagneticStripeReader.=
dca0 20 30 78 38 45 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 61 6d 65 72 61 20 3d 20 30 78 39 .0x8E,..............Camera.=.0x9
dcc0 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 72 63 61 64 65 20 3d 20 30 78 39 31 2c 0d 0a 0,..............Arcade.=.0x91,..
dce0 20 20 20 20 20 20 20 20 20 20 20 20 56 65 6e 64 6f 72 44 65 66 69 6e 65 64 20 3d 20 30 78 46 46 ............VendorDefined.=.0xFF
dd00 30 30 2c 20 2f 2f 20 53 74 61 72 74 73 20 68 65 72 65 20 61 6e 64 20 67 6f 65 73 20 75 70 20 74 00,.//.Starts.here.and.goes.up.t
dd20 6f 20 30 78 46 46 46 46 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 o.0xFFFF...........}............
dd40 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55 73 61 67 65 ///.<summary>..........///.Usage
dd60 73 20 69 6e 20 74 68 65 20 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 20 48 49 44 20 75 73 61 67 s.in.the.GenericDesktop.HID.usag
dd80 65 20 70 61 67 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d e.page...........///.</summary>.
dda0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 61 6c 73 6f 20 63 72 65 66 3d 22 68 74 74 70 .........///.<seealso.cref="http
ddc0 3a 2f 2f 77 77 77 2e 75 73 62 2e 6f 72 67 2f 64 65 76 65 6c 6f 70 65 72 73 2f 68 69 64 70 61 67 ://www.usb.org/developers/hidpag
dde0 65 2f 48 75 74 31 5f 31 32 76 32 2e 70 64 66 22 2f 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c e/Hut1_12v2.pdf"/>..........publ
de00 69 63 20 65 6e 75 6d 20 47 65 6e 65 72 69 63 44 65 73 6b 74 6f 70 0d 0a 20 20 20 20 20 20 20 20 ic.enum.GenericDesktop..........
de20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 64 65 66 69 6e 65 64 20 3d 20 30 78 30 30 2c {..............Undefined.=.0x00,
de40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 50 6f 69 6e 74 65 72 20 3d 20 30 78 30 31 2c 0d 0a 20 ..............Pointer.=.0x01,...
de60 20 20 20 20 20 20 20 20 20 20 20 4d 6f 75 73 65 20 3d 20 30 78 30 32 2c 0d 0a 20 20 20 20 20 20 ...........Mouse.=.0x02,........
de80 20 20 20 20 20 20 4a 6f 79 73 74 69 63 6b 20 3d 20 30 78 30 34 2c 0d 0a 20 20 20 20 20 20 20 20 ......Joystick.=.0x04,..........
dea0 20 20 20 20 47 61 6d 65 70 61 64 20 3d 20 30 78 30 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ....Gamepad.=.0x05,.............
dec0 20 4b 65 79 62 6f 61 72 64 20 3d 20 30 78 30 36 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4b .Keyboard.=.0x06,..............K
dee0 65 79 70 61 64 20 3d 20 30 78 30 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 75 6c 74 69 eypad.=.0x07,..............Multi
df00 41 78 69 73 43 6f 6e 74 72 6f 6c 6c 65 72 20 3d 20 30 78 30 38 2c 0d 0a 20 20 20 20 20 20 20 20 AxisController.=.0x08,..........
df20 20 20 20 20 54 61 62 6c 65 74 50 43 43 6f 6e 74 72 6f 6c 73 20 3d 20 30 78 30 39 2c 0d 0a 20 20 ....TabletPCControls.=.0x09,....
df40 20 20 20 20 20 20 20 20 20 20 41 73 73 69 73 74 69 76 65 43 6f 6e 74 72 6f 6c 20 3d 20 30 78 30 ..........AssistiveControl.=.0x0
df60 41 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 58 20 3d 20 30 78 33 30 2c 0d 0a 20 20 20 20 20 A,..............X.=.0x30,.......
df80 20 20 20 20 20 20 20 59 20 3d 20 30 78 33 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5a 20 .......Y.=.0x31,..............Z.
dfa0 3d 20 30 78 33 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 52 78 20 3d 20 30 78 33 33 2c 0d =.0x32,..............Rx.=.0x33,.
dfc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 52 79 20 3d 20 30 78 33 34 2c 0d 0a 20 20 20 20 20 20 20 .............Ry.=.0x34,.........
dfe0 20 20 20 20 20 52 7a 20 3d 20 30 78 33 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 6c 69 .....Rz.=.0x35,..............Sli
e000 64 65 72 20 3d 20 30 78 33 36 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69 61 6c 20 3d 20 der.=.0x36,..............Dial.=.
e020 30 78 33 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 57 68 65 65 6c 20 3d 20 30 78 33 38 2c 0x37,..............Wheel.=.0x38,
e040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 48 61 74 53 77 69 74 63 68 20 3d 20 30 78 33 39 2c 0d ..............HatSwitch.=.0x39,.
e060 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 75 6e 74 65 64 42 75 66 66 65 72 20 3d 20 30 78 33 .............CountedBuffer.=.0x3
e080 41 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 42 79 74 65 43 6f 75 6e 74 20 3d 20 30 78 33 42 A,..............ByteCount.=.0x3B
e0a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 74 69 6f 6e 57 61 6b 65 75 70 20 3d 20 30 78 ,..............MotionWakeup.=.0x
e0c0 33 43 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 74 61 72 74 20 3d 20 30 78 33 44 2c 0d 0a 3C,..............Start.=.0x3D,..
e0e0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 6c 65 63 74 20 3d 20 30 78 33 45 2c 0d 0a 20 20 20 20 ............Select.=.0x3E,......
e100 20 20 20 20 20 20 20 20 56 78 20 3d 20 30 78 34 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ........Vx.=.0x40,..............
e120 56 79 20 3d 20 30 78 34 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 56 7a 20 3d 20 30 78 34 Vy.=.0x41,..............Vz.=.0x4
e140 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 56 62 72 78 20 3d 20 30 78 34 33 2c 0d 0a 20 20 2,..............Vbrx.=.0x43,....
e160 20 20 20 20 20 20 20 20 20 20 56 62 72 79 20 3d 20 30 78 34 34 2c 0d 0a 20 20 20 20 20 20 20 20 ..........Vbry.=.0x44,..........
e180 20 20 20 20 56 62 72 7a 20 3d 20 30 78 34 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 56 6e ....Vbrz.=.0x45,..............Vn
e1a0 6f 20 3d 20 30 78 34 36 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 46 65 61 74 75 72 65 4e 6f o.=.0x46,..............FeatureNo
e1c0 74 69 66 69 63 61 74 69 6f 6e 20 3d 20 30 78 34 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 tification.=.0x47,..............
e1e0 52 65 73 6f 6c 75 74 69 6f 6e 4d 75 6c 74 69 70 6c 69 65 72 20 3d 20 30 78 34 38 2c 0d 0a 20 20 ResolutionMultiplier.=.0x48,....
e200 20 20 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 43 6f 6e 74 72 6f 6c 20 3d 20 30 78 38 30 2c 0d ..........SystemControl.=.0x80,.
e220 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 50 6f 77 65 72 44 6f 77 6e 20 3d 20 30 .............SystemPowerDown.=.0
e240 78 38 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 53 6c 65 65 70 20 3d 20 x81,..............SystemSleep.=.
e260 30 78 38 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 57 61 6b 65 55 70 20 0x82,..............SystemWakeUp.
e280 3d 20 30 78 38 33 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 43 6f 6e 74 65 =.0x83,..............SystemConte
e2a0 78 74 4d 65 6e 75 20 3d 20 30 78 38 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74 xtMenu.=.0x84,..............Syst
e2c0 65 6d 4d 61 69 6e 4d 65 6e 75 20 3d 20 30 78 38 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 emMainMenu.=.0x85,..............
e2e0 53 79 73 74 65 6d 41 70 70 4d 65 6e 75 20 3d 20 30 78 38 36 2c 0d 0a 20 20 20 20 20 20 20 20 20 SystemAppMenu.=.0x86,...........
e300 20 20 20 53 79 73 74 65 6d 4d 65 6e 75 48 65 6c 70 20 3d 20 30 78 38 37 2c 0d 0a 20 20 20 20 20 ...SystemMenuHelp.=.0x87,.......
e320 20 20 20 20 20 20 20 53 79 73 74 65 6d 4d 65 6e 75 45 78 69 74 20 3d 20 30 78 38 38 2c 0d 0a 20 .......SystemMenuExit.=.0x88,...
e340 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 4d 65 6e 75 53 65 6c 65 63 74 20 3d 20 30 78 ...........SystemMenuSelect.=.0x
e360 38 39 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 4d 65 6e 75 52 69 67 68 74 89,..............SystemMenuRight
e380 20 3d 20 30 78 38 41 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 4d 65 6e 75 .=.0x8A,..............SystemMenu
e3a0 4c 65 66 74 20 3d 20 30 78 38 42 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74 65 6d Left.=.0x8B,..............System
e3c0 4d 65 6e 75 55 70 20 3d 20 30 78 38 43 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74 MenuUp.=.0x8C,..............Syst
e3e0 65 6d 4d 65 6e 75 44 6f 77 6e 20 3d 20 30 78 38 44 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 emMenuDown.=.0x8D,..............
e400 53 79 73 74 65 6d 43 6f 6c 64 52 65 73 74 61 72 74 20 3d 20 30 78 38 45 2c 0d 0a 20 20 20 20 20 SystemColdRestart.=.0x8E,.......
e420 20 20 20 20 20 20 20 53 79 73 74 65 6d 57 61 72 6d 52 65 73 74 61 72 74 20 3d 20 30 78 38 46 2c .......SystemWarmRestart.=.0x8F,
e440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 70 61 64 55 70 20 3d 20 30 78 39 30 2c 0d 0a 20 20 ..............DpadUp.=.0x90,....
e460 20 20 20 20 20 20 20 20 20 20 44 70 61 64 44 6f 77 6e 20 3d 20 30 78 39 31 2c 0d 0a 20 20 20 20 ..........DpadDown.=.0x91,......
e480 20 20 20 20 20 20 20 20 44 70 61 64 52 69 67 68 74 20 3d 20 30 78 39 32 2c 0d 0a 20 20 20 20 20 ........DpadRight.=.0x92,.......
e4a0 20 20 20 20 20 20 20 44 70 61 64 4c 65 66 74 20 3d 20 30 78 39 33 2c 0d 0a 20 20 20 20 20 20 20 .......DpadLeft.=.0x93,.........
e4c0 20 20 20 20 20 53 79 73 74 65 6d 44 6f 63 6b 20 3d 20 30 78 41 30 2c 0d 0a 20 20 20 20 20 20 20 .....SystemDock.=.0xA0,.........
e4e0 20 20 20 20 20 53 79 73 74 65 6d 55 6e 64 6f 63 6b 20 3d 20 30 78 41 31 2c 0d 0a 20 20 20 20 20 .....SystemUndock.=.0xA1,.......
e500 20 20 20 20 20 20 20 53 79 73 74 65 6d 53 65 74 75 70 20 3d 20 30 78 41 32 2c 0d 0a 20 20 20 20 .......SystemSetup.=.0xA2,......
e520 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 42 72 65 61 6b 20 3d 20 30 78 41 33 2c 0d 0a 20 20 20 ........SystemBreak.=.0xA3,.....
e540 20 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 44 65 62 75 67 67 65 72 42 72 65 61 6b 20 3d 20 30 .........SystemDebuggerBreak.=.0
e560 78 41 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 42 72 65 xA4,..............ApplicationBre
e580 61 6b 20 3d 20 30 78 41 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 70 70 6c 69 63 61 74 ak.=.0xA5,..............Applicat
e5a0 69 6f 6e 44 65 62 75 67 67 65 72 42 72 65 61 6b 20 3d 20 30 78 41 36 2c 0d 0a 20 20 20 20 20 20 ionDebuggerBreak.=.0xA6,........
e5c0 20 20 20 20 20 20 53 79 73 74 65 6d 53 70 65 61 6b 65 72 4d 75 74 65 20 3d 20 30 78 41 37 2c 0d ......SystemSpeakerMute.=.0xA7,.
e5e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 48 69 62 65 72 6e 61 74 65 20 3d 20 30 .............SystemHibernate.=.0
e600 78 41 38 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 44 69 73 70 6c 61 79 49 xA8,..............SystemDisplayI
e620 6e 76 65 72 74 20 3d 20 30 78 42 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74 65 nvert.=.0xB0,..............Syste
e640 6d 44 69 73 70 6c 61 79 49 6e 74 65 72 6e 61 6c 20 3d 20 30 78 42 31 2c 0d 0a 20 20 20 20 20 20 mDisplayInternal.=.0xB1,........
e660 20 20 20 20 20 20 53 79 73 74 65 6d 44 69 73 70 6c 61 79 45 78 74 65 72 6e 61 6c 20 3d 20 30 78 ......SystemDisplayExternal.=.0x
e680 42 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 44 69 73 70 6c 61 79 42 6f B2,..............SystemDisplayBo
e6a0 74 68 20 3d 20 30 78 42 33 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 44 69 th.=.0xB3,..............SystemDi
e6c0 73 70 6c 61 79 44 75 61 6c 20 3d 20 30 78 42 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 splayDual.=.0xB4,..............S
e6e0 79 73 74 65 6d 44 69 73 70 6c 61 79 54 6f 67 67 6c 65 49 6e 74 45 78 74 20 3d 20 30 78 42 35 2c ystemDisplayToggleIntExt.=.0xB5,
e700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 44 69 73 70 6c 61 79 53 77 61 70 50 ..............SystemDisplaySwapP
e720 72 69 6d 61 72 79 53 65 63 6f 6e 64 61 72 79 20 3d 20 30 78 42 36 2c 0d 0a 20 20 20 20 20 20 20 rimarySecondary.=.0xB6,.........
e740 20 20 20 20 20 53 79 73 74 65 6d 44 69 73 70 6c 61 79 4c 43 44 41 75 74 6f 53 63 61 6c 65 20 3d .....SystemDisplayLCDAutoScale.=
e760 20 30 78 42 37 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c .0xB7..........}............publ
e780 69 63 20 65 6e 75 6d 20 53 69 6d 75 6c 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 ic.enum.Simulation..........{...
e7a0 20 20 20 20 20 20 20 20 20 20 20 55 6e 64 65 66 69 6e 65 64 20 3d 20 30 78 30 30 2c 0d 0a 20 20 ...........Undefined.=.0x00,....
e7c0 20 20 20 20 20 20 20 20 20 20 46 6c 69 67 68 74 53 69 6d 75 6c 61 74 69 6f 6e 44 65 76 69 63 65 ..........FlightSimulationDevice
e7e0 20 3d 20 30 78 30 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 75 74 6f 6d 6f 62 69 6c 65 .=.0x01,..............Automobile
e800 53 69 6d 75 6c 61 74 69 6f 6e 44 65 76 69 63 65 20 3d 20 30 78 30 32 2c 0d 0a 20 20 20 20 20 20 SimulationDevice.=.0x02,........
e820 20 20 20 20 20 20 54 61 6e 6b 53 69 6d 75 6c 61 74 69 6f 6e 44 65 76 69 63 65 20 3d 20 30 78 30 ......TankSimulationDevice.=.0x0
e840 33 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 70 61 63 65 73 68 69 70 53 69 6d 75 6c 61 74 3,..............SpaceshipSimulat
e860 69 6f 6e 44 65 76 69 63 65 20 3d 20 30 78 30 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 ionDevice.=.0x04,..............S
e880 75 62 6d 61 72 69 6e 65 53 69 6d 75 6c 61 74 69 6f 6e 44 65 76 69 63 65 20 3d 20 30 78 30 35 2c ubmarineSimulationDevice.=.0x05,
e8a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 61 69 6c 69 6e 67 53 69 6d 75 6c 61 74 69 6f 6e 44 ..............SailingSimulationD
e8c0 65 76 69 63 65 20 3d 20 30 78 30 36 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 74 6f 72 evice.=.0x06,..............Motor
e8e0 63 79 63 6c 65 53 69 6d 75 6c 61 74 69 6f 6e 44 65 76 69 63 65 20 3d 20 30 78 30 37 2c 0d 0a 20 cycleSimulationDevice.=.0x07,...
e900 20 20 20 20 20 20 20 20 20 20 20 53 70 6f 72 74 73 53 69 6d 75 6c 61 74 69 6f 6e 44 65 76 69 63 ...........SportsSimulationDevic
e920 65 20 3d 20 30 78 30 38 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 69 72 70 6c 61 6e 65 53 e.=.0x08,..............AirplaneS
e940 69 6d 75 6c 61 74 69 6f 6e 44 65 76 69 63 65 20 3d 20 30 78 30 39 2c 0d 0a 20 20 20 20 20 20 20 imulationDevice.=.0x09,.........
e960 20 20 20 20 20 48 65 6c 69 63 6f 70 74 65 72 53 69 6d 75 6c 61 74 69 6f 6e 44 65 76 69 63 65 20 .....HelicopterSimulationDevice.
e980 3d 20 30 78 30 41 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 67 69 63 43 61 72 70 65 74 =.0x0A,..............MagicCarpet
e9a0 53 69 6d 75 6c 61 74 69 6f 6e 44 65 76 69 63 65 20 3d 20 30 78 30 42 2c 0d 0a 20 20 20 20 20 20 SimulationDevice.=.0x0B,........
e9c0 20 20 20 20 20 20 42 69 63 79 6c 63 6c 65 53 69 6d 75 6c 61 74 69 6f 6e 44 65 76 69 63 65 20 3d ......BicylcleSimulationDevice.=
e9e0 20 30 78 30 43 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 46 6c 69 67 68 74 43 6f 6e 74 72 6f .0x0C,..............FlightContro
ea00 6c 53 74 69 63 6b 20 3d 20 30 78 32 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 46 6c 69 67 lStick.=.0x20,..............Flig
ea20 68 74 53 74 69 63 6b 20 3d 20 30 78 32 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 79 63 htStick.=.0x21,..............Cyc
ea40 6c 69 63 43 6f 6e 74 72 6f 6c 20 3d 20 30 78 32 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 licControl.=.0x22,..............
ea60 43 79 63 6c 69 63 54 72 69 6d 20 3d 20 30 78 32 33 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 CyclicTrim.=.0x23,..............
ea80 46 6c 69 67 68 74 59 6f 6b 65 20 3d 20 30 78 32 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 FlightYoke.=.0x24,..............
eaa0 54 72 61 63 6b 43 6f 6e 74 72 6f 6c 20 3d 20 30 78 32 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 TrackControl.=.0x25,............
eac0 20 20 41 69 6c 65 72 6f 6e 20 3d 20 30 78 42 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 ..Aileron.=.0xB0,..............A
eae0 69 6c 65 72 6f 6e 54 72 69 6d 20 3d 20 30 78 42 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ileronTrim.=.0xB1,..............
eb00 41 6e 74 69 54 6f 72 71 75 65 43 6f 6e 74 72 6f 6c 20 3d 20 30 78 42 32 2c 0d 0a 20 20 20 20 20 AntiTorqueControl.=.0xB2,.......
eb20 20 20 20 20 20 20 20 41 75 74 6f 70 69 6c 6f 74 45 6e 61 62 6c 65 20 3d 20 30 78 42 33 2c 0d 0a .......AutopilotEnable.=.0xB3,..
eb40 20 20 20 20 20 20 20 20 20 20 20 20 43 68 61 66 66 52 65 6c 65 61 73 65 20 3d 20 30 78 42 34 2c ............ChaffRelease.=.0xB4,
eb60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 6c 6c 65 63 74 69 76 65 43 6f 6e 74 72 6f 6c 20 ..............CollectiveControl.
eb80 3d 20 30 78 42 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69 76 65 42 72 65 61 6b 20 3d =.0xB5,..............DiveBreak.=
eba0 20 30 78 42 36 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 45 6c 65 63 74 72 6f 6e 69 63 43 6f .0xB6,..............ElectronicCo
ebc0 75 6e 74 65 72 6d 65 61 73 75 72 65 73 20 3d 20 30 78 42 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 untermeasures.=.0xB7,...........
ebe0 20 20 20 45 6c 65 76 61 74 6f 72 20 3d 20 30 78 42 38 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ...Elevator.=.0xB8,.............
ec00 20 45 6c 65 76 61 74 6f 72 54 72 69 6d 20 3d 20 30 78 42 39 2c 0d 0a 20 20 20 20 20 20 20 20 20 .ElevatorTrim.=.0xB9,...........
ec20 20 20 20 52 75 64 64 65 72 20 3d 20 30 78 42 41 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 ...Rudder.=.0xBA,..............T
ec40 68 72 6f 74 74 6c 65 20 3d 20 30 78 42 42 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 46 6c 69 hrottle.=.0xBB,..............Fli
ec60 67 68 74 43 6f 6d 6d 75 6e 69 63 61 74 69 6f 6e 73 20 3d 20 30 78 42 43 2c 0d 0a 20 20 20 20 20 ghtCommunications.=.0xBC,.......
ec80 20 20 20 20 20 20 20 46 6c 61 72 65 52 65 6c 65 61 73 65 20 3d 20 30 78 42 44 2c 0d 0a 20 20 20 .......FlareRelease.=.0xBD,.....
eca0 20 20 20 20 20 20 20 20 20 4c 61 6e 64 69 6e 67 47 65 61 72 20 3d 20 30 78 42 45 2c 0d 0a 20 20 .........LandingGear.=.0xBE,....
ecc0 20 20 20 20 20 20 20 20 20 20 54 6f 65 42 72 65 61 6b 20 3d 20 30 78 42 46 2c 0d 0a 20 20 20 20 ..........ToeBreak.=.0xBF,......
ece0 20 20 20 20 20 20 20 20 54 72 69 67 67 65 72 20 3d 20 30 78 43 30 2c 0d 0a 20 20 20 20 20 20 20 ........Trigger.=.0xC0,.........
ed00 20 20 20 20 20 57 65 61 70 6f 6e 73 41 72 6d 20 3d 20 30 78 43 31 2c 0d 0a 20 20 20 20 20 20 20 .....WeaponsArm.=.0xC1,.........
ed20 20 20 20 20 20 57 65 61 70 6f 6e 73 53 65 6c 65 63 74 20 3d 20 30 78 43 32 2c 0d 0a 20 20 20 20 .....WeaponsSelect.=.0xC2,......
ed40 20 20 20 20 20 20 20 20 57 69 6e 67 46 6c 61 70 73 20 3d 20 30 78 43 33 2c 0d 0a 20 20 20 20 20 ........WingFlaps.=.0xC3,.......
ed60 20 20 20 20 20 20 20 41 63 63 65 6c 65 72 61 74 6f 72 20 3d 20 30 78 43 34 2c 0d 0a 20 20 20 20 .......Accelerator.=.0xC4,......
ed80 20 20 20 20 20 20 20 20 42 72 61 6b 65 20 3d 20 30 78 43 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 ........Brake.=.0xC5,...........
eda0 20 20 20 43 6c 75 74 63 68 20 3d 20 30 78 43 36 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 ...Clutch.=.0xC6,..............S
edc0 68 69 66 74 65 72 20 3d 20 30 78 43 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 74 65 65 hifter.=.0xC7,..............Stee
ede0 72 69 6e 67 20 3d 20 30 78 43 38 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 75 72 72 65 74 ring.=.0xC8,..............Turret
ee00 44 69 72 65 63 74 69 6f 6e 20 3d 20 30 78 43 39 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 42 Direction.=.0xC9,..............B
ee20 61 72 72 65 6c 45 6c 65 76 61 74 69 6f 6e 20 3d 20 30 78 43 41 2c 0d 0a 20 20 20 20 20 20 20 20 arrelElevation.=.0xCA,..........
ee40 20 20 20 20 44 69 76 65 50 6c 61 6e 65 20 3d 20 30 78 43 42 2c 0d 0a 20 20 20 20 20 20 20 20 20 ....DivePlane.=.0xCB,...........
ee60 20 20 20 42 61 6c 6c 61 73 74 20 3d 20 30 78 43 43 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ...Ballast.=.0xCC,..............
ee80 42 69 63 79 63 6c 65 43 72 61 6e 6b 20 3d 20 30 78 43 44 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 BicycleCrank.=.0xCD,............
eea0 20 20 48 61 6e 64 6c 65 42 61 72 73 20 3d 20 30 78 43 45 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 ..HandleBars.=.0xCE,............
eec0 20 20 46 72 6f 6e 74 42 72 61 6b 65 20 3d 20 30 78 43 46 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 ..FrontBrake.=.0xCF,............
eee0 20 20 52 65 61 72 42 72 61 6b 65 20 3d 20 30 78 44 30 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d ..RearBrake.=.0xD0..........}...
ef00 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 42 75 74 74 6f 6e 0d 0a 20 20 20 .........public.enum.Button.....
ef20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 64 65 66 69 6e 65 64 20 3d 20 .....{..............Undefined.=.
ef40 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 50 72 69 6d 61 72 79 2c 0d 0a 20 20 20 20 20 20 0,..............Primary,........
ef60 20 20 20 20 20 20 53 65 63 6f 6e 64 61 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 65 ......Secondary,..............Te
ef80 72 74 69 61 72 79 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 7d 0d 0a 00 00 00 rtiary..........}......}..}.....
efa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 48 49 44 00 1b 00 00 00 ........................HID.....
efc0 55 6e 69 74 79 45 6e 67 69 6e 65 2e 49 6e 70 75 74 53 79 73 74 65 6d 2e 48 49 44 00 UnityEngine.InputSystem.HID.