Closed xq114 closed 2 years ago
linux下vscode terminal也正常,windows上vscode remote连接linux使用也正常,只有原生windows环境vscode terminal有问题
这。。还真有在vscode terminal 下用这玩意的哈,等回头有时间看看 = =
我试了下,可以的么 这边没法复现,不过我这里是 powershell 不是 pwsh
我试了下,可以的么 这边没法复现,不过我这里是 powershell 不是 pwsh
cmd里也有此问题
我这里都可以。
Version: 1.60.0 (user setup) Commit: e7d7e9a9348e6a8cc8c03f877d39cb72e5dfb1ff Date: 2021-09-01T10:41:52.311Z Electron: 13.1.8 Chrome: 91.0.4472.164 Node.js: 14.16.0 V8: 9.1.269.39-electron.0 OS: Windows_NT x64 10.0.19043
用 log:print()
日志文件在 project/.xmake/ui.log
ui.log里面我按的上(450),下(456),左(452),右(454)都没识别
在其他terminal里面这些是259、258、260、261
在其他terminal里面这些是259、258、260、261
这些终端才是正常行为,pdcures 里面定义的也是这些。。
#define KEY_DOWN 0x102 /* Down arrow key */
#define KEY_UP 0x103 /* Up arrow key */
#define KEY_LEFT 0x104 /* Left arrow key */
#define KEY_RIGHT 0x105 /* Right arrow key */
ui.log里面我按的上(450),下(456),左(452),右(454)都没识别
这个是不正常的,我不知道你这 vscode 下为啥为收到这些,我这都是 259 等正常值。。感觉像是 vscode 的问题,跟 xmake 没啥太大关系
反正目前这边只能处理收到正常 key code 值,其他未知的 key 也没法额外做特殊 map,所以暂时无解,先 close 了
我debug了一下,原因是VSCode基于ConPTY,而ConPTY(Pseudo Terminal)相当于加了一层虚拟键盘,所以和普通terminal输出不同。在其他使用ConPTY API的terminal(extraterm,etc)里面都能复现这个问题。ConPTY API不会设置extended,因此具有和Console API不同的行为,而pdcurses没有对ConPTY API的这种行为进行支持。
https://github.com/wmcbrine/PDCurses/blob/HEAD/wincon/pdckbd.c#L444-L453
这里state&extended结果在传统console上是0x100,在ConPTY里面是0,所以原来map到KEY_UP的键会map到KEY_A2,KEY_DOWN map到KEY_C2,以此类推。所以会出不同结果。
https://github.com/wmcbrine/PDCurses/blob/HEAD/wincon/pdckbd.c#L236-L239
https://github.com/wmcbrine/PDCurses/blob/HEAD/wincon/pdckbd.c#L72-L75
关于这些键位,pdcurses的解释是Virtual keyboard上的键,见
https://github.com/wmcbrine/PDCurses/blob/HEAD/curses.h#L766-L774
MS现在在推新的ConPTY,未来基于ConPTY的terminal可能会越来越多,不支持ConPTY还是有影响的。这里还是改下好。
,而pdcurses没有对ConPTY API的这种行为进行支持。
它没支持,那这是需要 pdcurses 改什么么?我看它不是已经识别标示为 virtual key 了么
如果这些虚拟键位的值在所有 ConPTY 终端上 map 关系一致,key up对应的值固定,我可以外面兼容处理下 map
,而pdcurses没有对ConPTY API的这种行为进行支持。
它没支持,那这是需要 pdcurses 改什么么?我看它不是已经识别标示为 virtual key 了么
如果这些虚拟键位的值在所有 ConPTY 终端上 map 关系一致,key up对应的值固定,我可以外面兼容处理下 map
是固定的
error: @programdir\core\ui\program.lua:353: table index is nil
stack traceback:
@programdir\core\base\utils.lua:290: in metamethod 'newindex'
@programdir\core\ui\program.lua:353: in function 'ui/application._key_map'
@programdir\core\ui\program.lua:396: in function 'ui/application._input_key'
@programdir\core\ui\program.lua:143: in function 'ui/application.event'
@programdir\core\ui\program.lua:228: in function 'ui/application.loop'
@programdir\core\ui\application.lua:110: in function <@programdir\core\ui\application.lua:105>
[C]: in function 'xpcall'
@programdir\core\base\utils.lua:280: in function 'sandbox/modules/utils.trycall'
@programdir\core\ui\application.lua:116: in function 'ui/application.run'
@programdir\actions\config\menuconf.lua:404: in function <@programdir\actions\config\menuconf.lua:403>
(...tail calls...)
@programdir\actions\config\main.lua:282: in function <@programdir\actions\config\main.lua:249>
(...tail calls...)
[C]: in function 'xpcall'
@programdir\core\base\utils.lua:280: in function 'sandbox/modules/utils.trycall'
(...tail calls...)
@programdir\core\base\task.lua:519: in function 'base/task.run'
@programdir\core\main.lua:278: in upvalue 'cotask'
@programdir\core\base\scheduler.lua:371: in function <@programdir\core\base\scheduler.lua:368>
改进过了,不过需要等 https://github.com/xmake-io/xmake/actions/runs/1470072651 上跑完,才能全量更新,因为改了 core
xmake update master
现在可以了
描述问题
Windows上使用VSCode的terminal时,运行xmake f --menu,则上下左右方向键均无响应,只有Enter和Backspace有响应。在其他terminal都正常。
期待的结果
在vscode terminal中也能使用xmake f --menu功能
错误信息
相关环境
请提供编译和运行环境信息,下面是一些必须填写的基础信息,便于我们针对性排查问题:
其他信息