[319] | 1 | // Copyright (C) 2012-2014 ChaosForge Ltd
|
---|
[67] | 2 | // http://chaosforge.org/
|
---|
| 3 | //
|
---|
| 4 | // This file is part of NV Libraries.
|
---|
| 5 | // For conditions of distribution and use, see copyright notice in nv.hh
|
---|
| 6 |
|
---|
[319] | 7 | #include "nv/core/io_event.hh"
|
---|
[67] | 8 |
|
---|
| 9 | using namespace nv;
|
---|
| 10 |
|
---|
[121] | 11 | const char* nv::get_key_name( key_code key )
|
---|
[67] | 12 | {
|
---|
| 13 | switch ( key )
|
---|
| 14 | {
|
---|
| 15 | # define NV_KEY( id, val ) case id : return #id;
|
---|
| 16 | # include <nv/detail/key_list.inc>
|
---|
| 17 | # undef NV_KEY
|
---|
[121] | 18 | NV_RETURN_COVERED_DEFAULT( "KEY_UNKNOWN" );
|
---|
[67] | 19 | };
|
---|
| 20 | }
|
---|
| 21 |
|
---|
[121] | 22 | const char* nv::get_mouse_name( mouse_code button )
|
---|
[67] | 23 | {
|
---|
| 24 | switch ( button )
|
---|
| 25 | {
|
---|
| 26 | # define NV_MOUSE( id, val ) case id : return #id;
|
---|
| 27 | # include <nv/detail/mouse_list.inc>
|
---|
| 28 | # undef NV_MOUSE
|
---|
[121] | 29 | NV_RETURN_COVERED_DEFAULT( "MOUSE_UNKNOWN" );
|
---|
[67] | 30 | };
|
---|
| 31 | }
|
---|
| 32 |
|
---|
[121] | 33 | const char* nv::get_io_event_name( io_event_code event )
|
---|
[67] | 34 | {
|
---|
| 35 | switch ( event )
|
---|
| 36 | {
|
---|
| 37 | # define NV_IO_EVENT( id ) case id : return #id;
|
---|
| 38 | # include <nv/detail/io_event_list.inc>
|
---|
| 39 | # undef NV_IO_EVENT
|
---|
[121] | 40 | NV_RETURN_COVERED_DEFAULT( "EV_UNKNOWN" );
|
---|
[67] | 41 | };
|
---|
| 42 | }
|
---|
| 43 |
|
---|
[319] | 44 | /************************************************************************
|
---|
[121] | 45 | void nv::register_io_types( type_database* db )
|
---|
[67] | 46 | {
|
---|
| 47 | type_enum key_enums[] = {
|
---|
| 48 | # define NV_KEY( id, val ) type_enum( #id, id ),
|
---|
| 49 | # include <nv/detail/key_list.inc>
|
---|
| 50 | # undef NV_KEY
|
---|
| 51 | };
|
---|
[78] | 52 | db->create_type<key_code>("key_code").enums( key_enums );
|
---|
[67] | 53 |
|
---|
| 54 | type_enum mouse_enums[] = {
|
---|
| 55 | # define NV_MOUSE( id, val ) type_enum( #id, id ),
|
---|
| 56 | # include <nv/detail/mouse_list.inc>
|
---|
| 57 | # undef NV_MOUSE
|
---|
| 58 | };
|
---|
[78] | 59 | db->create_type<mouse_code>("mouse_code").enums( mouse_enums );
|
---|
[67] | 60 |
|
---|
| 61 | type_enum io_event_enums[] = {
|
---|
| 62 | # define NV_IO_EVENT( id ) type_enum( #id, id ),
|
---|
| 63 | # include <nv/detail/io_event_list.inc>
|
---|
| 64 | # undef NV_IO_EVENT
|
---|
| 65 | };
|
---|
[78] | 66 | db->create_type<io_event_code>("event_code").enums( io_event_enums );
|
---|
[67] | 67 |
|
---|
| 68 | type_field key_fields[] = {
|
---|
| 69 | type_field( "ascii", &key_event::ascii ),
|
---|
| 70 | type_field( "code", &key_event::code ),
|
---|
| 71 | type_field( "shift", &key_event::shift ),
|
---|
| 72 | type_field( "control", &key_event::control ),
|
---|
| 73 | type_field( "alt", &key_event::alt ),
|
---|
| 74 | type_field( "pressed", &key_event::pressed ),
|
---|
| 75 | };
|
---|
[78] | 76 | db->create_type<key_event>("key_event").fields( key_fields );
|
---|
[67] | 77 |
|
---|
| 78 | type_field mouse_button_fields[] = {
|
---|
| 79 | type_field( "x", &mouse_button_event::x ),
|
---|
| 80 | type_field( "y", &mouse_button_event::y ),
|
---|
| 81 | type_field( "button", &mouse_button_event::button ),
|
---|
| 82 | type_field( "pressed", &mouse_button_event::pressed ),
|
---|
| 83 | type_field( "code", &mouse_button_event::code ),
|
---|
| 84 | };
|
---|
[78] | 85 | db->create_type<mouse_button_event>("mouse_button_event").fields( mouse_button_fields );
|
---|
[67] | 86 |
|
---|
| 87 | type_field mouse_move_fields[] = {
|
---|
| 88 | type_field( "x", &mouse_move_event::x ),
|
---|
| 89 | type_field( "y", &mouse_move_event::y ),
|
---|
| 90 | type_field( "rx", &mouse_move_event::rx ),
|
---|
| 91 | type_field( "ry", &mouse_move_event::ry ),
|
---|
| 92 | type_field( "pressed", &mouse_move_event::pressed ),
|
---|
| 93 | type_field( "code", &mouse_move_event::code ),
|
---|
| 94 | };
|
---|
[78] | 95 | db->create_type<mouse_move_event>("mouse_move_event").fields( mouse_move_fields );
|
---|
[67] | 96 |
|
---|
[304] | 97 | type_field mouse_wheel_fields[] = {
|
---|
| 98 | type_field( "x", &mouse_wheel_event::x ),
|
---|
| 99 | type_field( "y", &mouse_wheel_event::y ),
|
---|
| 100 | };
|
---|
| 101 | db->create_type<mouse_wheel_event>("mouse_wheel_event").fields( mouse_wheel_fields );
|
---|
| 102 |
|
---|
[184] | 103 | type_field joy_button_fields[] = {
|
---|
| 104 | type_field( "id", &joy_button_event::id ),
|
---|
| 105 | type_field( "button", &joy_button_event::button ),
|
---|
| 106 | type_field( "pressed", &joy_button_event::pressed ),
|
---|
| 107 | };
|
---|
| 108 | db->create_type<joy_button_event>("joy_button_event").fields( joy_button_fields );
|
---|
| 109 |
|
---|
| 110 | type_field joy_axis_fields[] = {
|
---|
| 111 | type_field( "id", &joy_axis_event::id ),
|
---|
| 112 | type_field( "axis", &joy_axis_event::axis ),
|
---|
| 113 | type_field( "value", &joy_axis_event::value ),
|
---|
| 114 | };
|
---|
| 115 | db->create_type<joy_axis_event>("joy_axis_event").fields( joy_axis_fields );
|
---|
| 116 |
|
---|
| 117 | type_field joy_hat_fields[] = {
|
---|
| 118 | type_field( "id", &joy_hat_event::id ),
|
---|
| 119 | type_field( "hat", &joy_hat_event::hat ),
|
---|
| 120 | type_field( "value", &joy_hat_event::value ),
|
---|
| 121 | };
|
---|
| 122 | db->create_type<joy_hat_event>("joy_hat_event").fields( joy_hat_fields );
|
---|
| 123 |
|
---|
| 124 | type_field joy_ball_fields[] = {
|
---|
| 125 | type_field( "id", &joy_ball_event::id ),
|
---|
| 126 | type_field( "ball", &joy_ball_event::ball ),
|
---|
| 127 | type_field( "rx", &joy_ball_event::rx ),
|
---|
| 128 | type_field( "ry", &joy_ball_event::ry ),
|
---|
| 129 | };
|
---|
| 130 | db->create_type<joy_ball_event>("joy_ball_event").fields( joy_ball_fields );
|
---|
| 131 |
|
---|
[67] | 132 | type_field system_fields[] = {
|
---|
| 133 | type_field( "sys_type", &system_event::sys_type ),
|
---|
| 134 | type_field( "param1", &system_event::param1 ),
|
---|
| 135 | type_field( "param2", &system_event::param2 ),
|
---|
| 136 | };
|
---|
[78] | 137 | db->create_type<system_event>("system_event").fields( system_fields );
|
---|
[67] | 138 | }
|
---|
[319] | 139 | ************************************************************************/
|
---|