Add AUTOTYPE to DOSBox's programs
AUTOTYPE performs scripted keyboard entry into the running DOS program. It can be used to reliably skip intros, answer Q&A style questions that some games ask on startup, or conduct a simple demo. It allows for delaying input by any number of fractional seconds, as well defining the pacing between keystrokes. It uses the comma character "," to insert additional delays similar to modern phone numbers. It uses key_* names as defined by the mapper to avoid using SDL scancodes[1], which are unstable across platforms. This approach also allows the triggering of custom key bindings the use has defined. [1] https://wiki.libsdl.org/SDL_GetScancodeName "Warning: The returned name is by design not stable across platforms, e.g. the name for SDL_SCANCODE_LGUI is "Left GUI" under Linux but "Left Windows" under Microsoft Windows, and some scancodes like SDL_SCANCODE_NONUSBACKSLASH don't have any name at all. There are even scancodes that share names, e.g. SDL_SCANCODE_RETURN and SDL_SCANCODE_RETURN2 (both called "Return"). This function is therefore unsuitable for creating a stable cross-platform two-way mapping between strings and scancodes."
This commit is contained in:
parent
ee7107470e
commit
239396fec8
11 changed files with 377 additions and 29 deletions
|
@ -19,6 +19,11 @@
|
|||
#ifndef DOSBOX_MAPPER_H
|
||||
#define DOSBOX_MAPPER_H
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include "setup.h"
|
||||
#include "types.h"
|
||||
|
||||
enum MapKeys {
|
||||
MK_f1,MK_f2,MK_f3,MK_f4,MK_f5,MK_f6,MK_f7,MK_f8,MK_f9,MK_f10,MK_f11,MK_f12,
|
||||
MK_return,MK_kpminus,MK_scrolllock,MK_printscreen,MK_pause,MK_home
|
||||
|
@ -32,7 +37,10 @@ void MAPPER_StartUp(Section * sec);
|
|||
void MAPPER_Run(bool pressed);
|
||||
void MAPPER_DisplayUI();
|
||||
void MAPPER_LosingFocus(void);
|
||||
|
||||
std::vector<std::string> MAPPER_GetEventNames(const std::string &prefix);
|
||||
void MAPPER_AutoType(std::vector<std::string> &sequence,
|
||||
const uint32_t wait_ms,
|
||||
const uint32_t pacing_ms);
|
||||
|
||||
#define MMOD1 0x1
|
||||
#define MMOD2 0x2
|
||||
|
|
|
@ -35,6 +35,9 @@
|
|||
#define strncasecmp(a, b, n) _strnicmp(a, b, n)
|
||||
#endif
|
||||
|
||||
// Convert a string to double, returning true or false depending on susccess
|
||||
bool str_to_double(const std::string& input, double &value);
|
||||
|
||||
// Returns the filename with the prior path stripped.
|
||||
// Works with both \ and / directory delimeters.
|
||||
std::string get_basename(const std::string& filename);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue