Panda3D
mouseButton.cxx
Go to the documentation of this file.
1 /**
2  * PANDA 3D SOFTWARE
3  * Copyright (c) Carnegie Mellon University. All rights reserved.
4  *
5  * All use of this software is subject to the terms of the revised BSD
6  * license. You should have received a copy of this license along
7  * with this source code in a file named "LICENSE."
8  *
9  * @file mouseButton.cxx
10  * @author drose
11  * @date 2000-03-01
12  */
13 
14 #include "mouseButton.h"
15 #include "buttonRegistry.h"
16 #include "pnotify.h"
17 
18 #include <stdio.h>
19 
20 ButtonHandle MouseButton::_buttons[num_mouse_buttons];
21 ButtonHandle MouseButton::_wheel_up;
22 ButtonHandle MouseButton::_wheel_down;
23 ButtonHandle MouseButton::_wheel_left;
24 ButtonHandle MouseButton::_wheel_right;
25 
26 /**
27  * Returns the ButtonHandle associated with the particular numbered mouse
28  * button (zero-based), if there is one, or ButtonHandle::none() if there is
29  * not.
30  */
32 button(int button_number) {
33  if (button_number >= 0 && button_number < num_mouse_buttons) {
34  return _buttons[button_number];
35  }
36  return ButtonHandle::none();
37 }
38 
39 /**
40  * Returns the ButtonHandle associated with the first mouse button.
41  */
43 one() {
44  return _buttons[0];
45 }
46 
47 /**
48  * Returns the ButtonHandle associated with the second mouse button.
49  */
51 two() {
52  return _buttons[1];
53 }
54 
55 /**
56  * Returns the ButtonHandle associated with the third mouse button.
57  */
59 three() {
60  return _buttons[2];
61 }
62 
63 /**
64  * Returns the ButtonHandle associated with the fourth mouse button.
65  */
67 four() {
68  return _buttons[3];
69 }
70 
71 /**
72  * Returns the ButtonHandle associated with the fifth mouse button.
73  */
75 five() {
76  return _buttons[4];
77 }
78 
79 /**
80  * Returns the ButtonHandle generated when the mouse wheel is rolled one notch
81  * upwards.
82  */
85  return _wheel_up;
86 }
87 
88 /**
89  * Returns the ButtonHandle generated when the mouse wheel is rolled one notch
90  * downwards.
91  */
94  return _wheel_down;
95 }
96 
97 /**
98  * Returns the ButtonHandle generated when the mouse is scrolled to the left.
99  * Usually, you'll only find the horizontal scroll on laptops.
100  */
103  return _wheel_left;
104 }
105 
106 /**
107  * Returns the ButtonHandle generated when the mouse is scrolled to the right.
108  * Usually, you'll only find the horizontal scroll on laptops.
109  */
112  return _wheel_right;
113 }
114 
115 /**
116  * Returns true if the indicated ButtonHandle is a mouse button, false if it
117  * is some other kind of button.
118  */
119 bool MouseButton::
121  for (int i = 0; i < num_mouse_buttons; ++i) {
122  if (button == _buttons[i]) {
123  return true;
124  }
125  }
126 
127  return button == _wheel_up || button == _wheel_down || button == _wheel_left || button == _wheel_right;
128 }
129 
130 /**
131  * This is intended to be called only once, by the static initialization
132  * performed in config_putil.cxx.
133  */
134 void MouseButton::
136  char numstr[20];
137 
138  for (int i = 0; i < num_mouse_buttons; ++i) {
139  sprintf(numstr, "mouse%d", i + 1);
140  nassertv(strlen(numstr) < 20);
141 
142  ButtonRegistry::ptr()->register_button(_buttons[i], numstr);
143  }
144 
145  ButtonRegistry::ptr()->register_button(_wheel_up, "wheel_up");
146  ButtonRegistry::ptr()->register_button(_wheel_down, "wheel_down");
147  ButtonRegistry::ptr()->register_button(_wheel_left, "wheel_left");
148  ButtonRegistry::ptr()->register_button(_wheel_right, "wheel_right");
149 }
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
static ButtonHandle three()
Returns the ButtonHandle associated with the third mouse button.
Definition: mouseButton.cxx:59
static ButtonHandle two()
Returns the ButtonHandle associated with the second mouse button.
Definition: mouseButton.cxx:51
static void init_mouse_buttons()
This is intended to be called only once, by the static initialization performed in config_putil....
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
static ButtonHandle one()
Returns the ButtonHandle associated with the first mouse button.
Definition: mouseButton.cxx:43
static ButtonHandle four()
Returns the ButtonHandle associated with the fourth mouse button.
Definition: mouseButton.cxx:67
A ButtonHandle represents a single button from any device, including keyboard buttons and mouse butto...
Definition: buttonHandle.h:26
static ButtonRegistry * ptr()
Returns the pointer to the global ButtonRegistry object.
static ButtonHandle button(int button_number)
Returns the ButtonHandle associated with the particular numbered mouse button (zero-based),...
Definition: mouseButton.cxx:32
static ButtonHandle wheel_down()
Returns the ButtonHandle generated when the mouse wheel is rolled one notch downwards.
Definition: mouseButton.cxx:93
bool register_button(ButtonHandle &button_handle, const std::string &name, ButtonHandle alias=ButtonHandle::none(), char ascii_equivalent='\0')
Registers a new ButtonHandle with the indicated name, and if specified, the indicated ASCII equivalen...
static ButtonHandle wheel_left()
Returns the ButtonHandle generated when the mouse is scrolled to the left.
static ButtonHandle five()
Returns the ButtonHandle associated with the fifth mouse button.
Definition: mouseButton.cxx:75
static ButtonHandle wheel_right()
Returns the ButtonHandle generated when the mouse is scrolled to the right.
static bool is_mouse_button(ButtonHandle button)
Returns true if the indicated ButtonHandle is a mouse button, false if it is some other kind of butto...
static ButtonHandle wheel_up()
Returns the ButtonHandle generated when the mouse wheel is rolled one notch upwards.
Definition: mouseButton.cxx:84