This part of the document was written by Hans <lermen@fgan.de>.
Используйте параметр конфигурации keystroke и параметр командной строки -I для DOSEMU (>=dosemu-0.66.2) следующим способом:
dos -D-a -I 'keystroke "dir > C:\\garbage\rexitemu\r"'
Текст в двойных кавычках будет "напечатан" эмулятором, как если бы вы набрали его на клавиатуре. Преимущество этой техники в том, что его понимают все приложения DOS, даже интерактивные. Обратная косая '\' интерпретируется как в языке C и обозначает управляющие символы. Вот их текущий список:
\r Carriage return == <ENTER>
\n LF
\t tab
\b backspace
\f formfeed
\a bell
\v vertical tab
\^x <Ctrl>x, где X - одно из обычных C,M,L,[ ...
(т.е.: \^[ == <Ctrl>[ == ESC )
\Ax <Alt>x, к примеру \Ad означает <Alt>d
\Fn; Функциональная клавиша Fn. Учтите, что завершающий ';' необходим.
(т.е.: \F10; == F10 )
\Pn; Устанавливает виртуальный typematic rate, т.е. скорость
автонабора. Задается в тиках таймера unix, которые нужно
выждать между двумя нажатиями. Например, значение 7 приводит
к скорости 100/7=14 cps.
\pn; Выждать n тиков перед вводом следующего символа.
Это полезно, когда DOS-приложение при запуске сбрасывает
клавиатурный буфер. Если не подождать, все нажатия будут
потеряны.
При работе в X, возможность имитации нажатий может быть использована для прямого запуска DOS-приложений одним нажатием мыши, если вы грамотно напишете свой .fvwmrc
2^M <== выбираем пункт 2 загрузочного меню
dir > C:\garbage^M <== выполняем 'dir', результат в 'garbage'
exitemu^M <== выходим из dosemu
(^M обозначает CR)
# dos -D-a 2>/dev/null <FILE >/dev/tty20
Это не переключит вас на /dev/tty20, а тихо выполнит dosemu, и вы
снова получите приглашение '#' после возврата из dosemu.Я проверял на dosemu-0.64.4/Linux-2.0.28, все прекрасно работало.
Если ваше dos-приложение делает только обычный текстовый вывод, можно попробовать даже так:
# dos -D-a 2>/dev/null <FILE >FILE.out
FILE.out будет содержать вывод dos-приложения, но с примесью ESC-последовательностей Slang.
Можно развить эту технику, написав скрипт, который будет генерировать для вас 'FILE' и запускать dos программу из командной строки.
Когда будете используете приведенное выше для запуска dosemu из crontab, убедитесь, что процессу установлены правильные переменные окружения (особенно TERM и/или TERMCAP).