xfangfang / wiliwili

第三方B站客户端,目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上
https://xfangfang.github.io/wiliwili
GNU General Public License v3.0
3.18k stars 146 forks source link

请问可以添加新功能:自定义键位功能吗? #119

Open liufuyou opened 1 year ago

liufuyou commented 1 year ago

请问,大佬能开发一个新功能自定义键位吗? 我习惯用方向键来快进和后退。目前的R键,L键用的很不习惯。 但我清楚不同人,也有不同的需求。所以我认为可不可以做一个新功能:(自定义键位的作用) 自定义功能键位,自己可以设置,就比如说我自己设置方向键左右,是快进跟后退。 我找了很久都没有找到这个功能。一开始还把可以自定义字体和按键图标,看成了可以自定义键位功能

软件非常棒,谢谢大佬开发这么好的项目。在好多相关项目都停更的情况下,但这一点用了很久还是不习惯。 image

xfangfang commented 1 year ago

@liufuyou 不是大佬啦,我的回答是不可以,不过很愿意接受这样的PR

这个软件最开始并不是设计为PC上的官方客户端替代品,操作方式主要是面向触屏和手柄。

为什么我不能增加自定义键位:

  1. 最主要的原因是这个软件最开始并不是为键盘设计的,现在只是把键盘按钮映射为手柄,需要写一些代码才能广泛的支持各类键盘按键,因为我比较懒,所以不太想做,但是欢迎提交PR。
  2. 同时也需要对应的图标字体设计,目前这几个提示的键位图标是我随便画的,也是简单的修改了手柄按键的字体,如果要支持键盘操作,可能需要在这一方面花点时间。
  3. 其次是有冲突,目前方向键是用来切换焦点使用的,占用了方向键就需要修改方向键的键位,不过这个问题就不大了。

如果不愿意花时间搞这样的pr,可以拉一下代码,简单调整一下键盘快捷键的映射。(其实这也算是一种自定义了,编译起来也不费事,不想本地编译也可以在github 用 github action编译)

wiliwili/library/borealis/library/lib/platforms/glfw/glfw_input.cpp

按照你的需求,可以这么改

// glfw_input.cpp line 53
static const size_t GLFW_GAMEPAD_TO_KEYBOARD[GLFW_GAMEPAD_BUTTON_MAX] = {
    GLFW_KEY_ENTER, // GLFW_GAMEPAD_BUTTON_A
    GLFW_KEY_BACKSPACE, // GLFW_GAMEPAD_BUTTON_B
    GLFW_KEY_X, // GLFW_GAMEPAD_BUTTON_X
    GLFW_KEY_Y, // GLFW_GAMEPAD_BUTTON_Y
-    GLFW_KEY_L, // GLFW_GAMEPAD_BUTTON_LEFT_BUMPER
-    GLFW_KEY_R, // GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER
+    GLFW_KEY_LEFT, // GLFW_GAMEPAD_BUTTON_LEFT_BUMPER
+    GLFW_KEY_RIGHT, // GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER
    GLFW_KEY_F1, // GLFW_GAMEPAD_BUTTON_BACK
    GLFW_KEY_F2, // GLFW_GAMEPAD_BUTTON_START
    GLFW_GAMEPAD_BUTTON_NONE, // GLFW_GAMEPAD_BUTTON_GUIDE
    GLFW_KEY_Q, // GLFW_GAMEPAD_BUTTON_LEFT_THUMB
    GLFW_KEY_P, // GLFW_GAMEPAD_BUTTON_RIGHT_THUMB
-    GLFW_KEY_UP, // GLFW_GAMEPAD_BUTTON_DPAD_UP
-    GLFW_KEY_RIGHT, // GLFW_GAMEPAD_BUTTON_DPAD_RIGHT
-    GLFW_KEY_DOWN, // GLFW_GAMEPAD_BUTTON_DPAD_DOWN
-    GLFW_KEY_LEFT, // GLFW_GAMEPAD_BUTTON_DPAD_LEFT
+    GLFW_KEY_W, // GLFW_GAMEPAD_BUTTON_DPAD_UP
+    GLFW_KEY_D, // GLFW_GAMEPAD_BUTTON_DPAD_RIGHT
+    GLFW_KEY_S, // GLFW_GAMEPAD_BUTTON_DPAD_DOWN
+    GLFW_KEY_A, // GLFW_GAMEPAD_BUTTON_DPAD_LEFT
};
liufuyou commented 1 year ago

@liufuyou 不是大佬啦,我的回答是不能,不过很想接受这样的PR

这个软件最开始并不是设计为PC上的官方客户端替代品,操作方式主要是触摸屏和手柄。

为什么我不能增加自定义关键字位置:

  1. 最主要的原因是这个软件最开始并不是为按键设计的,现在只是把按键盘按按键投影为手柄,需要写一些代码才能泛泛的支持按住各类按键盘按键,因为我比较懒,所以不太想做,但是欢迎提交公关。
  2. 同时也需要对应的图形字体设计,目前这几个提示的关键字图形是我随即画的,也是简单的修改了手动按键的字体,如果需要支持按键盘操作,可能需要在这个方面花点时间。
  3. 其次是有冲突,当前方向键是用来切换焦点使用的,占了方向键就需要修改方向键的键位,不过这个问题就不大了。

如果不想花时间搞这样的pr,可以拉一下代码,简单调一下键盘快捷键的投影。来也不要事,不想本地编译也可以在github上用github动作编译)

wiliwili/library/borealis/library/lib/platforms/glfw/glfw_input.cpp

按照你的需要,可以这样改

// glfw_input.cpp line 53
static const size_t GLFW_GAMEPAD_TO_KEYBOARD[GLFW_GAMEPAD_BUTTON_MAX] = {
    GLFW_KEY_ENTER, // GLFW_GAMEPAD_BUTTON_A
    GLFW_KEY_BACKSPACE, // GLFW_GAMEPAD_BUTTON_B
    GLFW_KEY_X, // GLFW_GAMEPAD_BUTTON_X
    GLFW_KEY_Y, // GLFW_GAMEPAD_BUTTON_Y
-    GLFW_KEY_L, // GLFW_GAMEPAD_BUTTON_LEFT_BUMPER
-    GLFW_KEY_R, // GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER
+    GLFW_KEY_LEFT, // GLFW_GAMEPAD_BUTTON_LEFT_BUMPER
+    GLFW_KEY_RIGHT, // GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER
    GLFW_KEY_F1, // GLFW_GAMEPAD_BUTTON_BACK
    GLFW_KEY_F2, // GLFW_GAMEPAD_BUTTON_START
    GLFW_GAMEPAD_BUTTON_NONE, // GLFW_GAMEPAD_BUTTON_GUIDE
    GLFW_KEY_Q, // GLFW_GAMEPAD_BUTTON_LEFT_THUMB
    GLFW_KEY_P, // GLFW_GAMEPAD_BUTTON_RIGHT_THUMB
-    GLFW_KEY_UP, // GLFW_GAMEPAD_BUTTON_DPAD_UP
-    GLFW_KEY_RIGHT, // GLFW_GAMEPAD_BUTTON_DPAD_RIGHT
-    GLFW_KEY_DOWN, // GLFW_GAMEPAD_BUTTON_DPAD_DOWN
-    GLFW_KEY_LEFT, // GLFW_GAMEPAD_BUTTON_DPAD_LEFT
+    GLFW_KEY_W, // GLFW_GAMEPAD_BUTTON_DPAD_UP
+    GLFW_KEY_D, // GLFW_GAMEPAD_BUTTON_DPAD_RIGHT
+    GLFW_KEY_S, // GLFW_GAMEPAD_BUTTON_DPAD_DOWN
+    GLFW_KEY_A, // GLFW_GAMEPAD_BUTTON_DPAD_LEFT
};

感谢回复,早上就看到了回复的邮件。之前一直没有空闲,现在才能 我修改一下,Thanks♪(・ω・)ノ