罗技的 LED 照明 SDK 无法与我的 G502 配合使用

2024-01-06

我想得到罗技自己的 LED SDK http://gaming.logitech.com/en-us/developers正在使用我的 G502,但我不能。 我使用的是 SDK 版本 8.82.7,这是迄今为止的最新版本。我在 SO 或互联网的其他地方也找不到任何东西,所以我在这里问。

这是我的 LogitechGSDK.cs:

using System;
using System.Collections;
using System.Runtime.InteropServices;

namespace LogiRGB {

    public enum KeyboardNames {
        ESC = 0x01,
        F1 = 0x3b,
        F2 = 0x3c,
        F3 = 0x3d,
        F4 = 0x3e,
        F5 = 0x3f,
        F6 = 0x40,
        F7 = 0x41,
        F8 = 0x42,
        F9 = 0x43,
        F10 = 0x44,
        F11 = 0x57,
        F12 = 0x58,
        PRINT_SCREEN = 0x137,
        SCROLL_LOCK = 0x46,
        PAUSE_BREAK = 0x45,
        TILDE = 0x29,
        ONE = 0x02,
        TWO = 0x03,
        THREE = 0x04,
        FOUR = 0x05,
        FIVE = 0x06,
        SIX = 0x07,
        SEVEN = 0x08,
        EIGHT = 0x09,
        NINE = 0x0A,
        ZERO = 0x0B,
        MINUS = 0x0C,
        EQUALS = 0x0D,
        BACKSPACE = 0x0E,
        INSERT = 0x152,
        HOME = 0x147,
        PAGE_UP = 0x149,
        NUM_LOCK = 0x145,
        NUM_SLASH = 0x135,
        NUM_ASTERISK = 0x37,
        NUM_MINUS = 0x4A,
        TAB = 0x0F,
        Q = 0x10,
        W = 0x11,
        E = 0x12,
        R = 0x13,
        T = 0x14,
        Y = 0x15,
        U = 0x16,
        I = 0x17,
        O = 0x18,
        P = 0x19,
        OPEN_BRACKET = 0x1A,
        CLOSE_BRACKET = 0x1B,
        BACKSLASH = 0x2B,
        KEYBOARD_DELETE = 0x153,
        END = 0x14F,
        PAGE_DOWN = 0x151,
        NUM_SEVEN = 0x47,
        NUM_EIGHT = 0x48,
        NUM_NINE = 0x49,
        NUM_PLUS = 0x4E,
        CAPS_LOCK = 0x3A,
        A = 0x1E,
        S = 0x1F,
        D = 0x20,
        F = 0x21,
        G = 0x22,
        H = 0x23,
        J = 0x24,
        K = 0x25,
        L = 0x26,
        SEMICOLON = 0x27,
        APOSTROPHE = 0x28,
        ENTER = 0x1C,
        NUM_FOUR = 0x4B,
        NUM_FIVE = 0x4C,
        NUM_SIX = 0x4D,
        LEFT_SHIFT = 0x2A,
        Z = 0x2C,
        X = 0x2D,
        C = 0x2E,
        V = 0x2F,
        B = 0x30,
        N = 0x31,
        M = 0x32,
        COMMA = 0x33,
        PERIOD = 0x34,
        FORWARD_SLASH = 0x35,
        RIGHT_SHIFT = 0x36,
        ARROW_UP = 0x148,
        NUM_ONE = 0x4F,
        NUM_TWO = 0x50,
        NUM_THREE = 0x51,
        NUM_ENTER = 0x11C,
        LEFT_CONTROL = 0x1D,
        LEFT_WINDOWS = 0x15B,
        LEFT_ALT = 0x38,
        SPACE = 0x39,
        RIGHT_ALT = 0x138,
        RIGHT_WINDOWS = 0x15C,
        APPLICATION_SELECT = 0x15D,
        RIGHT_CONTROL = 0x11D,
        ARROW_LEFT = 0x14B,
        ARROW_DOWN = 0x150,
        ARROW_RIGHT = 0x14D,
        NUM_ZERO = 0x52,
        NUM_PERIOD = 0x53,
    };

    public static class LogitechGSDK {
        //LED SDK
        private const int LOGI_DEVICETYPE_MONOCHROME_ORD = 0;
        private const int LOGI_DEVICETYPE_RGB_ORD = 1;
        private const int LOGI_DEVICETYPE_PERKEY_RGB_ORD = 2;

        public const int LOGI_DEVICETYPE_MONOCHROME = (1 << LOGI_DEVICETYPE_MONOCHROME_ORD);
        public const int LOGI_DEVICETYPE_RGB = (1 << LOGI_DEVICETYPE_RGB_ORD);
        public const int LOGI_DEVICETYPE_PERKEY_RGB = (1 << LOGI_DEVICETYPE_PERKEY_RGB_ORD);
        public const int LOGI_DEVICETYPE_ALL = (LOGI_DEVICETYPE_MONOCHROME | LOGI_DEVICETYPE_RGB | LOGI_DEVICETYPE_PERKEY_RGB);

        public const int LOGI_LED_BITMAP_WIDTH = 21;
        public const int LOGI_LED_BITMAP_HEIGHT = 6;
        public const int LOGI_LED_BITMAP_BYTES_PER_KEY = 4;

        public const int LOGI_LED_BITMAP_SIZE = LOGI_LED_BITMAP_WIDTH * LOGI_LED_BITMAP_HEIGHT * LOGI_LED_BITMAP_BYTES_PER_KEY;
        public const int LOGI_LED_DURATION_INFINITE = 0;

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedInit();

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedSetTargetDevice(int targetDevice);

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedGetSdkVersion(ref int majorNum, ref int minorNum, ref int buildNum);

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedSaveCurrentLighting();

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedSetLighting(int redPercentage, int greenPercentage, int bluePercentage);

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedRestoreLighting();

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedFlashLighting(int redPercentage, int greenPercentage, int bluePercentage, int milliSecondsDuration, int milliSecondsInterval);

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedPulseLighting(int redPercentage, int greenPercentage, int bluePercentage, int milliSecondsDuration, int milliSecondsInterval);

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedStopEffects();

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedSetLightingFromBitmap(byte[] bitmap);

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedSetLightingForKeyWithScanCode(int keyCode, int redPercentage, int greenPercentage, int bluePercentage);

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedSetLightingForKeyWithHidCode(int keyCode, int redPercentage, int greenPercentage, int bluePercentage);

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedSetLightingForKeyWithQuartzCode(int keyCode, int redPercentage, int greenPercentage, int bluePercentage);

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedSetLightingForKeyWithKeyName(KeyboardNames keyCode, int redPercentage, int greenPercentage, int bluePercentage);

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedSaveLightingForKey(KeyboardNames keyName);

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedRestoreLightingForKey(KeyboardNames keyName);

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedFlashSingleKey(KeyboardNames keyName, int redPercentage, int greenPercentage, int bluePercentage, int msDuration, int msInterval);

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedPulseSingleKey(KeyboardNames keyName, int startRedPercentage, int startGreenPercentage, int startBluePercentage, int finishRedPercentage, int finishGreenPercentage, int finishBluePercentage, int msDuration, bool isInfinite);

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern bool LogiLedStopEffectsOnKey(KeyboardNames keyName);

        [DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
        public static extern void LogiLedShutdown();
    }
}

我的颜色改变代码基本上相当于

LogitechGSDK.LogiLedInit();
LogitechGSDK.LogiLedSetTargetDevice(LogitechGSDK.LOGI_DEVICETYPE_ALL);
LogitechGSDK.LogiLedSetLighting(255, 127, 0);

which should将鼠标的 LED 灯设置为漂亮的橙色,但实际上什么也没做。 值得注意的是,Logitech 自己的示例(包含在 SDK .zip 中)无法运行。我可以使用罗技的游戏软件设置 LED 颜色,但这不是我想要的。

罗技的SDK坏了吗?如果没有,我该怎么做才能让它工作?

Edit:我可能应该提一下,我确实拥有 RGB 版本的 G502。


在你的代码中的参数LogitechGSDK.LogiLedSetLighting(255, 127, 0);不正确,因为它们超出了值限制。

它们应该是百分比而不是 RGB 值。

输入 0 到 100 之间的数字即可使其工作。

还要替换您的代码:

LogitechGSDK.LogiLedSetTargetDevice(LogitechGSDK.LOGI_DEVICETYPE_ALL);

With:

LogitechGSDK.LogiLedSetTargetDevice(LogitechGSDK.LOGI_DEVICETYPE_RGB);

或者将其全部删除。

这是橙色的示例:

LogitechGSDK.LogiLedSetLighting(100, 30, 0);

请记住给代码足够的时间来初始化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

罗技的 LED 照明 SDK 无法与我的 G502 配合使用 的相关文章

随机推荐

  • 将 ZipOutputStream 返回到浏览器

    我有一个 ZipOutputStream 我想将其返回到浏览器 我想要的体验是用户单击锚标记 然后为我拥有的 ZipOutputStream 显示文件下载提示 如何将 ZipOutputStream 返回到浏览器 昨天必须做同样的事情 By
  • 为什么 Oracle 表/列/索引名称限制为 30 个字符?

    我可以理解 很多年前会有这种限制 但现在这个限制肯定可以很容易地增加 我们有对象的命名约定 但总会出现达到此限制的情况 特别是在命名外键时 有谁真正知道为什么这不是更大的尺寸 或者是 11 克更大 显然 答案是它将破坏当前未进行防御性编码的
  • JavaScript - 二分搜索每次都会挂起

    我有一个二维数组 如下所示 1 11 23 2 22 52 3 33 61 其中数组按每行中的第一个值排序 我试图在数组中找到一个值close到搜索值 在一定的灵敏度内 这种设置的方式以及灵敏度的值确保数组中只有一个可能的匹配 搜索值是鼠标
  • 将拟合摘要写入 pdf 文件或类似文件中

    我正在循环中对许多数据集进行线性拟合 并将结果绘制在 pdf 文件中 是否可以直接将summary fit 的输出保存在同一个pdf文件中 而不是通过控制台观察大约100个数据集的摘要 LMmodel lt y x fit lt lm LM
  • 我什么时候应该使用前进和移动?

    我有一个对向量进行操作的代码 template
  • PHP:将任何浮点数格式化为十进制扩展

    我想创建一个函数formatFloat 它接受任何浮点并将其格式化为十进制扩展字符串 例如 formatFloat 1 0E 25 10 000 000 000 000 000 000 000 000 formatFloat 1 0E 24
  • 如何将两个 long 相除并得到值?

    我需要计算整数和长整数的概率 但我总是得到0 整数a 234 长b 123453344L 浮动 c a b 如何在 Java 中得到正确的结果 您需要将其中一个投射为float 或将其中一个变量声明为float从头开始 否则 Java 的整
  • 何时适合在 Web 项目中使用 UUID?

    我正忙于一个新项目的数据库设计 我不确定是否使用UUID或普通的表唯一自增id 到目前为止 我建立的网站都在一台服务器上运行 非常大的流量从来都不是太令人担忧的问题 然而 这个 Web 应用程序最终将在多个服务器上同时运行 提供 API 并
  • 自定义控件中的膨胀布局 - 如何?

    我有关于如何在这里创建自定义控件的想法 Android 界面 需要有关使用哪些小部件的建议 https stackoverflow com questions 5891153 android interface need suggestio
  • 如何从 Android APK 生成调用图?

    我从 Google Play 下载了一些 Android 应用程序 我有Smali通过逆向工程工具进行编码apktool 我想为这些应用程序生成调用图 我在堆栈溢出和谷歌上看到了很多链接 大多数建议的工具要么用于c c 或者如果他们是为了J
  • 调用 wait() 时出现异常

    我正在实现一个应用程序 在其中播放两种声音 触摸和展示 其次是 tiger 这是在我的looper方法 我第一次打电话 然后打电话wait 然后调用looper again 问题是我在 LogCat 中遇到异常wait call 这是我的代
  • C++:将字符串拆分并将内容填充到 std::vector 的优雅方法

    我想沿着空格分割一个字符串 并且我知道标记 代表有效整数 我想将标记转换为整数 并用它们填充向量 我可以使用 boost split 创建令牌字符串向量 然后使用 std transform 你的解决方案是什么 使用升压是可以接受的 像这样
  • WPF 装饰器剪辑

    我有一个ItemsControl in a ScrollViewer 中的项目ItemsControl被扩展为DataTemplate它基本上由一个Adorner 现在的问题是 当滚动时 Adorner在外部可见ScrollViewer 假
  • 如何在 MATLAB 中保存更改后的图像?

    我想将图像读入 MATLAB 在其上绘制一个矩形 然后保存该图像 另外 我刚刚学习 MATLAB 请轻点 看起来应该很简单 但我似乎做不到 im imread image tif imshow im rectangle Position 1
  • 有没有办法检测当前的输入语言设置是什么?

    我基本上想知道系统当前的输入语言是什么 对于设置了多种语言输入法的用户 这将确定是否a的文本方向
  • 如何设置导航器拖动手柄的样式,Highstock

    除了颜色之外 是否可以设置导航器手柄的样式 如形状 高度 宽度 边框半径 背景等 来自 API 文档 http api highcharts com highstock navigator handles http api highchar
  • 对于 SQLCHAR 类型参数,ODBC SQLBindParameter 的 ColumnSize 参数可以是 strlen(param) + 1 吗?

    SQLBindParameter 函数的示例位于http msdn microsoft com en us library ms710963 v vs 85 aspx http msdn microsoft com en us librar
  • Scala:如何获得 Future 的结果

    我有一个返回a的方法Future像这样 def isTokenExpired token String Future Boolean 然后我有另一个调用的方法isTokenExpired返回一个Boolean像这样 def isExpire
  • 时间:2019-05-17 标签:c#UWPautoscrollingtext

    我目前正在为树莓派 Windows IoT 构建一个应用程序 它接受 UDP 消息并将其显示在屏幕上 我需要一种方法让文本自动在屏幕上水平滚动 我不能让用户单击按钮 因为没有输入设备连接到 Pi 到目前为止 我一直在尝试使用滚动查看器并手动
  • 罗技的 LED 照明 SDK 无法与我的 G502 配合使用

    我想得到罗技自己的 LED SDK http gaming logitech com en us developers正在使用我的 G502 但我不能 我使用的是 SDK 版本 8 82 7 这是迄今为止的最新版本 我在 SO 或互联网的其