3 * Copyright (c) 2007-2010 SlimDX Group
5 * Permission is hereby granted, free of charge, to any person obtaining a copy
6 * of this software and associated documentation files (the "Software"), to deal
7 * in the Software without restriction, including without limitation the rights
8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 * copies of the Software, and to permit persons to whom the Software is
10 * furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice shall be included in
13 * all copies or substantial portions of the Software.
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23 #include "Keystroke.h"
25 #include "XInputException.h"
31 Keystroke::Keystroke( const XINPUT_KEYSTROKE &native )
33 m_VirtualKey = static_cast<GamepadKeyCode>( native.VirtualKey );
34 m_Flags = static_cast<KeystrokeFlags>( native.Flags );
35 m_UserIndex = static_cast<XInput::UserIndex>( native.UserIndex );
36 m_HidCode = native.HidCode;
39 GamepadKeyCode Keystroke::VirtualKey::get()
44 KeystrokeFlags Keystroke::Flags::get()
49 XInput::UserIndex Keystroke::UserIndex::get()
54 int Keystroke::HidCode::get()
59 bool Keystroke::operator == ( Keystroke left, Keystroke right )
61 return Keystroke::Equals( left, right );
64 bool Keystroke::operator != ( Keystroke left, Keystroke right )
66 return !Keystroke::Equals( left, right );
69 int Keystroke::GetHashCode()
71 return m_VirtualKey.GetHashCode() + m_Flags.GetHashCode() + m_UserIndex.GetHashCode()
72 + m_HidCode.GetHashCode();
75 bool Keystroke::Equals( Object^ value )
77 if( value == nullptr )
80 if( value->GetType() != GetType() )
83 return Equals( safe_cast<Keystroke>( value ) );
86 bool Keystroke::Equals( Keystroke value )
88 return ( m_VirtualKey == value.m_VirtualKey && m_Flags == value.m_Flags && m_UserIndex == value.m_UserIndex
89 && m_HidCode == value.m_HidCode );
92 bool Keystroke::Equals( Keystroke% value1, Keystroke% value2 )
94 return ( value1.m_VirtualKey == value2.m_VirtualKey && value1.m_Flags == value2.m_Flags && value1.m_UserIndex == value2.m_UserIndex
95 && value1.m_HidCode == value2.m_HidCode );