From 1ce45fac94df72376b191b04fad021141bc12d0d Mon Sep 17 00:00:00 2001 From: DreamMaoMao <2523610504@qq.com> Date: Tue, 26 May 2026 11:51:15 +0800 Subject: [PATCH] feat: support parse button code in config --- src/config/parse_config.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/config/parse_config.h b/src/config/parse_config.h index 4f3dd708..74b36ba4 100644 --- a/src/config/parse_config.h +++ b/src/config/parse_config.h @@ -878,6 +878,24 @@ uint32_t parse_button(const char *str) { } lowerStr[i] = '\0'; // 确保字符串正确终止 + // 解析 "code:数字" 格式 + if (strncmp(lowerStr, "code:", 5) == 0) { + const char *numStart = lowerStr + 5; // 跳过 "code:" + char *endptr; + unsigned long val = strtoul(numStart, &endptr, 10); + + // 检查是否成功转换且无多余字符,且值未溢出(在 uint32_t 范围内) + if (endptr != numStart && *endptr == '\0' && val <= UINT32_MAX) { + return (uint32_t)val; + } else { + fprintf(stderr, + "\033[1m\033[31m[ERROR]:\033[33m Invalid code format: " + "\033[1m\033[31m%s\n", + str); + return UINT32_MAX; + } + } + // 根据转换后的小写字符串返回对应的按钮编号 if (strcmp(lowerStr, "btn_left") == 0) { return BTN_LEFT;