From 98eada369aa50115e677a1b337662fee9f0ca011 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Bruyère Date: Sat, 24 Nov 2018 10:48:34 +0100 Subject: debug log viewer, X backends --- src/Input/KeyboardState.cs | 316 --------------------------------------------- 1 file changed, 316 deletions(-) delete mode 100644 src/Input/KeyboardState.cs (limited to 'src/Input/KeyboardState.cs') diff --git a/src/Input/KeyboardState.cs b/src/Input/KeyboardState.cs deleted file mode 100644 index e3784bc3..00000000 --- a/src/Input/KeyboardState.cs +++ /dev/null @@ -1,316 +0,0 @@ - #region License - // - // The Open Toolkit Library License - // - // Copyright (c) 2006 - 2009 the Open Toolkit library. - // - // Permission is hereby granted, free of charge, to any person obtaining a copy - // of this software and associated documentation files (the "Software"), to deal - // in the Software without restriction, including without limitation the rights to - // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - // the Software, and to permit persons to whom the Software is furnished to do - // so, subject to the following conditions: - // - // The above copyright notice and this permission notice shall be included in all - // copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - // OTHER DEALINGS IN THE SOFTWARE. - // - #endregion - -using System; -using System.Collections.Specialized; -using System.Text; - -namespace Crow -{ - /// - /// Encapsulates the state of a Keyboard device. - /// - public struct KeyboardState : IEquatable - { - #region Fields - - // Allocate enough ints to store all keyboard keys - const int IntSize = sizeof(int); - const int NumInts = ((int)Key.LastKey + IntSize - 1) / IntSize; - // The following line triggers bogus CS0214 in gmcs 2.0.1, sigh... - unsafe fixed int Keys[NumInts]; - bool is_connected; - - #endregion - - #region Public Members - - /// - /// Gets a indicating whether the specified - /// is pressed. - /// - /// The to check. - /// True if key is pressed; false otherwise. - public bool this[Key key] - { - get { return IsKeyDown(key); } - internal set { SetKeyState(key, value); } - } - - /// - /// Gets a indicating whether the specified - /// is pressed. - /// - /// The scancode to check. - /// True if code is pressed; false otherwise. - public bool this[short code] - { - get { return IsKeyDown((Key)code); } - } - - /// - /// Gets a indicating whether this key is down. - /// - /// The to check. - public bool IsKeyDown(Key key) - { - return ReadBit((int)key); - } - - /// - /// Gets a indicating whether this scan code is down. - /// - /// The scan code to check. - public bool IsKeyDown(short code) - { - return code >= 0 && code < (short)Key.LastKey && ReadBit(code); - } - - /// - /// Gets a indicating whether this key is up. - /// - /// The to check. - public bool IsKeyUp(Key key) - { - return !ReadBit((int)key); - } - - /// - /// Gets a indicating whether this scan code is down. - /// - /// The scan code to check. - public bool IsKeyUp(short code) - { - return !IsKeyDown(code); - } - - /// - /// Gets a indicating whether this keyboard - /// is connected. - /// - public bool IsConnected - { - get { return is_connected; } - internal set { is_connected = value; } - } - -#if false - // Disabled until the correct cross-platform API can be determined. - public bool IsLedOn(KeyboardLeds led) - { - return false; - } - - public bool IsLedOff(KeyboardLeds led) - { - return false; - } -#endif - - /// - /// Checks whether two instances are equal. - /// - /// - /// A instance. - /// - /// - /// A instance. - /// - /// - /// True if both left is equal to right; false otherwise. - /// - public static bool operator ==(KeyboardState left, KeyboardState right) - { - return left.Equals(right); - } - - /// - /// Checks whether two instances are not equal. - /// - /// - /// A instance. - /// - /// - /// A instance. - /// - /// - /// True if both left is not equal to right; false otherwise. - /// - public static bool operator !=(KeyboardState left, KeyboardState right) - { - return !left.Equals(right); - } - - /// - /// Compares to an object instance for equality. - /// - /// - /// The to compare to. - /// - /// - /// True if this instance is equal to obj; false otherwise. - /// - public override bool Equals(object obj) - { - if (obj is KeyboardState) - { - return this == (KeyboardState)obj; - } - else - { - return false; - } - } - - /// - /// Generates a hashcode for the current instance. - /// - /// - /// A represting the hashcode for this instance. - /// - public override int GetHashCode() - { - unsafe - { - fixed (int* k = Keys) - { - int hashcode = 0; - for (int i = 0; i < NumInts; i++) - hashcode ^= (k + i)->GetHashCode(); - return hashcode; - } - } - } - - #endregion - - #region Internal Members - - public void SetKeyState(Key key, bool down) - { - if (down) - { - EnableBit((int)key); - } - else - { - DisableBit((int)key); - } - } - - internal bool ReadBit(int offset) - { - ValidateOffset(offset); - - int int_offset = offset / 32; - int bit_offset = offset % 32; - unsafe - { - fixed (int* k = Keys) { return (*(k + int_offset) & (1 << bit_offset)) != 0u; } - } - } - - internal void EnableBit(int offset) - { - //ValidateOffset(offset); - - int int_offset = offset / 32; - int bit_offset = offset % 32; - unsafe - { - fixed (int* k = Keys) { *(k + int_offset) |= 1 << bit_offset; } - } - } - - internal void DisableBit(int offset) - { - ValidateOffset(offset); - - int int_offset = offset / 32; - int bit_offset = offset % 32; - unsafe - { - fixed (int* k = Keys) { *(k + int_offset) &= ~(1 << bit_offset); } - } - } - - internal void MergeBits(KeyboardState other) - { - unsafe - { - int* k2 = other.Keys; - fixed (int* k1 = Keys) - { - for (int i = 0; i < NumInts; i++) - *(k1 + i) |= *(k2 + i); - } - } - IsConnected |= other.IsConnected; - } - - internal void SetIsConnected(bool value) - { - IsConnected = value; - } - - #endregion - - #region Private Members - - static void ValidateOffset(int offset) - { - if (offset < 0 || offset >= NumInts * IntSize) - throw new ArgumentOutOfRangeException(); - } - - #endregion - - #region IEquatable Members - - /// - /// Compares two KeyboardState instances. - /// - /// The instance to compare two. - /// True, if both instances are equal; false otherwise. - public bool Equals(KeyboardState other) - { - bool equal = true; - unsafe - { - int* k2 = other.Keys; - fixed (int* k1 = Keys) - { - for (int i = 0; equal && i < NumInts; i++) - equal &= *(k1 + i) == *(k2 + i); - } - } - return equal; - } - - #endregion - } -} -- cgit v1.3.1-4-g156e