Carnac.Logic/ShortcutProvider.cs
(开头部分) 4KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Diagnostics;
using System.IO;
using System.Linq;
using Carnac.Logic.Models;
using YamlDotNet.RepresentationModel;
namespace Carnac.Logic
{
[Export(typeof(IShortcutProvider))]
public class ShortcutProvider : IShortcutProvider
{
readonly List<ShortcutCollection> shortcuts = new List<ShortcutCollection>();
public ShortcutProvider()
{
string folder = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + @"\Keymaps\";
string filter = "*.yml";
if (!Directory.Exists(folder)) return;
string[] files = Directory.GetFiles(folder, filter);
var yaml = new YamlStream();
foreach (string file in files)
{
yaml.Load(File.OpenText(file));
var root = yaml.Documents[0].RootNode;
var collection = root as YamlMappingNode;
if (collection != null)
{
string group = GetValueByKey(collection, "group");
string process = GetValueByKey(collection, "process");
var shortcutCollection = new ShortcutCollection { Process = process, Group = group };
var groupShortcuts = collection.Children.First(n => n.Key.ToString() == "shortcuts").Value as YamlSequenceNode;
foreach (YamlMappingNode entry in groupShortcuts.Children)
{
string name = GetValueByKey(entry, "name");
if (entry.Children.First(n => n.Key.ToString() == "keys").Value as YamlSequenceNode == null)
continue;
var keys = entry.Children.First(n => n.Key.ToString() == "keys").Value as YamlSequenceNode;
foreach (var keyCombo in keys.Children)
{
var definitions = new List<KeyPressDefinition>();
string[] combos = keyCombo.ToString().Split(',');
foreach (string combo in combos)
{
var definition = GetKeyPressDefintion(combo);
if (definition != null)
definitions.Add(definition);
}
if (definitions.Count > 0)
shortcutCollection.Add(new KeyShortcut(name, definitions.ToArray()));
后面还有 45 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。