Перейти к содержимому
  • 0
SergOmarov

Вставка в ввод

Вопрос

Рекомендуемые сообщения

term.read измени, напиши свой, или отредактируй.

Изменено пользователем NEO

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

term.read измени, напиши свой, или отредактируй.

попробую

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Выполняется код: local r=term.read()

как программно вставить в ввод строку?

    computer.pushSignal("key_down",kbd.address,0,200) --имитируем нажатие стрелки вверх
    r=term.read({"bla-bla-bla"})  -- вызываем read с прописанной историей
Изменено пользователем Zer0Galaxy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так я же рабочий стол для очков делаю...

Нео - твоя идея норм, щас реализую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

тогда не понятно какую строку в какой ввод нужно вставить

 

тяжело помочь человеку, когда он сам, видимо, толком не знает, что хочет, или объяснить не может)))) 

 

П.С. Серг, кинешь нам потом сюда в этот топик свой read: "Нео - твоя идея норм, щас реализую" .  Хоть посмотрим, что ты  именно хотел и что это должно было быть (если это конечно был не просто вопрос ради вопроса) :) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

computer.pushSignal("clipboard", text) сделает insert с буфером text

Изменено пользователем Asummonster

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вообще так, но не пашет, потому, что term.read не использует io.read :) переделываю :D

local io_input=io.input
io.input=function(file)
if(file)then
return io_input(file)
else
local eventObject={event.pull('chat_message')}
local users=Set({computer.users()})
if(users[eventObject[3]])then
local stringS=eventObject[4]
if(stringS:sub(1,2)=="--")then
if(stringS:sub(1,3)=="--/")then
stringS=string.sub(stringS,4,#stringS)
shell.execute(stringS)
else
return string.sub(stringS,3,#stringS)

end

else
return require("process").info().data.io_input

end

end
end

end

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

...

...
local users=Set({computer.users()})
...

Что за функция Set? И что оно в конце концов делает?

Изменено пользователем Zer0Galaxy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это как if(a in b){}

а содержится в b, для этой поддержки)


 

 

(boot/03_io.lua)

Это, вроде, не то, но гляну. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Просто надо делать это через thread, "потому что когда ты создаёшь ивент clipboard функция term.read ещё не запущена"@Fingercomp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Параллельно вызывать ивент клавиши и функцию term.read()

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну-ка, объясните мне, зачем вызывать параллельно ивент клавиши и read. Чем последовательный вызов не устраивает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я вот тоже не понял, хотя, возможно, ивент уже заканчивается на момент вызова term.read

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ивент заканчивается при выходе из функции event.pull. А это происходит уже внутри тела term.read

Можно сделать даже так

computer.pushSignal("event1")  --ставим в очередь событие 1
computer.pushSignal("event2")  --ставим в очередь событие 2
computer.pushSignal("event3")  --ставим в очередь событие 3
repeat
  ev=event.pull(1)             -- обрабатываем события
  print(ev)
until not ev

При этом поставленные в очередь события никуда не деваются, а спокойно дожидаются своей очереди.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ивент заканчивается при выходе из функции event.pull. А это происходит уже внутри тела term.read

Можно сделать даже так

computer.pushSignal("event1")  --ставим в очередь событие 1
computer.pushSignal("event2")  --ставим в очередь событие 2
computer.pushSignal("event3")  --ставим в очередь событие 3
repeat
  ev=event.pull(1)             -- обрабатываем события
  print(ev)
until not ev

При этом поставленные в очередь события никуда не деваются, а спокойно дожидаются своей очереди.

Именно!

Без понятия, когда я говорил такую чушь о том, что ивент кончается до вызова term.read, но ладно уж. Вот даже скриншот: http://i.imgur.com/M0YcR0u.png

 

До этого была запущена команда data={event.pull("key_down")}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...