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."
48 lines
1.6 KiB
C++
48 lines
1.6 KiB
C++
/*
|
|
* Copyright (C) 2002-2020 The DOSBox Team
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#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
|
|
|
|
};
|
|
|
|
typedef void (MAPPER_Handler)(bool pressed);
|
|
void MAPPER_AddHandler(MAPPER_Handler * handler,MapKeys key,Bitu mods,char const * const eventname,char const * const buttonname);
|
|
void MAPPER_BindKeys();
|
|
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
|
|
|
|
#endif
|