babalae / better-genshin-impact

📦BetterGI · 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 - UI Automation Testing Tools For Genshin Impact
https://bgi.huiyadan.com/
GNU General Public License v3.0
3.54k stars 235 forks source link

[suggestion] 自定义键位设置 #454

Open shixiawuheng opened 2 weeks ago

shixiawuheng commented 2 weeks ago

这个值是 xml 其中 是代表键位设置

0 0 1 1 0 false 1 97 0 0 0 true 这是单个键位的 xml 具体某些键位的 elementIdentifierId 还需要后续补充才能得到
shixiawuheng commented 2 weeks ago

`

0
        <actionId>0</actionId>
        <elementType>1</elementType>
        <elementIdentifierId>1</elementIdentifierId>
        <axisRange>0</axisRange>
        <invert>false</invert>
        <axisContribution>1</axisContribution>
        <keyboardKeyCode>97</keyboardKeyCode>
        <modifierKey1>0</modifierKey1>
        <modifierKey2>0</modifierKey2>
        <modifierKey3>0</modifierKey3>
        <enabled>true</enabled>
    </ActionElementMap>`
shixiawuheng commented 2 weeks ago

但是我看了一下 在代码中很多按键都是直接使用的 User32.VK.VK_F 引入方式 如果修改键位改动将会非常大

shixiawuheng commented 2 weeks ago

我对不会C#语法 但是我会尝试完善这一块代码 提交pr 但是可能会遥遥无期

shixiawuheng commented 2 weeks ago

如果有人给我写个样板最好了 因为 我都不知道应该怎么去实现 像这样的配置

shixiawuheng commented 2 weeks ago

我发现在最新的代码中 // 自定义拾取按键 private string _pickKeyName = "F";

private User32.VK _pickVk = User32.VK.VK_F; 实现了这个 是已经完成了自定义按键的实现吗?

shixiawuheng commented 2 weeks ago

但是我好像没发现自定义按键的代码

shixiawuheng commented 2 weeks ago

`

0
        <actionId>17</actionId>
        <elementType>1</elementType>
        <elementIdentifierId>6</elementIdentifierId>
        <axisRange>0</axisRange>
        <invert>false</invert>
        <axisContribution>0</axisContribution>
        <keyboardKeyCode>102</keyboardKeyCode>
        <modifierKey1>0</modifierKey1>
        <modifierKey2>0</modifierKey2>
        <modifierKey3>0</modifierKey3>
        <enabled>true</enabled>
    </ActionElementMap>` 这是我设置元素战技为 F 时的值 `        <ActionElementMap>
        <actionCategoryId>0</actionCategoryId>
        <actionId>17</actionId>
        <elementType>1</elementType>
        <elementIdentifierId>11</elementIdentifierId>
        <axisRange>0</axisRange>
        <invert>false</invert>
        <axisContribution>0</axisContribution>
        <keyboardKeyCode>107</keyboardKeyCode>
        <modifierKey1>0</modifierKey1>
        <modifierKey2>0</modifierKey2>
        <modifierKey3>0</modifierKey3>
        <enabled>true</enabled>
    </ActionElementMap> ` 这是设置为K时的值
shixiawuheng commented 2 weeks ago

他其中好像还有一个算法

emako commented 2 weeks ago

https://github.com/babalae/better-genshin-impact/tree/main/BetterGenshinImpact/Genshin/Settings 这里有除手柄设置外的完整读取

huiyadanli commented 2 weeks ago

这个已经实现了,只是没对接而已。(当时没直接支持自定义按键的原因是,UI控件不支持选择+手动输入功能)

你直接修改配置文件 + 把对应名称的拾取按键的图像放入对应文件夹就能直接集成。