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]"); } }
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); } }