Events 在不停止执行的情况下读取用户输入

Events 在不停止执行的情况下读取用户输入,events,event-handling,lua,minecraft,Events,Event Handling,Lua,Minecraft,我试图在Lua应用程序的控制台界面中读取用户输入。 然而,我不想如标题所示停止程序执行。在用户键入时,使用read()会干扰正在进行的事件的正常处理和界面更新 我能想到的最好的解决方案是维护一个临时变量,我将任何用户输入应用到该变量,它不是一个函数键。然而,我的事件处理程序返回扫描码,我知道除了为每个键维护一个表之外,没有办法将它们映射到ASCII码,这是我真正想要避免的 有什么想法吗 编辑 举例说明我的意思: function read_input() local input = read(

我试图在Lua应用程序的控制台界面中读取用户输入。 然而,我不想如标题所示停止程序执行。在用户键入时,使用read()会干扰正在进行的事件的正常处理和界面更新

我能想到的最好的解决方案是维护一个临时变量,我将任何用户输入应用到该变量,它不是一个函数键。然而,我的事件处理程序返回扫描码,我知道除了为每个键维护一个表之外,没有办法将它们映射到ASCII码,这是我真正想要避免的

有什么想法吗

编辑 举例说明我的意思:

function read_input()
 local input = read()
 do_something_with(input)
end
while true do
 e,param1,param2,param3 = os.pullEvent()
 if (e=='key' and param1=='201') then
  read_input()
 elseif (e=='something_else') then
  do_something_else()
 end
end

正如您所看到的,用户可以在某个时候进入一个需要用户输入的函数。在进行此输入时,我不能让程序的任何其他(基于事件的)功能受到此影响。

您需要从os.PullerEvent()连续读取键

我不确定,但我认为按下键的字符在PullerEvent的一个参数中,我可能弄错了


此外,如果你想每隔一秒钟左右做一件事,启动一个计时器,它也会触发PullerVent

你从哪里得到这个
os.pullEvent
功能的?它的电脑工艺。minecraft modTry使用
协同程序
,或者如果minecraft提供类似的基于计时器的事件处理程序。在获取用户输入时,您到底想做什么?
local input
while true do
  e,param1,param2,param3 = os.pullEvent()
  if (e=='key') then
    -- do some fancy stuff for checking which key has pressed and append it to input
    -- additionally if it's enter do something other fancy
  else
    -- blah blah
  end
end