gpt4 book ai didi

input - 如何在 julia 的每次击键时读取键盘输入?

转载 作者:行者123 更新时间:2023-12-04 16:42:31 32 4
gpt4 key购买 nike

我试过,c::Char = read(stdin, Char);
它仅在按下 Enter 键后才从键盘读取字符,而不是在每次按下/松开时。

请指导我在按下或松开按键时阅读键盘输入!

更新 1:

function quit()
print("Press q to quit!");
opt = getc1();
while true
if opt = 'q'
break;
else
continue;
end
end
end

抛出错误:
TypeError:non-boolean(Int64) used in boolean context.

请帮我!

最佳答案

这不是那么简单。

你可以试试这个更底层的解决方案:

function getc1()
ret = ccall(:jl_tty_set_mode, Int32, (Ptr{Cvoid},Int32), stdin.handle, true)
ret == 0 || error("unable to switch to raw mode")
c = read(stdin, Char)
ccall(:jl_tty_set_mode, Int32, (Ptr{Cvoid},Int32), stdin.handle, false)
c
end

或者这个更高的级别:
function getc2()
t = REPL.TerminalMenus.terminal
REPL.TerminalMenus.enableRawMode(t) || error("unable to switch to raw mode")
c = Char(REPL.TerminalMenus.readKey(t.in_stream))
REPL.TerminalMenus.disableRawMode(t)
c
end

取决于您的需要(或使用此处的想法编写另一个实现)。关键的挑战是“普通 key ”,如 ASCII 总是被正确处理。但是,解决方案在处理字符的方式上有所不同,例如 'ą' (某些字符是更大的 UNICODE)或 UP_ARROW(当你在键盘上按下箭头时) - 你在这里必须试验并决定你想要什么(或者也许足以让你阅读 UInt8 一个一个的值并手动重建你想要的?)。

编辑

问题出在您的 quit功能。这是它应该如何定义:
function quit()
print("Press q to quit!");
while true
opt = getc1();
if opt == 'q'
break
else
continue
end
end
end

关于input - 如何在 julia 的每次击键时读取键盘输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56888266/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com