Example #1
0
        private static List <ushort> GetPressedButtons(HIDP_CAPS hidCaps, IntPtr preparsedData, byte[] rawInputData)
        {
            var buttonCapsLength = hidCaps.NumberInputButtonCaps;
            var buttonCaps       = new HIDP_BUTTON_CAPS[buttonCapsLength];

            CheckError(HidP_GetButtonCaps(HIDP_REPORT_TYPE.HidP_Input, buttonCaps, ref buttonCapsLength, preparsedData));

            var usagePages = new HashSet <ushort>();

            foreach (var bc in buttonCaps)
            {
                usagePages.Add(bc.UsagePage);
            }

            var res = new List <ushort>();

            foreach (var usagePage in usagePages)
            {
                int usageListLength = hidCaps.NumberInputButtonCaps;
                var usageList       = new ushort[usageListLength];

                CheckError(HidP_GetUsages(HIDP_REPORT_TYPE.HidP_Input, usagePage, 0,
                                          usageList, ref usageListLength, preparsedData, rawInputData, rawInputData.Length));

                for (var i = 0; i < usageListLength; ++i)
                {
                    res.Add(usageList[i]);
                }
            }

            return(res);
        }
Example #2
0
        public static string GetLinkName(this HIDP_BUTTON_CAPS caps)
        {
            if (!caps.HasLink())
            {
                return("");
            }
            var pageType = Utils.UsageType((UsagePage)caps.LinkUsagePage);

            return(Enum.GetName(pageType, caps.LinkUsage) + $"({pageType.Name})[{caps.LinkCollection}]");
        }
Example #3
0
 public static int GetLinkIndex(this HIDP_BUTTON_CAPS caps) => caps.LinkCollection;
Example #4
0
 public static bool HasLink(this HIDP_BUTTON_CAPS caps) => caps.LinkUsage != 0;
Example #5
0
        public static string GetName(this HIDP_BUTTON_CAPS caps)
        {
            var pageType = Utils.UsageType((UsagePage)caps.UsagePage);

            return(Enum.GetName(pageType, caps.NotRange.Usage) + $"({pageType.Name})");
        }
Example #6
0
        /// <summary>
        /// Provides name of the usage at the given index.
        /// </summary>
        /// <param name="index">Index of the usage concerned.</param>
        /// <returns></returns>
        internal string GetButtonName(HIDP_BUTTON_CAPS bc)
        {
            Type usageType = Utils.UsageType(this.UsagePageEnum);

            return(Enum.GetName(usageType, bc.NotRange.Usage));
        }