예제 #1
0
        public static void Execute(CommandExecutionContext *context)
        {
            byte *rawbuf = stackalloc byte [EntryModule.MaxKeyMapNameLength];

            if (context->parameters->Compare("--list") == 0)
            {
                ListKeyMaps();
            }
            else if (context->parameters->Compare(0, "--set ", 0, 6) == 0 &&
                     context->parameters->Length > 6)
            {
                PString8 *buf = PString8.Wrap(rawbuf,
                                              EntryModule.MaxKeyMapNameLength);
                buf->Clear();
                TextMode.Write(context->parameters->Length);
                TextMode.WriteLine();
                buf->Concat(context->parameters, 6, context->parameters->Length - 6);

                if (KeyMap.GetBuiltinKeyMap(buf) == null)
                {
                    TextMode.SaveAttributes();
                    TextMode.Foreground = TextColor.Red;
                    TextMode.Write("Unknown keymap `");
                    TextMode.Write(buf);
                    TextMode.Write("'");
                    TextMode.RestoreAttributes();
                }
                else
                {
                    TextMode.Write("Setting key map to `");
                    TextMode.Write(buf);
                    TextMode.Write("'");
                    KeyMap.SetKeyMap(buf);
                }
            }
            else if (context->parameters->Length == 0)
            {
                TextMode.Write("Current key map: ");
                TextMode.WriteLine(KeyMap.GetCurrentKeyMapName());
            }
            else
            {
                TextMode.WriteLine("Usage: keymap [--list|--set NAME]");
            }
        }
예제 #2
0
        public static void ListKeyMaps()
        {
            int   count  = KeyMap.GetBuiltinKeyMapsCount();
            byte *str    = stackalloc byte [EntryModule.MaxKeyMapNameLength];
            int   error  = 0;
            byte *keymap = null;
            int   len    = 0;

            TextMode.Write(count);
            TextMode.WriteLine(" available keymaps:");

            for (int x = 0; x < count; ++x)
            {
                keymap = (byte *)KeyMap.GetBuiltinKeyMap(x);
                len    = BinaryTool.ReadPrefixedString(keymap, str,
                                                       EntryModule.MaxKeyMapNameLength, &error);

                TextMode.Write(" ");
                TextMode.WriteLine(str);
            }
        }