OpenTTD Source  12.0-beta2
hotkeys.cpp File Reference
#include "stdafx.h"
#include "openttd.h"
#include "hotkeys.h"
#include "ini_type.h"
#include "string_func.h"
#include "window_gui.h"
#include "safeguards.h"

Go to the source code of this file.

Data Structures

struct  KeycodeNames
 String representation of a keycode. More...
 

Functions

static uint16 ParseCode (const char *start, const char *end)
 Try to parse a single part of a keycode. More...
 
static uint16 ParseKeycode (const char *start, const char *end)
 Parse a string representation of a keycode. More...
 
static void ParseHotkeys (Hotkey *hotkey, const char *value)
 Parse a string to the keycodes it represents. More...
 
static const char * KeycodeToString (uint16 keycode)
 Convert a hotkey to it's string representation so it can be written to the config file. More...
 
const char * SaveKeycodes (const Hotkey *hotkey)
 Convert all keycodes attached to a hotkey to a single string. More...
 
static void SaveLoadHotkeys (bool save)
 
void LoadHotkeysFromConfig ()
 Load the hotkeys from the config file.
 
void SaveHotkeysToConfig ()
 Save the hotkeys to the config file.
 
void HandleGlobalHotkeys (WChar key, uint16 keycode)
 

Variables

std::string _hotkeys_file
 
static std::vector< HotkeyList * > * _hotkey_lists = nullptr
 List of all HotkeyLists. More...
 
static const KeycodeNames _keycode_to_name []
 Array of non-standard keycodes that can be used in the hotkeys config file.
 

Detailed Description

Implementation of hotkey related functions

Definition in file hotkeys.cpp.

Function Documentation

◆ KeycodeToString()

static const char* KeycodeToString ( uint16  keycode)
static

Convert a hotkey to it's string representation so it can be written to the config file.

Separate parts of the keycode (like "CTRL" and "F1" are split by a '+'.

Parameters
keycodeThe keycode to convert to a string.
Returns
A string representation of this keycode.
Note
The return value is a static buffer, stredup the result before calling this function again.

Definition at line 172 of file hotkeys.cpp.

References lastof, strecat(), and WKC_GLOBAL_HOTKEY.

Referenced by SaveKeycodes().

◆ ParseCode()

static uint16 ParseCode ( const char *  start,
const char *  end 
)
static

Try to parse a single part of a keycode.

Parameters
startStart of the string to parse.
endEnd of the string to parse.
Returns
A keycode if a match is found or 0.

Definition at line 97 of file hotkeys.cpp.

References _keycode_to_name, KeycodeNames::keycode, and lengthof.

Referenced by ParseKeycode().

◆ ParseHotkeys()

static void ParseHotkeys ( Hotkey hotkey,
const char *  value 
)
static

Parse a string to the keycodes it represents.

Parameters
hotkeyThe hotkey object to add the keycodes to
valueThe string to parse

Definition at line 151 of file hotkeys.cpp.

References Hotkey::AddKeycode(), and ParseKeycode().

Referenced by HotkeyList::Load().

◆ ParseKeycode()

static uint16 ParseKeycode ( const char *  start,
const char *  end 
)
static

Parse a string representation of a keycode.

Parameters
startStart of the input.
endEnd of the input.
Returns
A valid keycode or 0.

Definition at line 121 of file hotkeys.cpp.

References ParseCode().

Referenced by ParseHotkeys().

◆ SaveKeycodes()

const char* SaveKeycodes ( const Hotkey hotkey)

Convert all keycodes attached to a hotkey to a single string.

If multiple keycodes are attached to the hotkey they are split by a comma.

Parameters
hotkeyThe keycodes of this hotkey need to be converted to a string.
Returns
A string representation of all keycodes.
Note
The return value is a static buffer, stredup the result before calling this function again.

Definition at line 226 of file hotkeys.cpp.

References KeycodeToString(), lastof, and strecat().

Referenced by HotkeyList::Save().

Variable Documentation

◆ _hotkey_lists

std::vector<HotkeyList*>* _hotkey_lists = nullptr
static

List of all HotkeyLists.

This is a pointer to ensure initialisation order with the various static HotkeyList instances.

Definition at line 25 of file hotkeys.cpp.