You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何修改PuTTY源代码让功能键生成自定义按键码适配Color Maximite 2

修改PuTTY源码适配Color Maximite 2功能键需求

以下是具体的修改和编译步骤:

1. 获取PuTTY源码

下载PuTTY官方源码包(通过官方渠道获取最新稳定版),解压到本地工作目录。

2. 定位功能键处理代码

PuTTY处理终端按键输出的核心逻辑在terminal.c文件中。打开该文件,搜索TK_F1TK_F12的宏定义,找到功能键对应的输出处理分支。

通常会看到类似这样的结构:

case TK_F1:
    if (term->keymap == KEYMAP_VT100) {
        send_escseq("OP");
    } else if (term->keymap == KEYMAP_XTERM) {
        send_escseq("[11~");
    }
    break;

3. 修改功能键输出为目标ASCII码

Color Maximite 2要求F1对应十进制145(十六进制0x91),F2对应146(0x92),以此类推直到F12对应156(0x9C)。

替换原有输出逻辑,改为直接发送单个目标字节:

case TK_F1:
    term_out_raw(term, "\x91", 1);
    break;
case TK_F2:
    term_out_raw(term, "\x92", 1);
    break;
case TK_F3:
    term_out_raw(term, "\x93", 1);
    break;
case TK_F4:
    term_out_raw(term, "\x94", 1);
    break;
case TK_F5:
    term_out_raw(term, "\x95", 1);
    break;
case TK_F6:
    term_out_raw(term, "\x96", 1);
    break;
case TK_F7:
    term_out_raw(term, "\x97", 1);
    break;
case TK_F8:
    term_out_raw(term, "\x98", 1);
    break;
case TK_F9:
    term_out_raw(term, "\x99", 1);
    break;
case TK_F10:
    term_out_raw(term, "\x9A", 1);
    break;
case TK_F11:
    term_out_raw(term, "\x9B", 1);
    break;
case TK_F12:
    term_out_raw(term, "\x9C", 1);
    break;

如果需要保留其他场景的键码兼容性,也可以新增自定义键码模式分支(需在keymap.c中添加枚举值,再在terminal.c中判断该模式时执行上述逻辑),但仅针对串口连接场景的话,直接替换默认逻辑即可。

4. 编译修改后的PuTTY

以Debian/Ubuntu为例,先安装编译依赖:

sudo apt-get install gcc make libgtk2.0-dev libssl-dev

进入PuTTY源码目录,执行编译命令:

./configure
make

编译完成后,当前目录会生成putty可执行文件。

5. 测试功能

运行编译后的PuTTY,配置串口连接/dev/ttyUSB0(波特率、数据位等参数匹配Color Maximite 2要求),连接后打开设备代码编辑器,按F1-F12键验证设备是否正常响应。

内容的提问来源于stack exchange,提问作者paxdiablo

火山引擎 最新活动