This is a virtual input device that represents the keyboard and mouse pair that is associated with a particular window. More...
#include "graphicsWindowInputDevice.h"
Public Member Functions | |
void | button_down (ButtonHandle button, double time=ClockObject::get_global_clock() ->get_frame_time()) |
Records that the indicated button has been depressed. More... | |
void | button_resume_down (ButtonHandle button, double time=ClockObject::get_global_clock() ->get_frame_time()) |
Records that the indicated button was depressed earlier, and we only just detected the event after the fact. More... | |
void | button_up (ButtonHandle button, double time=ClockObject::get_global_clock() ->get_frame_time()) |
Records that the indicated button has been released. More... | |
void | candidate (const std::wstring &candidate_string, size_t highlight_start, size_t highlight_end, size_t cursor_pos) |
Records that the indicated candidate string has been highlighted. More... | |
void | focus_lost (double time=ClockObject::get_global_clock() ->get_frame_time()) |
This should be called when the window focus is lost, so that we may miss upcoming button events (especially "up" events) for the next period of time. More... | |
virtual TypeHandle | force_init_type () |
PointerData | get_pointer () const |
Returns the PointerData associated with the input device's pointer. More... | |
virtual TypeHandle | get_type () const |
void | keystroke (int keycode, double time=ClockObject::get_global_clock() ->get_frame_time()) |
Records that the indicated keystroke has been generated. More... | |
void | pointer_moved (double x, double y, double time=ClockObject::get_global_clock() ->get_frame_time()) |
To be called by a particular kind of GraphicsWindow to indicate that the pointer has moved by the given relative amount. More... | |
void | raw_button_down (ButtonHandle button, double time=ClockObject::get_global_clock() ->get_frame_time()) |
Records that the indicated button has been depressed. More... | |
void | raw_button_up (ButtonHandle button, double time=ClockObject::get_global_clock() ->get_frame_time()) |
Records that the indicated button has been released. More... | |
void | remove_pointer (int id) |
To be called by a particular kind of GraphicsWindow to indicate that the pointer no longer exists. More... | |
void | set_pointer_in_window (double x, double y, double time=ClockObject::get_global_clock() ->get_frame_time()) |
To be called by a particular kind of GraphicsWindow to indicate that the pointer is within the window, at the given pixel coordinates. More... | |
void | set_pointer_out_of_window (double time=ClockObject::get_global_clock() ->get_frame_time()) |
To be called by a particular kind of GraphicsWindow to indicate that the pointer is no longer within the window. More... | |
void | update_pointer (PointerData data, double time=ClockObject::get_global_clock() ->get_frame_time()) |
To be called by a particular kind of GraphicsWindow to indicate that the pointer data has changed. More... | |
Public Member Functions inherited from InputDevice | |
InputDevice (const InputDevice ©)=delete | |
void | disable_pointer_events () |
Disables the generation of mouse-movement events. More... | |
void | enable_pointer_events () |
Enables the generation of mouse-movement events. More... | |
AxisState | find_axis (Axis axis) const |
Returns the first AnalogAxis found with the given axis, or throw an assert if the axis was not found in the list. More... | |
ButtonState | find_button (ButtonHandle handle) const |
Returns the first ButtonState found with the given axis, or throw an assert if the button handle was not found in the list. More... | |
AxisState | get_axis (size_t index) const |
double | get_axis_value (size_t index) const |
Returns the current position of indicated analog axis (identified by its index number), or 0.0 if the axis is unknown. More... | |
BatteryData | get_battery () const |
ButtonState | get_button (size_t index) const |
ButtonHandle | get_button_map (size_t index) const |
Returns the ButtonHandle that was previously associated with the given index number by a call to map_button(), or ButtonHandle::none() if no button was associated. More... | |
DeviceClass | get_device_class () const |
std::string | get_manufacturer () const |
std::string | get_name () const |
size_t | get_num_axes () const |
size_t | get_num_buttons () const |
unsigned short | get_product_id () const |
std::string | get_serial_number () const |
TrackerData | get_tracker () const |
unsigned short | get_vendor_id () const |
bool | has_battery () const |
bool | has_button_event () const |
Returns true if this device has a pending button event (a mouse button or keyboard button down/up), false otherwise. More... | |
bool | has_feature (Feature feature) const |
Returns true if the device supports the indicated feature. More... | |
bool | has_keyboard () const |
Returns true if the device has a physical keyboard designed for text entry. More... | |
bool | has_pointer () const |
Returns true if this is a pointing device. More... | |
bool | has_pointer_event () const |
Returns true if this device has a pending pointer event (a mouse movement), or false otherwise. More... | |
bool | has_tracker () const |
bool | has_vibration () const |
Returns true if the device has vibration motors that can be controlled by calling set_vibration(). More... | |
bool | is_axis_known (size_t index) const |
Returns true if the state of the indicated analog axis is known, or false if we have never heard anything about this particular axis. More... | |
bool | is_button_known (size_t index) const |
Returns true if the state of the indicated button is known, or false if we have never heard anything about this particular button. More... | |
bool | is_button_pressed (size_t index) const |
Returns true if the indicated button (identified by its index number) is currently known to be down, or false if it is up or unknown. More... | |
bool | is_connected () const |
void | map_axis (size_t index, Axis axis) |
Associates the indicated Axis with the axis of the indicated index number. More... | |
void | map_button (size_t index, ButtonHandle handle) |
Associates the indicated ButtonHandle with the button of the indicated index number. More... | |
InputDevice & | operator= (const InputDevice ©)=delete |
virtual void | output (std::ostream &out) const |
Writes a one-line string describing the device. More... | |
void | output_buttons (std::ostream &out) const |
Writes a one-line string of all of the current button states. More... | |
void | poll () |
Polls the input device for new activity, to ensure it contains the latest events. More... | |
PT (ButtonEventList) get_button_events() | |
PT (PointerEventList) get_pointer_events() | |
void | set_connected (bool connected) |
Called to indicate that the device has been disconnected or connected from its host. More... | |
void | set_vibration (double strong, double weak) |
Sets the strength of the vibration effect, if supported. More... | |
void | write_axes (std::ostream &out, int indent_level) const |
Writes a multi-line description of the current analog axis states. More... | |
void | write_buttons (std::ostream &out, int indent_level) const |
Writes a multi-line description of the current button states. More... | |
Public Member Functions inherited from TypedReferenceCount | |
TypedReferenceCount (const TypedReferenceCount ©) | |
void | operator= (const TypedReferenceCount ©) |
Public Member Functions inherited from TypedObject | |
TypedObject (const TypedObject ©)=default | |
TypedObject * | as_typed_object () |
Returns the object, upcast (if necessary) to a TypedObject pointer. More... | |
const TypedObject * | as_typed_object () const |
Returns the object, upcast (if necessary) to a TypedObject pointer. More... | |
int | get_best_parent_from_Set (const std::set< int > &) const |
int | get_type_index () const |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More... | |
bool | is_exact_type (TypeHandle handle) const |
Returns true if the current object is the indicated type exactly. More... | |
bool | is_of_type (TypeHandle handle) const |
Returns true if the current object is or derives from the indicated type. More... | |
TypedObject & | operator= (const TypedObject ©)=default |
Public Member Functions inherited from ReferenceCount | |
int | get_ref_count () const |
WeakReferenceList * | get_weak_list () const |
Returns the WeakReferenceList associated with this ReferenceCount object. More... | |
bool | has_weak_list () const |
Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise. More... | |
void | local_object () |
This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack. More... | |
void | ref () const |
Explicitly increments the reference count. More... | |
bool | ref_if_nonzero () const |
Atomically increases the reference count of this object if it is not zero. More... | |
bool | test_ref_count_integrity () const |
Does some easy checks to make sure that the reference count isn't completely bogus. More... | |
bool | test_ref_count_nonzero () const |
Does some easy checks to make sure that the reference count isn't zero, or completely bogus. More... | |
virtual bool | unref () const |
Explicitly decrements the reference count. More... | |
WeakReferenceList * | weak_ref () |
Adds the indicated PointerToVoid as a weak reference to this object. More... | |
void | weak_unref () |
Removes the indicated PointerToVoid as a weak reference to this object. More... | |
Static Public Member Functions | |
static TypeHandle | get_class_type () |
static void | init_type () |
static | PT (GraphicsWindowInputDevice) pointer_only(GraphicsWindow *host |
static | PT (GraphicsWindowInputDevice) keyboard_only(GraphicsWindow *host |
static | PT (GraphicsWindowInputDevice) pointer_and_keyboard(GraphicsWindow *host |
Static Public Member Functions inherited from InputDevice | |
static std::string | format_axis (Axis axis) |
Returns a string describing the given axis enumerant. More... | |
static std::string | format_device_class (DeviceClass dc) |
Returns a string describing the given device class enumerant. More... | |
static TypeHandle | get_class_type () |
static void | init_type () |
Static Public Member Functions inherited from TypedReferenceCount | |
static TypeHandle | get_class_type () |
static void | init_type () |
Static Public Member Functions inherited from TypedObject | |
static TypeHandle | get_class_type () |
static void | init_type () |
This function is declared non-inline to work around a compiler bug in g++ 2.96. More... | |
Static Public Member Functions inherited from ReferenceCount | |
static TypeHandle | get_class_type () |
static void | init_type () |
Public Attributes | |
static const std::string & | name |
Public Attributes inherited from InputDevice | |
Axes | _axes |
BatteryData | _battery_data |
Buttons | _buttons |
PointerData | _pointer_data |
TrackerData | _tracker_data |
get_axis | |
Returns the axis state that is set at the given index, or throw an assert if the index was not found in the list. More... | |
get_battery | |
Returns a rough indication of the battery level, ranging from 0 (completely empty battery) to the indicated max_level value. More... | |
get_button | |
Returns the ButtonState that is set at the given index, or throw an assert if the index was not found in the list. More... | |
get_device_class | |
Returns an identification of the general type of device. More... | |
get_manufacturer | |
Returns a string containing the manufacturer of the device, if this information is known. More... | |
get_name | |
Returns a human-readable name for the device. More... | |
get_num_axes | |
Returns the number of analog axes known to the InputDevice. More... | |
get_num_buttons | |
Returns the number of buttons known to the device. More... | |
get_product_id | |
Returns a string containing the USB product ID of the device, if this information is known. More... | |
get_serial_number | |
Returns a string containing the serial number of the device, if this information is known. More... | |
get_tracker | |
Returns the TrackerData associated with the input device's tracker. More... | |
get_vendor_id | |
Returns a string containing the USB vendor ID of the device, if this information is known. More... | |
has_battery | |
Returns true if the device may be able to provide information about its battery life. More... | |
has_tracker | |
Returns true if the device features a tracker that can track position and/or orientation in 3D space. More... | |
is_connected | |
Returns true if the device is still connected and able to receive data, false otherwise. More... | |
Public Attributes inherited from TypedObject | |
get_type | |
Public Attributes inherited from ReferenceCount | |
get_ref_count | |
Returns the current reference count. More... | |
Additional Inherited Members | |
Public Types inherited from InputDevice | |
typedef pvector< AxisState > | Axes |
enum | Axis { none, x, y, z, yaw, pitch, roll, left_x, left_y, left_trigger, right_x, right_y, right_trigger, throttle, rudder, wheel, accelerator, brake } |
typedef pvector< ButtonState > | Buttons |
enum | DeviceClass { unknown, virtual_device, keyboard, mouse, touch, gamepad, flight_stick, steering_wheel, dance_pad, hmd, spatial_mouse } |
enum | Feature { pointer, keyboard, tracker, vibration, battery } |
enum | State { S_unknown, S_up, S_down } |
This is a virtual input device that represents the keyboard and mouse pair that is associated with a particular window.
It collects mouse and keyboard events from the windowing system while the window is in focus.
Definition at line 28 of file graphicsWindowInputDevice.h.
void GraphicsWindowInputDevice::button_down | ( | ButtonHandle | button, |
double | time = ClockObject::get_global_clock()->get_frame_time() |
||
) |
Records that the indicated button has been depressed.
Definition at line 75 of file graphicsWindowInputDevice.cxx.
void GraphicsWindowInputDevice::button_resume_down | ( | ButtonHandle | button, |
double | time = ClockObject::get_global_clock()->get_frame_time() |
||
) |
Records that the indicated button was depressed earlier, and we only just detected the event after the fact.
This is mainly useful for tracking the state of modifier keys.
Definition at line 87 of file graphicsWindowInputDevice.cxx.
void GraphicsWindowInputDevice::button_up | ( | ButtonHandle | button, |
double | time = ClockObject::get_global_clock()->get_frame_time() |
||
) |
Records that the indicated button has been released.
Definition at line 97 of file graphicsWindowInputDevice.cxx.
void GraphicsWindowInputDevice::candidate | ( | const std::wstring & | candidate_string, |
size_t | highlight_start, | ||
size_t | highlight_end, | ||
size_t | cursor_pos | ||
) |
Records that the indicated candidate string has been highlighted.
This is used to implement IME support for typing in international languages, especially Chinese/Japanese/Korean.
Definition at line 118 of file graphicsWindowInputDevice.cxx.
void GraphicsWindowInputDevice::focus_lost | ( | double | time = ClockObject::get_global_clock()->get_frame_time() | ) |
This should be called when the window focus is lost, so that we may miss upcoming button events (especially "up" events) for the next period of time.
It generates keyboard and mouse "up" events for those buttons that we previously sent unpaired "down" events, so that the Panda application will believe all buttons are now released.
Definition at line 134 of file graphicsWindowInputDevice.cxx.
|
inline |
Returns the PointerData associated with the input device's pointer.
This only makes sense if has_pointer() also returns true.
Definition at line 19 of file graphicsWindowInputDevice.I.
Referenced by x11GraphicsWindow::move_pointer().
void GraphicsWindowInputDevice::keystroke | ( | int | keycode, |
double | time = ClockObject::get_global_clock()->get_frame_time() |
||
) |
Records that the indicated keystroke has been generated.
Definition at line 107 of file graphicsWindowInputDevice.cxx.
|
inline |
To be called by a particular kind of GraphicsWindow to indicate that the pointer has moved by the given relative amount.
Definition at line 43 of file graphicsWindowInputDevice.I.
void GraphicsWindowInputDevice::raw_button_down | ( | ButtonHandle | button, |
double | time = ClockObject::get_global_clock()->get_frame_time() |
||
) |
Records that the indicated button has been depressed.
Definition at line 147 of file graphicsWindowInputDevice.cxx.
void GraphicsWindowInputDevice::raw_button_up | ( | ButtonHandle | button, |
double | time = ClockObject::get_global_clock()->get_frame_time() |
||
) |
Records that the indicated button has been released.
Definition at line 156 of file graphicsWindowInputDevice.cxx.
|
inline |
To be called by a particular kind of GraphicsWindow to indicate that the pointer no longer exists.
Definition at line 53 of file graphicsWindowInputDevice.I.
void GraphicsWindowInputDevice::set_pointer_in_window | ( | double | x, |
double | y, | ||
double | time = ClockObject::get_global_clock()->get_frame_time() |
||
) |
To be called by a particular kind of GraphicsWindow to indicate that the pointer is within the window, at the given pixel coordinates.
Definition at line 166 of file graphicsWindowInputDevice.cxx.
Referenced by WinGraphicsWindow::move_pointer().
void GraphicsWindowInputDevice::set_pointer_out_of_window | ( | double | time = ClockObject::get_global_clock()->get_frame_time() | ) |
To be called by a particular kind of GraphicsWindow to indicate that the pointer is no longer within the window.
Definition at line 182 of file graphicsWindowInputDevice.cxx.
|
inline |
To be called by a particular kind of GraphicsWindow to indicate that the pointer data has changed.
Definition at line 33 of file graphicsWindowInputDevice.I.