Title: fix: Windows Terminal Shift+Enter 无法换行 — 改用动态 modifier 位解析 by dengmik-commits · Pull Request #70 · lessweb/deepcode-cli · GitHub
Open Graph Title: fix: Windows Terminal Shift+Enter 无法换行 — 改用动态 modifier 位解析 by dengmik-commits · Pull Request #70 · lessweb/deepcode-cli
X Title: fix: Windows Terminal Shift+Enter 无法换行 — 改用动态 modifier 位解析 by dengmik-commits · Pull Request #70 · lessweb/deepcode-cli
Description: 问题 Windows Terminal 下 Shift+Enter 无法换行,行为等同于普通回车,直接提交输入。 此问题在 #52 (e56a112) 中曾尝试修复,当时添加了 enableTerminalExtendedKeys(xterm modifyOtherKeys level 1)和两个额外序列(�[13;2~、�[27;2;13~)。 #52 为什么没修好 根本原因是 SHIFT_RETURN_SEQUENCES 使用精确字符串匹配(Set.has())来比对 modifier 值。xterm 标准中 Shift 修饰键 = 2,序列为 �[13;2u。但 Windows Terminal 会在 modifier 上附加额外的标志位,实际发送的序列是: �[13;130u (modifier = 130 = 128 + 2) 其中 128 是终端特有的标志位。130 & 2 === 2,Shift 确实被按下了——但精确字符串 �[13;130u 不在 Set 中,被视为未知转义序列,key.meta 被设为 true,按键被静默丢弃。 此外,仅靠 xterm modifyOtherKeys(�[>4;1m)不够——Windows Terminal 需要 Kitty 渐进增强协议(�[>1u)才会以 CSI 格式上报修饰键。 修复内容 改动两个文件: src/ui/prompt/useTerminalInput.ts isShiftReturn(raw) — 动态解析 CSI 序列,提取 modifier 参数,用 (mod & 2) !== 0 按位检测 Shift。不关心 terminal 附加的其他标志位,能匹配 2、6、130 等任意包含 Shift 位的 modifier 值。 isReturn(raw) — 识别任意 CSI 格式的 Enter(�[13u、�[13;\d+u 等),兜底处理终端将 Enter 转义为 CSI 格式的情况。 两个函数都优先回退到已有的 SHIFT_RETURN_SEQUENCES 和 META_RETURN_SEQUENCES Set,保证向后兼容。 key.return 检测简化为 isReturn(raw),key.shift 检测使用 isShiftReturn(raw)。 src/ui/prompt/cursor.ts enableTerminalExtendedKeys() 同时发送 xterm modifyOtherKeys(�[>4;1m)和 Kitty 渐进增强(�[>1u)。终端会忽略不认识的序列,同时发送两者安全无副作用。 disableTerminalExtendedKeys() 发送对应的关闭序列(�[>4;0m + �[
Open Graph Description: 问题 Windows Terminal 下 Shift+Enter 无法换行,行为等同于普通回车,直接提交输入。 此问题在 #52 (e56a112) 中曾尝试修复,当时添加了 enableTerminalExtendedKeys(xterm modifyOtherKeys level 1)和两个额外序列(�[13;2~、�[27;2;13~)。 #52 为什么没修好 根本原因是 SHIFT...
X Description: 问题 Windows Terminal 下 Shift+Enter 无法换行,行为等同于普通回车,直接提交输入。 此问题在 #52 (e56a112) 中曾尝试修复,当时添加了 enableTerminalExtendedKeys(xterm modifyOtherKeys level 1)和两个额外序列(�[13;2~、�[27;2;13~)。 #52 为什么没修好 根本原因是 SHIFT...
Opengraph URL: https://github.com/lessweb/deepcode-cli/pull/70
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/files(.:format) |
| route-controller | pull_requests |
| route-action | files |
| fetch-nonce | v2:864840ff-b628-b7ed-ec3d-4f00ca62f1e5 |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | B3F6:3566AB:286A99:3623CC:6A4D8A1F |
| html-safe-nonce | 382717b65362d8d60e3963b256c2c20b16076c2a17b69000f4eaad4300879ea1 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCM0Y2OjM1NjZBQjoyODZBOTk6MzYyM0NDOjZBNEQ4QTFGIiwidmlzaXRvcl9pZCI6Ijc3NDQyMDI0MjU5MzA0NTE0ODciLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 7555474c3ad4de2c14283c753cde60361e3d6fedc0c8af3d24ec991daf201368 |
| hovercard-subject-tag | pull_request:3687097554 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/lessweb/deepcode-cli/pull/70/files |
| twitter:image | https://avatars.githubusercontent.com/u/270912164?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/270912164?s=400&v=4 |
| og:image:alt | 问题 Windows Terminal 下 Shift+Enter 无法换行,行为等同于普通回车,直接提交输入。 此问题在 #52 (e56a112) 中曾尝试修复,当时添加了 enableTerminalExtendedKeys(xterm modifyOtherKeys level 1)和两个额外序列(�[13;2~、�[27;2;13~)。 #52 为什么没修好 根本原因是 SHIFT... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | 9f8758a3953dfe943439713a6fa4f90d542a3431f10e861ca03dd7f39009f320 |
| turbo-cache-control | no-preview |
| diff-view | unified |
| go-import | github.com/lessweb/deepcode-cli git https://github.com/lessweb/deepcode-cli.git |
| octolytics-dimension-user_id | 118287711 |
| octolytics-dimension-user_login | lessweb |
| octolytics-dimension-repository_id | 1223512305 |
| octolytics-dimension-repository_nwo | lessweb/deepcode-cli |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1223512305 |
| octolytics-dimension-repository_network_root_nwo | lessweb/deepcode-cli |
| turbo-body-classes | logged-out env-production page-responsive full-width |
| disable-turbo | true |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | bffd5484f01713a661b03469b77678f72b6574ed |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width