Ejemplo n.º 1
0
        public Keyboard(Keyboard_Type type, params KeyCode[] key_config)
        {
            constructor_defaults(type);
            if (setup_configuration(key_config) == false)
            {
            }

            //checks to make sure it's not off keyboard, THROW EXCEPTION
            if (configuration_location_check(num_rows, row_size) == false)
            {
                throw new Exception("ERROR: Invalid key configuration given in constructor");
            }
        }
Ejemplo n.º 2
0
//================================== Private Functionality Functions ==============================================//

        //Under the hood stuff really. There's no need for you to be here unless I REALLY screwed up.

        private void constructor_defaults(Keyboard_Type type)
        {
            foreach (KeyCode key in (KeyCode[])Enum.GetValues(typeof(KeyCode)))
            {
                if (key_hash.ContainsKey(key) == false)
                {
                    key_hash.Add(key, new Vector2(-1, -1));
                }
            }
            clear_key_locations();
            keyboard_switch(type);

            // assigning key_has values using key_map values
            for (int i = 0; i < num_rows; i++)
            {
                for (int j = 0; j < row_size[i]; j++)
                {
                    key_hash[key_map[i][j]] = new Vector2(i, j);
                }
            }
        }
Ejemplo n.º 3
0
        public bool keyboard_switch(Keyboard_Type type)
        {
            // set all keys to a location outside of the map
            //TODO: make this more efficient by going through the keyboard and setting those to -1, -1

            int rows = 0;

            int[] size;

            switch (type)
            {
            case Keyboard_Type.QWERTY:
                /*
                 * QWERTYUIOP[]
                 * ASDFGHJKL;'
                 * ZXCVBNM,./
                 */
                rows = 3;
                size = new int[] { 10, 11, 12 };
                break;

            case Keyboard_Type.Dvorak_US:
                /*
                 * ,,.PYFGCRL/=
                 * AOEUIDHTNS-
                 * ;QJKXBMWVZ
                 */
                rows = 3;
                size = new int[] { 10, 11, 12 };
                break;

            case Keyboard_Type.AZERTY:
                //french keyboard

                /*
                 * There are technically 12 keys on the second row, but not sure if Unity supports it
                 *
                 * AZERTYUIOP^$
                 * QSDFGHJKLM
                 * <WXCVBN,;:!
                 */
                rows = 3;
                size = new int[] { 11, 10, 12 };
                break;

            default:
                throw new Exception("Invalid Keyboard Type. No changes were applied");
                return(false);

                break;
            }

            //Makes sure the keyboard contains the bound of the location (there is a key that is not off board)
            // not the case firt time setting this up

            if (base_key_set)
            {
                if (configuration_location_check(rows, size) == false)
                {
                    throw new Exception("ERROR: Can not convert to new keyboard configuration");
                    return(false);
                }
            }
            else
            {
                base_key_set = true;
            }

            num_rows = rows;
            row_size = size;

            key_map = new KeyCode[num_rows][];
            for (int i = 0; i < num_rows; i++)
            {
                key_map[i] = new KeyCode[row_size[i]];
            }

            current_keyboard_type = type;

            switch (type)
            {
            case Keyboard_Type.QWERTY:
                // map the keys in the key map.
                // US keyboard: 3 rows, 10, 11, 12

                /*
                 * QWERTYUIOP[]
                 * ASDFGHJKL;'
                 * ZXCVBNM,./
                 */
                key_map[2][0]  = KeyCode.Q;
                key_map[2][1]  = KeyCode.W;
                key_map[2][2]  = KeyCode.E;
                key_map[2][3]  = KeyCode.R;
                key_map[2][4]  = KeyCode.T;
                key_map[2][5]  = KeyCode.Y;
                key_map[2][6]  = KeyCode.U;
                key_map[2][7]  = KeyCode.I;
                key_map[2][8]  = KeyCode.O;
                key_map[2][9]  = KeyCode.P;
                key_map[2][10] = KeyCode.LeftBracket;
                key_map[2][11] = KeyCode.RightBracket;

                key_map[1][0]  = KeyCode.A;
                key_map[1][1]  = KeyCode.S;
                key_map[1][2]  = KeyCode.D;
                key_map[1][3]  = KeyCode.F;
                key_map[1][4]  = KeyCode.G;
                key_map[1][5]  = KeyCode.H;
                key_map[1][6]  = KeyCode.J;
                key_map[1][7]  = KeyCode.K;
                key_map[1][8]  = KeyCode.L;
                key_map[1][9]  = KeyCode.Semicolon;
                key_map[1][10] = KeyCode.Quote;

                key_map[0][0] = KeyCode.Z;
                key_map[0][1] = KeyCode.X;
                key_map[0][2] = KeyCode.C;
                key_map[0][3] = KeyCode.V;
                key_map[0][4] = KeyCode.B;
                key_map[0][5] = KeyCode.N;
                key_map[0][6] = KeyCode.M;
                key_map[0][7] = KeyCode.Comma;
                key_map[0][8] = KeyCode.Period;
                key_map[0][9] = KeyCode.Slash;

                break;

            case Keyboard_Type.Dvorak_US:
                /*
                 * ',.PYFGCRL/=
                 * AOEUIDHTNS-
                 * ;QJKXBMWVZ
                 */
                key_map[2][0]  = KeyCode.Quote;
                key_map[2][1]  = KeyCode.Comma;
                key_map[2][2]  = KeyCode.Period;
                key_map[2][3]  = KeyCode.P;
                key_map[2][4]  = KeyCode.Y;
                key_map[2][5]  = KeyCode.F;
                key_map[2][6]  = KeyCode.G;
                key_map[2][7]  = KeyCode.C;
                key_map[2][8]  = KeyCode.R;
                key_map[2][9]  = KeyCode.L;
                key_map[2][10] = KeyCode.Slash;
                key_map[2][11] = KeyCode.Equals;

                key_map[1][0]  = KeyCode.A;
                key_map[1][1]  = KeyCode.S;
                key_map[1][2]  = KeyCode.E;
                key_map[1][3]  = KeyCode.U;
                key_map[1][4]  = KeyCode.I;
                key_map[1][5]  = KeyCode.D;
                key_map[1][6]  = KeyCode.H;
                key_map[1][7]  = KeyCode.T;
                key_map[1][8]  = KeyCode.N;
                key_map[1][9]  = KeyCode.S;
                key_map[1][10] = KeyCode.Minus;

                key_map[0][0] = KeyCode.Semicolon;
                key_map[0][1] = KeyCode.Q;
                key_map[0][2] = KeyCode.J;
                key_map[0][3] = KeyCode.K;
                key_map[0][4] = KeyCode.X;
                key_map[0][5] = KeyCode.B;
                key_map[0][6] = KeyCode.M;
                key_map[0][7] = KeyCode.W;
                key_map[0][8] = KeyCode.V;
                key_map[0][9] = KeyCode.Z;

                break;

            case Keyboard_Type.AZERTY:
                //french keyboard

                /*
                 * AZERTYUIOP^$
                 * QSDFGHJKLM
                 * <WXCVBN,;:!
                 */

                key_map[2][0]  = KeyCode.A;
                key_map[2][1]  = KeyCode.Z;
                key_map[2][2]  = KeyCode.E;
                key_map[2][3]  = KeyCode.R;
                key_map[2][4]  = KeyCode.T;
                key_map[2][5]  = KeyCode.Y;
                key_map[2][6]  = KeyCode.U;
                key_map[2][7]  = KeyCode.I;
                key_map[2][8]  = KeyCode.O;
                key_map[2][9]  = KeyCode.P;
                key_map[2][10] = KeyCode.Caret;
                key_map[2][11] = KeyCode.Dollar;

                key_map[1][0] = KeyCode.Q;
                key_map[1][1] = KeyCode.S;
                key_map[1][2] = KeyCode.D;
                key_map[1][3] = KeyCode.F;
                key_map[1][4] = KeyCode.G;
                key_map[1][5] = KeyCode.H;
                key_map[1][6] = KeyCode.J;
                key_map[1][7] = KeyCode.K;
                key_map[1][8] = KeyCode.L;
                key_map[1][9] = KeyCode.M;

                key_map[0][0]  = KeyCode.Less;
                key_map[0][1]  = KeyCode.W;
                key_map[0][2]  = KeyCode.X;
                key_map[0][3]  = KeyCode.C;
                key_map[0][4]  = KeyCode.V;
                key_map[0][5]  = KeyCode.B;
                key_map[0][6]  = KeyCode.N;
                key_map[0][7]  = KeyCode.Comma;
                key_map[0][8]  = KeyCode.Semicolon;
                key_map[0][9]  = KeyCode.Colon;
                key_map[0][10] = KeyCode.Equals;
                break;
            }
            return(true);
        }