Example #1
0
        static void buildLayout(LayoutBuilder builder, object creationParam)
        {
            bool enhanced = (bool)creationParam;

            builder.symbols(eKey.D1, "1234567890-=", "!@#$%^&*()_+");
            builder.key(eKey.Backspace, '\b');

            builder.key(eKey.Tab, '\t');

            CultureInfo ci = CultureInfo.InvariantCulture;

            builder.letters(eKey.Q, "qwertyuiop", ci);
            builder.symbols(eKey.LeftBrace, "[]", "{}");
            builder.key(eKey.Enter, '\n');

            builder.letters(eKey.A, "asdfghjkl", ci);
            builder.symbols(eKey.Semicolon, ";'`", @":""~");
            builder.symbol(eKey.Backslash, '\\', '|');

            builder.letters(eKey.Z, "zxcvbnm", ci);
            builder.symbols(eKey.Comma, ",./", "<>?");

            // Enhancement #1: non-breaking space on ctrl+shift+space
            if (enhanced)
            {
                builder.customCtrlShift(eKey.Space, ' ', '\u00A0');
            }
            else
            {
                builder.key(eKey.Space, ' ');
            }

            // Enhancement #2: better dashes on ctrl+alt+(keypad minus) and ctrl+(keypad minus)
            builder.mapKeyPad(enhanced);
        }
Example #2
0
        /// <summary>Make Ctrl+Alt+E print Euro character.</summary>
        public static void bindEuro(this LayoutBuilder builder)
        {
            builder.remove(eKey.E);

            builder.custom
            (
                eKey.E,
                Expression.Condition
                (
                    builder.eControlAltDown,
                    Expression.Constant('€'),
                    Expression.Condition
                    (
                        builder.eControlOrAltIsDown,
                        builder.eNullChar,
                        Expression.Condition
                        (
                            builder.eShiftXorCapsLock,
                            Expression.Constant('E'),
                            Expression.Constant('e')
                        )
                    )
                )
            );
        }
Example #3
0
        /// <summary>Compile the layout</summary>
        protected LayoutBase(Action <LayoutBuilder, object> buildLayout, object creationParam = null)
        {
            LayoutBuilder builder = new LayoutBuilder(this);

            buildLayout(builder, creationParam);
            m_keymap = builder.compile();
        }
Example #4
0
        /// <summary>Map the keypad area, AFAIK they don't often depend on locale.</summary>
        public static void mapKeyPad(this LayoutBuilder builder, bool enhanced)
        {
            builder.key(eKey.Kpasterisk, '*');

            builder.keypad(eKey.Kp7, "789");

            // Various dashes on ctrl+alt+(keypad minus) and ctrl+(keypad minus)
            if (enhanced)
            {
                builder.customCtrlAlt(eKey.Kpminus, '-', '–', '—');
            }
            else
            {
                builder.key(eKey.Kpminus, '-');
            }

            builder.keypad(eKey.Kp4, "456");
            builder.key(eKey.Kpplus, '+');
            builder.keypad(eKey.Kp1, "1230.");
            builder.key(eKey.Kpslash, '/');
        }