1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
//============================================================
//
// assignmenthelper.h - input assignment setup helper
//
//============================================================
#ifndef MAME_OSD_INPUT_ASSIGNMENTHELPER_H
#define MAME_OSD_INPUT_ASSIGNMENTHELPER_H
#pragma once
#include "interface/inputcode.h"
#include "interface/inputdev.h"
#include <initializer_list>
namespace osd {
class joystick_assignment_helper
{
protected:
static constexpr input_code make_code(
input_item_class itemclass,
input_item_modifier modifier,
input_item_id item)
{
return input_code(DEVICE_CLASS_JOYSTICK, 0, itemclass, modifier, item);
}
static bool add_assignment(
input_device::assignment_vector &assignments,
ioport_type fieldtype,
input_seq_type seqtype,
input_item_class itemclass,
input_item_modifier modifier,
std::initializer_list<input_item_id> items);
static bool add_button_assignment(
input_device::assignment_vector &assignments,
ioport_type field_type,
std::initializer_list<input_item_id> items);
static bool add_button_pair_assignment(
input_device::assignment_vector &assignments,
ioport_type field1,
ioport_type field2,
input_item_id button1,
input_item_id button2);
static bool add_axis_inc_dec_assignment(
input_device::assignment_vector &assignments,
ioport_type field_type,
input_item_id button_dec,
input_item_id button_inc);
static bool add_axis_pair_assignment(
input_device::assignment_vector &assignments,
ioport_type field1,
ioport_type field2,
input_item_id axis);
static bool consume_button_pair(
input_device::assignment_vector &assignments,
ioport_type field1,
ioport_type field2,
input_item_id &button1,
input_item_id &button2);
static bool consume_trigger_pair(
input_device::assignment_vector &assignments,
ioport_type field1,
ioport_type field2,
input_item_id &axis1,
input_item_id &axis2);
static bool consume_axis_pair(
input_device::assignment_vector &assignments,
ioport_type field1,
ioport_type field2,
input_item_id &axis);
static void add_directional_assignments(
input_device::assignment_vector &assignments,
input_item_id xaxis,
input_item_id yaxis,
input_item_id leftswitch,
input_item_id rightswitch,
input_item_id upswitch,
input_item_id downswitch);
static void add_twin_stick_assignments(
input_device::assignment_vector &assignments,
input_item_id leftx,
input_item_id lefty,
input_item_id rightx,
input_item_id righty,
input_item_id leftleft,
input_item_id leftright,
input_item_id leftup,
input_item_id leftdown,
input_item_id rightleft,
input_item_id rightright,
input_item_id rightup,
input_item_id rightdown);
static void choose_primary_stick(
input_item_id (&stickaxes)[2][2],
input_item_id leftx,
input_item_id lefty,
input_item_id rightx,
input_item_id righty);
};
} // namespace osd
#endif // MAME_OSD_INPUT_ASSIGNMENTHELPER_H
|