From f0fac0c7fb6f7dd9fe81747b3369767c8c9e7d01 Mon Sep 17 00:00:00 2001 From: Morph <39850852+Morph1984@users.noreply.github.com> Date: Wed, 22 Jul 2020 10:39:53 -0400 Subject: [PATCH] =?UTF-8?q?Project=20Mj=C3=B6lnir:=20Part=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: James Rowe Co-authored-by: Its-Rei --- dist/icons/controller/controller.qrc | 25 + dist/icons/controller/dual_joycon.png | Bin 0 -> 36466 bytes dist/icons/controller/dual_joycon_dark.png | Bin 0 -> 36261 bytes .../icons/controller/dual_joycon_midnight.png | Bin 0 -> 34667 bytes dist/icons/controller/handheld.png | Bin 0 -> 14108 bytes dist/icons/controller/handheld_dark.png | Bin 0 -> 13731 bytes dist/icons/controller/handheld_midnight.png | Bin 0 -> 13366 bytes dist/icons/controller/pro_controller.png | Bin 0 -> 36710 bytes dist/icons/controller/pro_controller_dark.png | Bin 0 -> 34897 bytes .../controller/pro_controller_midnight.png | Bin 0 -> 35893 bytes dist/icons/controller/single_joycon_left.png | Bin 0 -> 25565 bytes .../controller/single_joycon_left_dark.png | Bin 0 -> 25682 bytes .../single_joycon_left_midnight.png | Bin 0 -> 24405 bytes .../single_joycon_left_vertical.png | Bin 0 -> 24764 bytes .../single_joycon_left_vertical_dark.png | Bin 0 -> 24938 bytes .../single_joycon_left_vertical_midnight.png | Bin 0 -> 23681 bytes dist/icons/controller/single_joycon_right.png | Bin 0 -> 28320 bytes .../controller/single_joycon_right_dark.png | Bin 0 -> 28157 bytes .../single_joycon_right_midnight.png | Bin 0 -> 27006 bytes .../single_joycon_right_vertical.png | Bin 0 -> 27655 bytes .../single_joycon_right_vertical_dark.png | Bin 0 -> 27729 bytes .../single_joycon_right_vertical_midnight.png | Bin 0 -> 26354 bytes dist/license.md | 3 + .../colorful_dark/icons/16x16/refresh.png | Bin 0 -> 362 bytes .../icons/16x16/view-refresh.png | Bin 0 -> 362 bytes dist/qt_themes/colorful_dark/style.qrc | 1 + .../icons/16x16/refresh.png | Bin 0 -> 362 bytes .../icons/16x16/view-refresh.png | Bin 0 -> 362 bytes .../colorful_midnight_blue/style.qrc | 1 + dist/qt_themes/default/default.qrc | 1 + .../qt_themes/default/icons/16x16/refresh.png | Bin 0 -> 349 bytes .../default/icons/16x16/view-refresh.png | Bin 0 -> 349 bytes dist/qt_themes/default/style.qss | 62 +- .../qdarkstyle/icons/16x16/refresh.png | Bin 0 -> 362 bytes .../qdarkstyle/icons/16x16/view-refresh.png | Bin 0 -> 362 bytes dist/qt_themes/qdarkstyle/style.qrc | 1 + dist/qt_themes/qdarkstyle/style.qss | 105 +- .../icons/16x16/refresh.png | Bin 0 -> 362 bytes .../icons/16x16/view-refresh.png | Bin 0 -> 362 bytes .../qdarkstyle_midnight_blue/style.qrc | 1 + .../qdarkstyle_midnight_blue/style.qss | 140 +- src/common/param_package.h | 2 +- src/core/hle/service/hid/controllers/npad.cpp | 221 +- src/core/hle/service/hid/controllers/npad.h | 11 +- src/core/hle/service/hid/hid.cpp | 14 +- src/core/settings.cpp | 50 - src/core/settings.h | 339 +- src/input_common/CMakeLists.txt | 2 + src/input_common/gcadapter/gc_poller.cpp | 2 +- src/input_common/main.cpp | 50 +- src/input_common/main.h | 26 +- src/input_common/sdl/sdl.h | 19 +- src/input_common/sdl/sdl_impl.cpp | 403 +- src/input_common/sdl/sdl_impl.h | 8 + src/input_common/settings.cpp | 33 + src/input_common/settings.h | 335 ++ src/input_common/udp/udp.cpp | 15 +- src/input_common/udp/udp.h | 7 + src/yuzu/CMakeLists.txt | 9 +- src/yuzu/configuration/config.cpp | 58 +- src/yuzu/configuration/config.h | 5 +- src/yuzu/configuration/configure.ui | 59 +- .../configure_debug_controller.cpp | 39 + .../configure_debug_controller.h | 33 + .../configure_debug_controller.ui | 97 + src/yuzu/configuration/configure_dialog.cpp | 8 +- src/yuzu/configuration/configure_input.cpp | 275 +- src/yuzu/configuration/configure_input.h | 22 +- src/yuzu/configuration/configure_input.ui | 1039 +++-- .../configure_input_advanced.cpp | 169 + .../configuration/configure_input_advanced.h | 44 + .../configuration/configure_input_advanced.ui | 2688 +++++++++++ .../configuration/configure_input_player.cpp | 739 +-- .../configuration/configure_input_player.h | 106 +- .../configuration/configure_input_player.ui | 4127 ++++++++++++----- .../configuration/configure_input_simple.cpp | 152 - .../configuration/configure_input_simple.h | 43 - .../configuration/configure_input_simple.ui | 97 - .../configure_mouse_advanced.cpp | 8 +- .../configuration/configure_mouse_advanced.ui | 252 +- src/yuzu/uisettings.cpp | 1 + src/yuzu/uisettings.h | 5 +- src/yuzu_cmd/config.cpp | 2 + src/yuzu_tester/config.cpp | 1 + 84 files changed, 8695 insertions(+), 3260 deletions(-) create mode 100644 dist/icons/controller/controller.qrc create mode 100644 dist/icons/controller/dual_joycon.png create mode 100644 dist/icons/controller/dual_joycon_dark.png create mode 100644 dist/icons/controller/dual_joycon_midnight.png create mode 100644 dist/icons/controller/handheld.png create mode 100644 dist/icons/controller/handheld_dark.png create mode 100644 dist/icons/controller/handheld_midnight.png create mode 100644 dist/icons/controller/pro_controller.png create mode 100644 dist/icons/controller/pro_controller_dark.png create mode 100644 dist/icons/controller/pro_controller_midnight.png create mode 100644 dist/icons/controller/single_joycon_left.png create mode 100644 dist/icons/controller/single_joycon_left_dark.png create mode 100644 dist/icons/controller/single_joycon_left_midnight.png create mode 100644 dist/icons/controller/single_joycon_left_vertical.png create mode 100644 dist/icons/controller/single_joycon_left_vertical_dark.png create mode 100644 dist/icons/controller/single_joycon_left_vertical_midnight.png create mode 100644 dist/icons/controller/single_joycon_right.png create mode 100644 dist/icons/controller/single_joycon_right_dark.png create mode 100644 dist/icons/controller/single_joycon_right_midnight.png create mode 100644 dist/icons/controller/single_joycon_right_vertical.png create mode 100644 dist/icons/controller/single_joycon_right_vertical_dark.png create mode 100644 dist/icons/controller/single_joycon_right_vertical_midnight.png create mode 100644 dist/qt_themes/colorful_dark/icons/16x16/refresh.png create mode 100644 dist/qt_themes/colorful_dark/icons/16x16/view-refresh.png create mode 100644 dist/qt_themes/colorful_midnight_blue/icons/16x16/refresh.png create mode 100644 dist/qt_themes/colorful_midnight_blue/icons/16x16/view-refresh.png create mode 100644 dist/qt_themes/default/icons/16x16/refresh.png create mode 100644 dist/qt_themes/default/icons/16x16/view-refresh.png create mode 100644 dist/qt_themes/qdarkstyle/icons/16x16/refresh.png create mode 100644 dist/qt_themes/qdarkstyle/icons/16x16/view-refresh.png create mode 100644 dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/refresh.png create mode 100644 dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/view-refresh.png create mode 100644 src/input_common/settings.cpp create mode 100644 src/input_common/settings.h create mode 100644 src/yuzu/configuration/configure_debug_controller.cpp create mode 100644 src/yuzu/configuration/configure_debug_controller.h create mode 100644 src/yuzu/configuration/configure_debug_controller.ui create mode 100644 src/yuzu/configuration/configure_input_advanced.cpp create mode 100644 src/yuzu/configuration/configure_input_advanced.h create mode 100644 src/yuzu/configuration/configure_input_advanced.ui delete mode 100644 src/yuzu/configuration/configure_input_simple.cpp delete mode 100644 src/yuzu/configuration/configure_input_simple.h delete mode 100644 src/yuzu/configuration/configure_input_simple.ui diff --git a/dist/icons/controller/controller.qrc b/dist/icons/controller/controller.qrc new file mode 100644 index 0000000000..f44725d8ff --- /dev/null +++ b/dist/icons/controller/controller.qrc @@ -0,0 +1,25 @@ + + + dual_joycon.png + dual_joycon_dark.png + dual_joycon_midnight.png + handheld.png + handheld_dark.png + handheld_midnight.png + pro_controller.png + pro_controller_dark.png + pro_controller_midnight.png + single_joycon_left.png + single_joycon_left_dark.png + single_joycon_left_midnight.png + single_joycon_right.png + single_joycon_right_dark.png + single_joycon_right_midnight.png + single_joycon_left_vertical.png + single_joycon_left_vertical_dark.png + single_joycon_left_vertical_midnight.png + single_joycon_right_vertical.png + single_joycon_right_vertical_dark.png + single_joycon_right_vertical_midnight.png + + diff --git a/dist/icons/controller/dual_joycon.png b/dist/icons/controller/dual_joycon.png new file mode 100644 index 0000000000000000000000000000000000000000..4230f5f7b9835e941084fac316f62000ac105c4d GIT binary patch literal 36466 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 literal 0 HcmV?d00001 diff --git a/dist/icons/controller/dual_joycon_midnight.png b/dist/icons/controller/dual_joycon_midnight.png new file mode 100644 index 0000000000000000000000000000000000000000..aac8e53211d9b8b4806f263a01a8b037de3f78cb GIT binary patch literal 34667 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

~Has9bYt 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

;cy` zTKrSJNX}bn`dX6i*vRfYW%Ul#?Voqg->E(zzxt9bBAWknBi6bKR`o7!megVgo@DL zl|d`Ny{?)UH#2x;$T2UKNz*(%J>SLdE_?b~epz9~mluL=Jrasjy_U{r@OT2M7_?L; zIxXzz?Cq5m5)(@c+nnaR?y=@p`MMvDReyhd{Vdd(BJ$;j!`kl`y!EEbdwF|vPxnyS zwl;eEx)SH@*Vo4{j^AG=v@ybFQflO;#0d%=n<~y4_?-Iq`1tOxudaG0Bqtv(wW*5U zkkD9je_!p%q>Vd_8TM8koUX>G@ucYIx^{kfJ`F9cO?kJs1uc_!^5o=Xe^;fz=qU>`=P9=FKD&19+Ux8qD=t>QzP8qE-n@Bi zJC-~=a{PGmnHh#cJ7erT)h6eHYjB_04hj;Pd3pPa9v|xsJ3HI_xz(Kd%71?>+jynb zG&MACD2s3%XVM71ukP&Av|5DgXx++?S^KNMzw_Igb@dTD3rj$Z{iPtSsS%q}I&GAc zoHT?wt2C#cVxGh1BH%LhfWaBvoiTM^UtC-~|8$B`+~;R!EB{}=C%eU^$fc0szkhk? z>`mp%_`7yXlrr-vZ)+DYZlBP-{Aip3WD&pFiOJ+*P~cuC6xgDStP^ zqa}!I_wL<=8zY|VdtZOp^1s}HwYwE=+n%n^x&7_(#fukzOG`_?%rU$D?BV_1=amtW zk(pPrw(f6Ih+z2OA1-v!@&evUulC zOC3EuqwA%@oKGs{wr$%s%iY~wYpU1ZW0wCpIYSez3IiTSOxxTKYm!)Sy)s=uMLZK>WDvNP{Z_Km2GDBtYus8+MeFjHRaO!_O`Y)P74dt zv$9S}$jk4)x?uV8({UE*t6%z&6|-=D&rQ%=uOt> zdQ~VRZ#MgEIz!)uXKQCJ%ZzH`Vc^fXJP`rSX(d5aKFO|kxPd`0VSy}nT>(|Y> zw-b66E?>_6wMus1`@`RBuVk5qXia_b-%6n*brbhaDWga&1y>HNyCBSli>6BCkea1a6 d-7fuS%#lgGe7~yV3j+fKgQu&X%Q~loCIBiIDjfg- literal 0 HcmV?d00001 diff --git a/dist/icons/controller/pro_controller_dark.png b/dist/icons/controller/pro_controller_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..73efe18f412bef5a5431c04f6d5823843802d659 GIT binary patch literal 34897 zcmeAS@N?(olHy`uVBq!ia0y~yV4T3fz$nJS#=yYf5q6N1fq{Xg*vT`5gM)*kh9jke zfq{Xuz$3Dlfr0M`2s2LA=96Y%V2~_vjVKAuPb(=;EJ|f4FE7{2%*!rLPAo{(%P&fw z{mw>;fkA=6)5S5QV$Pen!+sv{CQlyzQ$nM{&tIS{_5}l z3R+cK_c=DQA6jT||H_>;?@GTE&Qs)X=`bh~QVh@#VPIfA-z>n!C;lsq<^RHFo=F1s`{RJ;4$bohKR0Iv179Rp^Ko;o7Gmz|kgC`}fU(0}a>S79M^p z*>wMX|JD@&8X_mopI&;}%e&TV>7k>a?=bedeU9h1{c@pTO=|b%4VBMkrgu3nyrA4- z@csKYt0%8+Ma71f`(F{WGj?1WbTG^CaMDJFgVP@PZ-{i+8@ImCMakFZyzE1ZceP$G zm-pNK%J4tavWKfvdxG|YMT?vk2dy;ooK&+~<>Yo_oym9Z-BTU%w=uKTuGb z=&|PL9u-Z^lMzutkNmy23VVIjp6d1S%wc}}J91|YHJ3hlxqQA^?>-Zz1dG1Qok|ZQ z!@>leu1s>NXq#BN$%o@`z~vLAF03bBb-zC*!Dzs9_=C>r4U<%~ITWRO_N@H#=f)3DBC)2CH_ke9*cJU@4nLZpt^ee?Z4&vqZ1o9$LBZSJNt z@ja8q`c*4KuUs`PXiQL;bvRB?=J=sBZwIfSNprINzp1LJeVTHJ`^5UeocN#T z>e{M*tw=BJ5m(AI8H)miz)4H04<|nK7vRjnkX{@SR^d@6O)e4}}>50s|LbepwRc*wFiUg=9nAq!sf7RxvM7Z`o+b zlbk4V&1YqfQp*d*tVyY>6k9$_37QwAp)u9cYh_aq*R)jU7J)+sJqHYUB-$oQv^5B{ z8SyxCD(W0BG&(FW?{NiZ!=zM610HWqMV1C3iJ2O1aeW3=>ox7wj~9y1wGa20Wb*cY zyv*0|+HX-((ObKx1WgQ*T%;k$ut?{0$Rw4>X{wQvQj|__(m5^Ut*H_yB041~a$4%V zAg;)1q6`vF9S$7I0!$MHgxFS`Fz{&zVqxG3_G)L?p>cG9if1#!9)>+F7ZSZzrhoZ5 zLB;dj-QDHZoQhv|KA#ud=CshhkK>W>!h{QDzurXF1{Z5jRLMM7U;nxBW{y)-mekpk zr@q|E2@7@UxS}Px>bd6AxT-%N^UaS$?K|og(|D%Aw)&fjz@dBET@%+E@r2*HcvaQZ z%q(+vb(NYAS2(lH`Nb9DM6|Z%8N7(T{KsivwF>y($e_YYw~@`iT)dv zwT*43%$=$$?6ljm@3(nd;=k_~-R0kQZLR5U+`%-nsjG|2ZSln%{&wYlBc9FsR_}Jt z$;i17V$T@Hn7u5`jv=8}1GeAxwc2g9 zGO?um{uO+$4I&lO|njAP`zVx|sr#3rXDMkj8k~2-Lt-Bc+ z90e3k8!1iXNSWy*z!LE5X11r$@$mi1>s14^x;ObKo;F%2G9^(Wa+<2rX(Pp!053<) zshv8(hYVO2=QC`sh|`?9++upe1kd-*noFMq)g?H6sQi5Whv;R?iJXZJ95X+)aO=y; zHVYjR@Y0lM3viN1IO5~#US6WJRO0U4-V=unl$Y5|OFghj+4{gnS;fOWZ`dmTZN95` z{__J1KAyu40xWZ^N~7eYq|#oO-*P0`_~xJZTj4Rhq={>ao+QV zAsPoi+lX-Sam|ze8_C$}Zb1G#KCyjU`pbQ zi=6!psghP!6E6x1i&=lOm;4xNpwLp#B2XYxJuyc7m##(M@z&2K=Ra@$)w5Xm-I|2R zvKpg#U52U_(Hc|JpUMljoUeH_g=x``o7s{3e#9m36N#Lr>Xqs-iKoy+Jmbt7RZk(w ziH(y2g|FZE&tS05Ma6SbW5NVCB_`f>=MEPoj`qVGZHLwZ@5&>o)Cb<8O7^D3*Q9fQNZ%5a(1c)}=wLy>7f)qd2Dq@vaS1epzC*Drlv|)F4k0 zu6ZA9_yeaf7zru3a5zg&3+Q`#pipLUfQH1#ZE`X!vN?D4 z@CtvHy8ZGKPt0hN_-S6IBf_OD(|2N#N>F8qJ7<8=u4xK7r=0{`T@DFKakXb^h)k-r zlmGaeIY&dr#X!PMLBPdA#z{lONkb;igsc5=#FMAbE{dL>{&OmqtMU2b`p-9#`~NCl zD>^zWJFM}|-QCx9Jiin=eF%RpEq(KH`Z=xUgRM&~I1~d`U%l|U^g`y=3t3wYq z%xH;QuB@g42_7X8E+rYcy9ZgCgET~zO;QnxoW^;0Q;T9t$D|ey3#H$G;wm$4aQCNo zeE#|8!_Pe*e*XRNo7wQJ{!g10fhSL&UHF=PorUAHTzJ8o`*z=MB!_OCrX3bj%#~vD z|H11`J?XQeqjyeT?zi&qzZ*w4eYWABe37I3D9>I$|Fdb6mt23{>9;y{iWlp|)R{qE zseO-A=K7t^Fo_CVe9>Y3b;tGBo!5rNS52@e6w^4EAYeD2KW@EvqXR>uL&vYbah?Jy zObv+=PD)J<%#96iKL1SFp57rTCzWLDe7K43kY+TW7r}iF#3DCBf5HaUy$8wp8S_hhM8e=<`oOE>=U6CsUgjDo8j< zcxkq^wX04)?K}6J<2l-=7ohQBb5~c_(ZuPq znb&c$I%%r@{`R)oW6BfT<9+i3u3nv=zG$niTFZe91BHWWu0cVIrp%bZu=wB!BOdO^ zX(?Nye0|k~vrVKDHbyMC{(AAGD`M*Bwl-XU-Fo}&u?rUr+S+WA6a-YJ1c@=!)a`#F zQxe#|xWAas%FyCPR}{y-lNpDu>0bZY%a%OZYw4cfQJpt-y-HuVxBB}mR>!)N&%dv$ z{C!vX*2Bd2bMD123{bGt6x2MaS+vTwb(W8s*n%mKEly@_ElS&*854M# zrsUw`j|ZL>aUM*VkQzDd6>M#Nz5IPurPfYUTrlZq zQsSC0X-_Y&p5LmEjzl)NC<*fL@Emwqa_TQL^Cq3sb5u@Vd05aPJ2$o_JpB6{4Uz7f zJ#WqLJ_uhuMZas&kKV4XuGV;g_eMLjL{I$t`@7tY<>OI)yFbm#mTvvpWw-ohj#F9{ z+u4)nCY?<)_U2g9(!!!2lZ}n-!hL&(-@ksTcuv|;V4<>o zYx#w3-~6^M-~N5m;hxHQ$G7QTXMdx4(zhkyx3Is>Mf2m2^f}gfv2IE~KhJ)$%FpHb zGFCM=Pd0?D7Ok|rS(KNj7r1)Lg_k9p?&hTj2fy9ymDMe*e(sUOwA7OF?*|?hcr-UR zw+OVAl$Ce+`s&uChksx5`ktWEhD|lC8@6mYvhu-B-+r4<9>r5!`X$5XGTq!?|NnZ^ z!3+Lzm2Y`_(=*C?b4{dpKNS~e78VL#(K0=gCVck9iG)d$CofXTonuibrlmJs`t94? zqWb>~sx1aMaQXNqcT>!)2?v)iV6{reTWyDZc#@JZ$KRY3~=wp+jZ zy9WNad3yc6b&^u^D&v=gRC9&t=uZ|B7LHu&ru+2ClTBsSULvZ!!s_Re4!x9d@%HY1 zQMNnMQQ%2&=+!0vYM6~L*V$X%j4V0*%=fU@(xk(O`R!w*QwyK>u6Apbu_${QN0?^KB2uY8mfavcn^4 zZ&v7Zztxfd%Im+E&#M$N&C;o2EqZW(F;_$BO5LxQ7r%Vw?Y&$#k7YJ*^!A)ZRdeTw ziR&j`x^(H8_Zf@AM=?uz`1lsBTIJT^a_G*>&Cj0{PYr!jaxq%^`g;E7&!5lJ(m8Se z&jDtBombDCy7&1V`+7b9cYj}B-&A$~x$}%nx}I0&#Ox2dx1mnAi;Mf@EYsDU2NP!a z8$LeLSv+;o#f%A4r=H9*kvgnCYFnr zX8v$p>+tRE?ecH~i5q{9Ej&DHrAb{?lvdvUw_>xV&TQnBHZ$n#?EI{gI>(}L9qX4W z+fAE{Bpo|We48S&=xWB1dH3SVmc03!9^iHH;?=bpaX}k?J)52X@4?&c_uutQJQ03o zk!fORNJvIS+{JI#9+nGLRaL9Yglmc3*pN4O%H+96Ma0D?Z`pE1!b4KsZ%(#g|MBL@ z>i*pe119XLeNubvVS$f@y0NnC?QL=Qb1%FumalrTuz=^to+Po{6N2YI`)}V`{z5HS z?q=l7FTc*tPB4);`Rb~+r_D!wzd074J5Qz@;x*5C`s(#-)mA6R+0ju;?Q1@1mM0n| zRlBQKRsTM-;K^==c^z}NOh3QqPUD-~+t2HD1U=55SMOMyc%?aN?V)MDvr~54vZkh< zp0Q*}1yjNti^8Pt>#vV~e5`&n!QjN6-}io>Y3+_%8`jPKZnye^AgwO>x*rd}Npw|4 z>UhbYn5G;3Z{xas`_`=8+sx|bRNT$=>E$`u+n!}%VrDrJ=Z~zuf2>nDU2#E(*2KAU zk1~jGnn{1D+I!>f<-?~o@i+<`*eJ7chVHlT_pCn!tx27$+nvY0ss8`J6vqisb$@5y zU*-JJASX35J|EB^+Wj5rCV&R zPL2AtAGsapJwGK^`DEg;h|?C*VsrUjM4s-?$;xA7$hoy6PV2<^^fzVJ!BJ5{$tNFy z3iPTHE7@(iw-0UIy0!VSMO0LfPW^|6@;6Sc%BsuE{Fuj3FPANuet6OCMw_o!x7D|cEpg{}6id9koP zE$)Q=F`ZSipkmmZt7(b0j>dwgPqjO4=EP00n`2S<=tyFu*y-uhHy%EGI6y-rWLj#f zfkX|@fyW!CHMUOu1iae{#y>F`A(kU-WcE!Ie`IWyWe!t#2n@2}Fi$jyP-`<#aH)?Cx>VM1p zmj72>T5?eTgZLg!kM-C8hb+EWS9rAR>8=VVP%>DT7BS5=C}>hrLW08o!~FI>wlzOK zNN=2$X(hIW$+F-<`~48Dsr~Dswg!p6zbpt!+Kg?96XwiW^5Si&NdC=Dxew-+-?Nj= zp1CaPVBW-UZ*OmJOWpZBe0|)~Ygt=2im8Jl@!3=dg^uLoee5n1^KS0_{ZM%0v~(k} zCH&xVu4zx>G&MEDj!tz4Zwa&f$Fh^ZESrzyA&_{PJbX zoGn|n?6|AtH^<_-j#O`($D||d%?H=MzP|o{{rmm@|21`;i7F5-Nl$;i*=lZGWnSJo zqidT$2_R9aOX<)<1Eq-^ERGFM3mML9F9=(Gz<~SGhN7EKo;}mpbMIjg!+C}u`!`N| z?j$ya|H*+y=JH~h|My>CTYL40@;Xq+DjrM_;B%L^vbGlNbP?!t5#V7H|5NXsnsW>EKn;f5fe{n>dwNPz(v~Qj zn~Ur0ez4~2=3}qFKDx5oPyZ-+3dQJM|G^czG{|vn*ufmLWW&}Y-@klW zv~8Q1X=$lN=`Wr`4^Q;0znW!wV?&v2QIXNcq@!Fj&OX!dva;W@z1$-=H#dFHy@y-5 z6@zOXZ9KEK{*qf76ggquJh5=OZh`*e&9i1ju`n@O$kZ0>WD^v0SrMwGqNa8z$?$O2 z)-P5cX5{1?(_X)yZ~JZI*RTKnW4LEm#B$QKQ^1AOwYBxcnKK}!N76~t)!CW()~#EG&(1`al$7}yXkWQ< zttmNDL|3!v^i!wIOwLDhl@>dfmz!s0zb^Ro#xf)<^zor@E0Z-uxOC#T@tiy8IAz)t z1yxl`wn=fbX3dhia_#EFtJm+jSQvedJ)UCm>(|Fa-usW=Ex*Inpk!=ZoY&IB*dp-c z*|S%xR%d@tV$_&0WBrf$b-!L3%?tnYc9N=Vc>DI(Qj0ci;(C7G{L$R<`>m&+&iZ6C zGw92A{sp_2vu91^lIoQzw7-7m(xppXuU=*SdG|m&BRjuc$3O4x1QpJ^wze6$+0B9L z+k;lNT+Eo0p1FMa>ebR;zkdC3_h7i-PN%1aZYn~K-r3TVCJQAP&0Kg<=ib~6Zi^km z!>1RWo~E0>=kq!1+Kp3GpMA{JIbE-*s;auqModyxR`$h<7e^+3zc>5i^qPzej`wnv z{9Ct{O2~b4i#(Lwe$Y`|N=oX(qxbR0E_^r><+(38M=gS_uxj9|^?p$59Ns}f`kvaZ1aLv<>olJ=mpO!9JvSdelsi0z) zl9cr94-eht9Vab`jD7vJs_@qr$&m1HSI=G9++Lbm+S-Lb=9UX`u&Bx0-Oy7IFIkKlfPH{o;f5e%vb872zORiR^gW)oE3Y;^$jH24%YwqtzY=+NZ=f+LXrRf zPS+nzQG1{M&EB@|9QXd8Ut3!iE)A$Ndsg&Z)$AZj~_%RjB@Mw|P=( z%k&#dq!6{owOYz1P3CeJkVP=TFYa$mmnu{q4nj`2!7?JKxQ_=h?gs)+G%k8%ZA1vVBTKZME@8qVQz5egp!xlGQ zOgOOY^}54*zuzgnXn8&NPQ&hZdzjst8LQ^<{pPbVe#!LwMd#xe@7}p-h;-db?=)j; zmXkT2`TgDBhg}h;1cO-*6+Y>oG-fY=g#Swm~W5$_H{~-$@VRW9u}OL8*p7i zR#tY!x|MquRfk-^vS9b_>OPfSHMefvD){u}rRHDrug}jve*XVg_s8q~wwt)cx>*?( zglGkR&Ck_Z1;+!Pscl4lnQpvdAvSy+R?e?_YB{f zI?q$wQ~l(`kJpWjj23g7HFSDr&A85TI8MK+NZSD zFfd%OH)v3Hzb9?KfBALB?YC|Hh5UO@KXr<({=Mb-pEvXWvs#zuxaZ~Z`KSs1`}gtq zhqdkU2jgo#zdj+=yYAKN*M}SB?X2I{N=eTSh}y$qX?e3)?SIYWDN~M=mw*4m*$}&N zl49EC>y6Cp(+qhwzu0`Py}kWm3E!c|9}~80H{24X8=@sD!X;-lmoIr)RG^3=hf3AAZ&ZXo(s~`EH2P?N)l|C%_WmrRX_-t&k`et6cS$iJ9xOGcxvgG_o`=?4FW6 z=XCR_lBV~MXUG4Snx?P6`^Da#o{~QgPI56E`1n{|FG!(ofBm(6Yj&n(WN_5gGt~We zu|L=9q9pjH?veG6v+MtJ^BjKAcRSxXw3K(>&#&uy=YM{}|IO#a!kT$;?a4J0w?~|w z`{HYr0ncLFf(H&S*TwE$m8|G|MucN&NxD;0?nmAIhMP{mc>C5he?7CzaYaQ%#+frE z4QBdm)|%`$YD<$RQyq?OlJEDSn&H$I%}u)vEgRuye_+(-YuZvUr0<}vzzG~b6{TvJs%Q`0tUiXA>b zE5V@S*fF(=y>TgNX$dbcU0UJuO6Ittsw%6drly44w?%vR%D#R3_QctsH-mCyju9ciLAVBemA~sDN#{h?&7>Bo2&b1*OxC>x;L~a|L{b|CXV*Q zFW$VF^F{9E%atA;8(hOLcnk2bJ^cJTy|9jB{oa3S|32yOGyHe&eO*49=_CB@ck)E!uV^Y$g zCjDpIB{oFq8q7X>;_OMs;Ns6MkL@e6^uJX7o#OX&(IKY@owOsjq!t9NOfWm^!{)>> z@7KTY3ogdw*oCdWdgF7m`p2jCe?Lq9Y%H<*+r%F=lhbT=s5lQ>9_xp5HT|-aWjPd| z@U6bODIxU#g9i$JbFF%xJQ2}}-)EC{Dw)TLvxF>0-j!?OOx{X(DDIedG6f4Dshu6RTn8EFZNQzQ?@n#63MdZ~T3cp2`3J z_w4(RmjC~9{>RsRJG-S65jFZqJ) ztslo9@7!U-dDy_iV?*N6Pfs^Q=tOMIdK&t1X>5jyy1L`a7~a0e7jE6^d%WDw_eV5C z!_k~$w@g=0m^iO*s`hDdAJw>NsSB^ZoG@=%*RyFWXTPo8|7iE)sdK8Usy6k!d^p&>_2;-DcjzD1X6+ zn?3kjoeVdHnoA^Zj+!ueE^GHurnO<+Yu4zfsH&d3;W&T#bndpqf^Tmur%Yep5$U%3 zXwt!FXJ=o$cCByAl@N}mh6IC#f{2EwwM|iL+k#fQ+$_t zwuq&qrz?u^C0Ar{>}!yZ>g7|LEa=tBBq=F*;@r8e$`|jRpFDTUP0OaTc$;ipcS+)IkvG}?&R;AN7WU|}uK7aZCy?b@_?=@50Eo9u1lZC6QWizt#olAXn zfBj-#R(h{@idknu#f|QB>-6SWhI39!oj7%7W2*ObrGsg%d3kz9Mwil;coY?FQuI{P z($?OXbhK-R?>U*{iu(HEm6ba=*qS-moF}LV+MIV@eDTQH(9ayFH)&{`aCdaHtFe=J zT6m#i+t#SHaRSd)t@QBob8FINlzjQ}#gCX18*kIBi`0d@@ z*-Ha7ve)mg``olK@kfo_9Lr+R(81XiCoe{1K_XT5q=@a&BxOLOt$o|LUKHs-yJ zTC#j;(#=gvAAjx9Q}quG6&2xfy<;ewe(`Y$-=h~77yr2bJburL^y8BjIZc^b8#eFh zg@@bK*WOPxnz^C)__vSOuU<7>v2LYg{o1QpA09A&f4r+#TFs?Ux6JOxgTo6HT)O0{ z-)!vrDODU-uF$e!_Sv+{O)sA)c?zvswJI=Rg1z!nK_0fkPggQaN=qN!{cg7-W$)aZ zMlXsUe>K1F6tznBU;@X>mn$_iHD{KYJ8?J`7J^218u#t{SCQvB$F=utnyZ@|TUp+I z&h`6$Ui;CvZ{0teSFg^;f2!&~-hBVhx1XN6RIHqv1O0>-keb=UQIwLEuQN??L zDyOGs=ViBS&8c1|HnrS~bFUE>N)L4Aa4ae^N{Mu9y4p2u+cxb})t6RW-SPU{?FsYe zw?937dfhDtJ|~Gs1z#fhWv#v}{wY;_Z`vy5pYm7s2+XON5@cdxqNK0?ebPjY=H_OL z>Tfc9`+iBWvByr|v;Am}TUwgcq{)*K&1NsSnjz5X;=sXp{Nslz_fz}7TghbP=I>wf z|H+k?n>kqA&fVOQ_;-unzcXiiWUR|%^rmO;x#%~?qFZp@b9bT8QmYwf)%N^<=)U=0 zuYl8p`P189o2_xqd*?CXc#Kk)l9C{!&S{5*0Y_pCUzS9j*fgi$!GXpjvAfH@#{cTl zPPfaIo!#RW+#(?K`A`48eRc*s%}bWNoZP!7PXF8-%kJyApG^Fc@T8oU2HWTz)eNc6I)sH-X}8w;-vU+YrtuYYdd>ZalgmQVk_e)W1` z(8>dwWX$qn?3Z3jmSEet(=sD3uTy)1Mc~oL9}m3!cHsGEMS%~_BC0Dww7@fARS|2i zY4`0*mS9UwJw0JoR(srf_xk?~ese9G&#imcE%Ro+`^pd{V`bUZVbcz0Z3MOEEKiny z{8{tj{d@QHbaR)&CHj2|90?L>cXDzJBqq$8$F};a)%(;S4n+frFNyufH*+5F{%rVc zkETG|!@Mm~x`yZfFPO4u?OIt@)}NQ>se1~6+6>?AehAdo25T30-|X?dp35**)6TX^ zBsceMaNDO-n|QWYKj{t+ua~nqzj((Ej@$Wn+TP8Rld&z6d3b)Rt^DINH#d81h)gh$ z+E6p=l5l5dXGV5*`{kD{XT@%Ftu9=r=d@7ZoVm#X%Lgs?58R83wcGZ_{rJo1F^Oes z6mM@-?-mp5prD`yL0S{1Pj7$nWQlgv+}k;3IrsK(?%liB!*{E)07t@wr%w6nnd9d3 zPf}@2ww&R^b|d(WfdsFC6wirMr)EvoI_&K1ykgzDgC91CpVigP$jNKG{Bn;+r=Zh< zu+80#dYE{>cgHOe4#gcObIgw3`SGHJuj%m)?{ybe zug)&mw=gqmzPn$UnAy7c_I~@HEL*pJ-JJJCnS<%v+|^FGxwd9`p#Jg>-u8QTMS+>` zxGg{ZYxnT-a$04}%E`$Ye9zq2n0fBpxrMAk>3#yPg3qO;E?mCbTs-ya3hQ|O`T4Id zy?(xG)d2&ZOF?fV_UGy5glSLH(`~Js6cuaSD!{b+F5m9Ee4djY6zy~?w`b&Nvbe_? zvi|zP6r;1AM{_(U6?}UW`Gw!&;-|@8|v<6m6U#6 zu%m+W&9|Q`jgpLJawy80pFN#0LtXvXy}i|ETMYcg#Kbmi+$L;hW_BpgztPXU)bPQ> zhly9NUIi7Qvo>8#|Jh|UMK`u|(neJ($Teofr_PG>X?!En>Xt$w_jiF1# zwA3%(zaP#qQnamomEycMtozxsX_kh{M|N)e_?!91mluI^>}tjG_moP=&Yf$VYk z#{(imTf^h3nf;z$QG0e$z=d&b?psg-b6nr9;<@4Gn!xXqHKuxP*|zOf-p;4b=F3@? zXuP_+>6vTeos!GvX7{)qe!Ftzw;8|e4?Q%PHG6ho%$}56_D?=ORxf<=m*2qPsPpC} zD>zzz{;YU-RNT`@7N^-SKFHuG zkQVdiQ;}jzLcxWX+-%Lq@7Mi)du#c;iY7zuljVOOL-z5y^?!&jxDVWN!aBz5D!g=l=&7w%xB_o)s0PzIKQ8gA%2) z^SaKQ>Cr4#CKukjE%p0v-5iTTq4oPds@<|)XR|R;A>`7=tcE)3Dyn0q>H&(CKIE$>#=%sY2ZZ_es9M@pryJ^o<* z-p|6$=8bE3xp`Gp)v^!)tGRi1^r}tM?&_7znjL-N(xs-&&$R+$quT>A7HvJ4VUX~3 zRZ&T4Y4Xocsm5Bl#^M}J4Z`Yvj}G_SH9a1En7@En4SL_wV!k&xa4+ zI}|a!ciEIfk3TNhvL)qIvC>42w!L;H+qd~v)tp^bG$%h}PU!uor=LDKdHKhw>D?3O z%&~bneaEU@QkFL(FTXQ5lV;4u9^38JXfd~W#p?C#7Ts~`Hs_O1PFhqsJ7N8l&Cj(i zUb@s29$ziIuz-WLa_5P2r&@02GzKkoF%WQxueX<)J?rDSiQgyAh+qyB35bcY(YMVy zH$UH@wwC#vxmoO&x}>B>6>>o;LXPqA_fw`fKi<)OCInQ|X60GP9MoRFmvd=QYfDQD z>(j-bD{LeRtUg{mKL5;%Kk#v)m*3R2@=D0^s`Sm5+;^z8w zzgd&>=Xm|UaFe4l?$c6h{+tY46T4Sv{hn{fT4V$L*E25+5IC4naO$5_+Gb9@>D&hn zW%Zbf*6o*1KQ~9N*JbvN(@9!q)P$Q3DwyTn;pj~}c;)4sDa)3nZ86#YU}>}d;S7@p z-=g!|jz4w_4K=Njt>tJxd?CZ+gopp(U8buAIi@{2@mu~u>wVcH%qdSS_e{!I<}Jw8 zdg1o%?#1eT{ubMEUyFgq$&|HUS-;yQ{#;s0ZO-?t_WzA-{=D7K%uvzRw&C%!=;NX% zZd5;)mYy(Yj?LSqynQRztvf1j_b=ttftlPV&z(B7?6p~+cH`2eOC$DXsrt>aF@0N_ z`&PDqkMGdK0++MmM>gq*aJkM1I%~wRe6i69jX?7?LQdCapM5q%JpEJE-sw8`?_9oY zovPoo=n&JDtJnRrvO2_idwU;P@_BX&*P3n8S-ktWVW#UPL$|8L--|RK&3RO`^Wvpj zZRghMRqVaT`Cnt{FY!Uy#LhMM@2_}JoS40;T)rf(`0XdZ11-} zc5r&UYjUvhpE~=Z;$lM+la^Jlr2d>=|6knJ)^^9|ZP5aqE+3vPEH8L==H`lR#&-4p zY|hPFJ!^~8q5S#vjPvDe*%DGF{rat5=5KL4ZSy1jeLuf`yk0&3o_(g!yN|-l9~M{$ z%v5@xxldB=Tha|{lU(D~+&kazt5$oXAXoE&+j!Tv$%~I)__6cu-I!#v*_B=|cdg)S zstiz&IetIENHRIk`Qz`u(_`jV?T!2L<(prXj=4H}X=(A}klC73g05V>u54~zed+Pq z+_f*>&b{Tf_G*?O58HZ;t`xh8sg;LXCQYB-J>Twoa>#t^-p$MV9-ldxd}H@>cHyXL zToXA|G|Orqr8~vO+WO70Vs#WKyv!T@@td{#g)3Kh5>lM*ZO_-|+xyi@uHr!*gYy1< ze|y`mW6RWXZtmf<-Mjb2yO*x%>ETyWO03ue%lFk?N}duFQuF@zyT9wISTg1_5Xgqmwo-8f2ty4B1a+)%~bAEvXSG@dVOy3mK_pz@7~SGm5qG+$)ie?%=5_Cu|8JRg?d4g=*t@nLelv3?wd;5)%{g~aa&Gni+V6e; z|NL&&e|&U$o%z3C-TZb2%Fip@)79CQudFX$nz1!1!0W8P?bj<`SpTn^utG~9a@uuC zp0k2q;~?wnUJH@t;G%rDV0qjCt43$gSI%rc;%Z;#z3fWDs;A*Gl!!rkoJ9 z*%`&h-)@h;6gg-1?B=tx*UeV%T-Otz!Ls}`>$KEF1Bnaw@AEewZ2158Ykl(TX}Xi+ zK3}i@I{nAL@B7)?5-(i7+uOpTt+AA&y}9@r>u0ALyZb#gX%jtI>i^%Zmze)!{~z`E zLyvdMAH8%bh{56S&(A-O>erW^{LRtC5GeBe>Us;wi5@JQbk3jHK4r=jlYeJ+-p#A| z@X-Co3x4^2_a#qL(v#1=x;lMN|Ml0sUUD~EUzF?;IIVTfrMPE>mOxwLdgIw=gRk?< zbWfS-H@io*>(LbL(xpzF2?k}We>fxrYT3T1$mm1Sw0;#AgF=_kEo&TX$r|$Av+U51HMa6UTtSjGSe>`l7nehMD`}oISW*Tpn2%h)t=Uje?HpbI& zzbutn9^BjgUatP{?`Hk}|9>8J&!4%m?A?vJle6M^4mY{{ylE=c%X56Axm$71irS{< z^Xun{x^ApkxMh86=)?_9((uYa!GlS;WmBJnxXQkQ*Y_L#&mt+!I->zb8w z6D2!mS)P;V6U*8vWwu&$k;b9dU(fEE;=bx`ALH`uKbCV(nU|=pxbiAe6;#CAe16k^ zJf5F#*M~PR`m&aNu#x{PcE)RIk(*IY#C|?WN#)Mnn{*!M|9hqXvETlu;J=UR_J@-D z-${kyO>63@6E)_cGr9U6FN=*W zl(A0TzTd%sW3E}*TAvatS*FP@#|(IkZ@nyd_1t;VlFZ*L^+Q1Mw?wp4f63y-!td)p zJhbsFNuA-NCc#q$>UeC~mh^JdQgPY)yHdG#?Y?#K?$y3?ecf}<^Bhiic}Zx?mMscb z=Na9K$$9sGnbq2|Yn?ORzMX&d|fKFeOXEiaN`pZ8o@YpPb(%~^q$eWqM0 zbz59`P^VUu>*$t?9$8z{Y-B!uuCS5Q(bVdimT~#eCY>);wry?d*X~_8y=WSB^SdfTa?r6KSB zSL%p;RxQ8qxixILYgE*$DV;59lR0naOKoI3xvA%!<|)agOO`Y|wn#}?lKgg-sYTVB z8%v&xK6&nU`*Qj^gPA@#@$nh94aFCC)L&7n=zE-RKKty({`<17ivyJ<=GdI#Vz`ne zTG2QA%9X3vulMIhuVX)K@cG>YKTp55({E>8`IBZeYr&kfuWFt`DxR~p_5X5uc4Ff9 z4-e#PIq(0wc0cj%Ez^WZv56im@Av*^-E zeTUocADn0F?_Xu7$nsSCbYN6a)AaaS-kp|~9zGsDQG!mZuX0s;o!VpjeCN%Z8~i6e zHo2d&Bz?h#1qoiPMc?O^_voke$yxX5|9?5(zv`ax@A-1)TPr_sfA?SIFvUxir^-3R z`%+J$*=$q2>DAT^^_|E5E?(x45_#{{#~qnjt7;u93QVPVZRV|ft=+3~S98LQ83u~G ztz|k7JpHDiY+HLzeeIk(G9{(H`)+x9`#J_ay0ThgzdgfNt7p0|(s|AoU&z=ZzBfEF zw0HfVo8b$?Rwo!nKai1`Q=-1|Vutvhm3}Kj7VW6ueAjcQ>;AqU)-rY9Ir4TSYFEkf zg@j*Uu>CrtqX209WZt|!(bK0LI1XyB-_O_^*1Yz5zFTEw<&`JFJ+meUz14g%=h4jB z-dx;V6XwX={U>33G;MR=Y<6{S?S1d}RUfOj`|(LT_}=rM;_*`93b*rj35s>6Zjrm2 zE+YEuaE{q|Z-$Q3PZv#6dE0UA@8U%c^QzxjI%|l8SHTES zM8#|CquE!V<(if#(C2dD{{8+}x1zRe+p27>Eqr@hO#jo<(;e6M=Y`bN)ybKyi|@a` z=R;D+@sp>{G{mjnol?8&r_;g!1yxnn?69?m+UtKDc0E2#UtfBCl>kp$!HW;KgYP{* z(m6RJ|Gh(68k-0g>${!5{r)_f{=e>`#p>{NE`foGC3YuRf7ICV@bL*XXn{iFurt4{ z$#YwcMT;E%{QID_IPkgg%${AVR%xw?-mdq|8#Lq+purL-vb@AfT~&3_1_k-!{`2M( ztXa5HQu}oHfh5DjPiO6Fco-8Dw@)Va?%l~&lfPQYZi#xkrO#sf?X4MJbC?@~Rv!5E z_4R~FlX?z_c+Q=?@M6Y)Y$&~`SZfdk^l|&S#@*Qu5kVreO9HkML%<^F8>xQ%+fnt0i&6trVk`Ma9Jt?Th=%%F2%IF_u$I*<*h! zM3%GHO?gWcuTai5&bK+Pfk$o@hu+vzY0MWV@LyKfM9TEksZ#|Xo`$R2#zoBNU$SIL z=KhAf?dg9U<8(4iq(sEUk4N>am^^7xQ%eg=O4<@-eSLl>l_m#;jsg{)tzN9XZp=%A zTIbBsS+Z=|xz{eyQBhp=3LX3QO&8$sn;#Jo9NoRvyf4BdZPuL~b#J9qRBk<6V*e{< zQGmvV6i>l-JN}CO`PMr9Sht(m_ALu`rlyr{VtDXm^IxCZ^6)=N?>(&i~tYH&5S0;!D8lt4lU+^gMUMLw#dh zuE!*n>DdCElc%`<=izef@QD)6IPmhwrAa~sHulTs-m>FAY_Oy9xnD_HsehJHa-`Vp z{5_1`)2I2pRFIdFYC8SYEi5eT%9EbrR0AI7)mOXTywO>*bg7c9EpKGxOwcNUx;nd} zqD_eg63=R`q*4` zOnBIASrnO?9s7?hn;H6iE~nXQUi0@i`nG0YciEfXtI@S$&6-6^m#VrfzUUypa_((e zcRQc#ulYOWw6)@7JST-o@hIPZd*q0V1W#2|WTfclDyhy+P6?SgHj6TQdU|+3yViXE zaW9xman~SCjaEg69r{k=I!^3PEX<7wt1<7JwGU)n`Va{{qxz^y|B=b>(l4L z^ReaUJO#YU!qndFdTgc>A178SFUAlO7Isps+g0xNLrESs520Am-i^;{I6s^*K7T{w z=)0z-KZT!X+{{UvHEUMq$&{|lO9H1iE#7|9p{JeW53_QoXFpHt#kbZAEU z&ts8$dY+hU@Ys6$;>DYlH(mK9+YYvsW^c@UE43zecbX&1RUdXmma=Lt5iU7RP0fOx zwi2^k+s_z^aIs!n8{7PK@%-C4`%2bN&_4S1+k(Z5n|0#jj`h@jubk%|9WA}R^!2p) z`+vXNZLD2p=KQRtOwe_WnN+DF!{cqDQ@vWxoZ(ryY?+v}d0xlMeWtp)qP@Mom$ywm zbMBl|diwJzeMkQNW8CxiUG^z zHqU9WHO;*>)hB;FGh4IbGs%60V)m}Ct_Bi30a{ZtGI9=W6jo1*;hZ7RwB`&?&b~b6 z95d-tr%$i1a8y2R6r(3zRaN!yYt?b>mqLde7Cu;TEhEw2)6uEvZP)Qrr%yK@O=@&o z+jjZo5q0eYIvsb-CqzI#xR(li})AE6!w=(zxzv$iwz&zhBGX>QK$ zwe*wH>q&9zxhrkv6*06wE81fjuAt+6Jxb>pr+3epGd|mvFQ0B^zFooGJbhjJT*Kts zyAC>vueo+|ZUxWbgri+gJ6x20yzSQa&AMIsUk^I>u1)WRJT zrc6o6xxGs?ub*9i|F2_H)V9reqa*U<`JxpCuiU(*1Z~;AeesefugYDH&y;^tW-TNn zG-1-DragCLzF5huu)p82ZrwUgZrQfPgsl-1W>4<@v&TlFw`$6iDKQ%l+sN=OUbjxp zZ+Y>OGQ-XGZ^;9wLg0FNV_X;bA--~J(a>$ z)zuRxBsgn`IEI&-TUl8@{Q66Pul?XAo-0|VXVNa8NH>#6Fq<6^5n-`@_u95LwgMUd zOP4RJTb%V#n|$o~=e0)^Sed)yvm$*2&yt_Mv^<`}=GEbJQzuw)veqYV?f)rXnZMq>wDjx}+XeRg ziY%F#D`|C6YrM){mE7!)86!_X2)GQ6*aX5Tef`JRL-cZrfdDC%=*wngE@Zc zbNtlz*x9RiGBGv=ojjajqO5q(D&Mn7T!^pz;^oWUr%#9bSS^&~VVjpYLziLRoYRHR zV;WCv+EcTt{aB9K!K|&PLPM`cY|TnN;}glr$(fP=zTxo08P}#vojjR${q^qX@^?qH z*Y7vXbZOJ*vZ#E;la=-Q!~fg6-~aGf|10j#{LeO*ckgoByLQ)>OW$JGOPeL|v{*DW zww(4=Jn&lWW9wJ1-QD#nUU@m|_a6I`bjWvyioH{w(*cJA2Sv;a4&J_6{k}G2`T5{; z@A=>AMW?wLU+Qs_n*06r*7`RlbFX@x|8Dub=KS~Q(7;Cby6?&#D)wBr>eEdqEftMh z&)*`Du~llu+3dBR#hW%iDB5}P?(O#Yy+6w?^w#c;Ywxdl(Y#{K8lGR=nq5k4?CgQD zd(HRca~y7Y@vCw7>;2|&>&5Nn^G{hPs&X~ML~wV-uNu3Uy|+3V4=Voob$0u8U(J0p zHM(BBdgm5jZ_g)d(eQL?sEk#`1GoL(dV^M9J#pqtPn6}%-mJ{bsh2NbUU~A#{@S*S z87(R&O(*`_CAhc4{_`2*NSWjHD_5-0NJ#MV*ig{i>^#SBdH2h-SqBqb%FE4-jMg|_ z=Dd6<=;7C@iF2m399+1tL9=&}Mp99hlWxM}t3k0<-RAO)7wkyY!A0ATDg+*?%utE+;Z2?o;mYi z?)^E(r)q~Uy60E6x}>ZuaIRnbl`B(9m)CJ}iZP%6+^+odtFjeypvI4CU$x7-96JS? zK7A@$w{hddXV0D;%kkQIZN+k--d+WIxQ{j)k)e&7E@LP^X)W9gGSJD;y|I=jn2ir2&6e|mIORN-S!{ zcdxJZ_qVmyTTN%5-SK?hZbKuZrY~DUdV2jIWCaI%%nWZ7aGEfAZmV)TA83(nXsD=S z=(MF%7Oh?_?X|RPs!rk~CwF)Cd;iYvt~(z!!^f@W`R)IE-lhBa_&j)-evWm`tl#f` za-TSNYEPhH`SPsn?CHftMGG#!bc*sclIoq1x-;u73XQ6&M!9G&P9R zbJD}2wexis1+APgb!OwNS6Ma%|7%xhtar$L8y6BXrF~A!h3nV(`;RxjdbLW|Upi%m z$L#sr7jECq|6Kpq`$x+!XMS8>|7icj%V&MmgzY|D_c=LZasC1OYh1N)>fy+jT;L;?)&}j_dDtQJsV{@3te*94t@UPxcR1x zh4|I~)d6vFZntjT%5-yc^Euy^l9JL8v|!~*NmJ8m=UpAzB3vROA`2EQU^spH^o`(< zj+r+tJDM2QU+)gxEt|JpI`8|fMCGkfyv>gMiw`m^4dU!|>+a#vzH}+*@U1Jm<5nGc z{BgmuG<|M4pO_glW;j%*hkLAFI^_}n{~wzfuI0VxaZ?V_61Dq$->!G>^}H4T-qhDH z=I<|l9wfo=<;#~vi`MWQJzA|~_HXT@j}-=%mY&&JSspv~|5lqE7!xDH$0X5tBtl8d z!J^MP%WU>xzfFD~9u8h!o9;Buzq%bs=Wm} zV+wZO0dHh)k$(Be=Dg#=fIBZ7R$P9$%{A-wqen_^$DQ6getP$lyWHm5jT5td6I3J@X&lPi zo}8B_r#GE@lFGppBPC5uPESwI=y}g}iM^9 zp{K9UNyK&Cf&~fA?0G$I%Et@;+?^=p@4|FqEAN+0z1QXhYKUm)>nqQlJJ-b4w)Sq# zvy9CVIu;cl6s)XwZ`iS;W7DQfGoJOH-qdsPVxW(Y&!R0`L^L%g=HGo)wtM5AJxq~& z*`lA=dfkL43-Rrqsp2_f=FEdvu87#k=}($GdBUt&O^+VgGX6fo^62x=4VyMKwYIYM z^!7Th3^|nL>t0p$Yub{w-!*YN4zKxEz1MSY-126pg$`a`Mt0wC+VA}M$G-k|eAB-A zx;j3-cI7u4k98?*dSLE!)eJ(#qJHHf;R!gQc5QQ}d)n*_#*JazsS@YwYBY9Xn=VY1z7DiHnG+ zXyRs14XvqMnwpv(o}P>hI{Ny_Sy@uf&f*j1&1;)8XU+<};!2x)8}y#F2>kg~`oEM> z)$`EJ^!bPV%$6BSF%h`oj(1bWS4=JRTs$Zy1KkCUuJHIP`a*i?Df~A zv^25HmoF={DA?QcYieo+=4Mve-mlwykeNYk`7))t4U-}_Z`jZir??0K+b7EKP)hyM^myLs>qouR5vbJ4~>WEwKTv;hu zv(L%L*LU&u?fi>0lr%HfwroC{#P?b}dRpq5b?cG}3pu;Hy9;*4c=-CdW@dW2Fkh}J zI~98)Pvx}HuV245?%2`s>C+}({m|SgUQ3-kJq_1fD=8`eo{*Qv_w;G1VD!3>)mJZM z9Ew)@eN_Lie&XN9|Nm9n{5VjZU?TN#rvHDtc~-yI+`qnb$&v#CZWp?yPMa2XGs#d{ zHT7?i>Ouo4UYqmU{qB!8D+xKIM6SExb9vhBwYsUXEoalXU%Gq?3tky=;`C|PxH!Ez ze&S-{;)d4N&Hw({oiJ*RTi@=sxXo)R+xg-Lm2#6*oF}PtEaK=t&b<9L@A~W9i!XMx zw6KVXJUN`Saf5HhGq&~DySHsC%h)OjaekSJIL3wEB&WpPDB=!0p z2LuK6ynHEXVrsg0)25=!fA?ATH6KlKi}N$9`t{5Ft7W;Yb=Bkd+};1Yc~n(Zofe1X zzy9~;Iv>yJqerVdyq0#|XnhoA)bj15`h1`2N1f_v=AR>H^C@^O4ahc_v6mz0P_6Q& zO`A@9`NH$|&6{bfS7~j_XW7~7we;4-ucb_yC(a-LaDpTH-7TiotIM`*+qP&&1^=Z> zhy2wFt>#8VMQOi(Utsa>#ZpI2*5id2GE6*td|Zk?-4e>#VJx%SR5oj?l&q|*hQ9vo zlE?{b*5pi?KD|}MfkSbHb>*XJ$4#<$`Q+_7E=`&w-T(K?)A>JZ>k9(~FI~QDZh9{x zJOBNXs=a(+t4$x3&vaXSaQ7aaYYCHe^OQHXlpaVjbpJDfMUiFd)Twu#o}RvO&z?O? ztC`NMt(bTG{@?xQAJ6{(Ji6j%x_$rGf=9D1zjVpY);@L0>u}V*uN5{kX3RKp&1*qYuDWPu6T{nWnsX*T$5RgCS6{2IdkId*~;Z5 zC6^u_f8X_&>4VS!dsAUiUS7$K7`k{F-`|d*e*Zw=dYS!{W(UZ|n3fB4fUu6_Rx%eUIzj*X0MRq1;1^6g>m z_50fX|G4-4@4j~@7CN6ebLNiN)9617rz~2$I9N|dr^Rh?=c!lSH*m2Q_USoH^ZT~)vt{3tW4*w4@ z1O*2dT)(*3!{7h#y;rX$d@~mk0-Y5JiXc8Yn}*)7$sXR`&QVcXe6ltT-qY9L`E=*e zBcX5dF}HoDrBpgEKk>P!IB?JMjA-$|H}Bpp)0)Z^896gBdRP2ykL6ou|DEH@`yo62 z_bk_Gsoo~pCu8DI&6+n)?M=_YYt?V`|NWVk+IhbAoBxEZe(f%5HQ9gPm@4MZu%7F; z=kvMUI|@E3?fbn~{y|po=VeXD-#&Zx?BnC<|G4+pJPnQ6Rl;d&yI1in+nQ@7DypiB zcJEFPj{kq4@$ZV8(Y=cfHATxUpOTbXDyqGDwKSJpCnsmc2ixztS_fQjzj~$h?AbHV z)YQ}yskh9X)?aT9n)Txlw|>jD1DXxKwc@sN8;_-2+RdpLc-PcSiuc6HlhZ(bpYL~% zm!E0-<+uF$>xmN*b}HZhcVS`kj30#`%ntax0F|ir`P?h#|NZmFCMx>&hilgF7p<>< zeA8>8gq-BjFK2Y*s@^k4#Kasq*vx*-wlyv!q(wV?T~bw*RM_fL=lJlYK@Tq+WL~g| zXK7IDyLo3>RTwrbi~jh*`MqmssH#%s6NO0{OEYqFCx8C@dExc;YbsgBC0289zbtvf z`r(|LeR42k%i|Mun{Vz>bx-2v;@a`^XXVb_yJt_EI(6gHHM$QXg^@z1s8U%yDsdSC6aunVwjF;E4sFS1Z#bo%XBzcOHLyuylHTU$T3@g8+++ zWsyq8?9{%;0fB*i&z?=2Fl#ewl7U3QmluK>B3u!dgFk-DKbOCv-|~3jiZvRCA2zdZ ztpC4nhU^g@*YtGt(A8H@oIQJU((IJYHsKuYR3g6g+A2#L1Icv!kSh zgoGA^tybh%um6Wn_@&~p^ro~ep-Tf^7;A@2=$H9w>-J96hnh!Q? z*HYEr;TXbLWojJ>IWq zXehXKtLg2s%Q8C*xmDZwbHp^=Pz z$}ir_A9<=Bp14`}z{`?*6|(0)du)i9Fl}DjojEcxmL(jEL3uX&_@_@^2hQ)mb%kYZ z7;~#r<6`%Ima`YMG)^3E8GXyN6|z`(%HB}-n2D)q8NPP=&VqNcd0XzQK(HbU2?eaiSC zzppgMqQU0>pU+XAlP+)HDC3T`j;;S6@K5CT(E1-kFV?RA35Ukz*ft1QbKe@LvAAD+_|v{nlwoH%#x)}_}o z4=!j|@r>l<<(<{m*2a6a|7HP$Aj?9p<(GF`^xeLcWORM{CcW5QJ*}-rbL-0w8vOH^ z)N=CV$lOqe!J%;c!Kwl??sebsVt>-Ask^R&2uqg!9z9YL6Q91QEWuz#_EnCUNiJFpCV4N6%|3qpKGWyei|tyUomXF7v|&R-SxL#d z{Sv1PZeMuwMn*@>`@+rRfBx7!d;Y9o>Bax=%@kRV_sKZ9Mry|WIoNL|Vw3mmW5tJ4 z+UpnX-pwxm^F#XtsRf^x9)EmrcK-h6YuC0dc)6FWmFeZnmosK{Y}zJz*O9j> zDK{&NOHxwOG5+$!i>=q|zlI&~eO$ZM)WgT;NVokD#jr4@_pvRjckYzT-}5nh&;Pyr zN`?-bPJK9`k(Qp`{7shq+PStfXU@3fl{ydiUt4_l)`T_h0NP-X0MddGODlKW)($;+~gS9rokoO)1Oc3l6@_ zz{p|t+1fF|;6>urW%;+6<7Yqo`s+c7RkPmyb7#&Z6c#dGHvTt#9T)efjmtMM-2eTL z|G`(ccLEPfm6eq%KCdnRu#f$I^Z%Nc%j@{H{yqCsxn#)_1!ZOB2RaG5C)*C>ZO^~` zS$v~`xq184siE&~_)cw3et65Y<}b4cW6q21n-?x@oUF1^;TogM+OXvF^K7^5-rcUI zrdD)&Vf>-68S~~jW@l^Pvfic8b?8?<$D!As6B7zFlpfETJ^Q$~{{EgXTTBXOpPAt8 z@9*qb$M|mF?{%`fT?9{jwKG4sX~wT#zX~5-O5J~6ve)fS=@*W=AB*MPx9Ua4$IBZT zueGT8z;Lhf`ybi!=g;2WuwzHV&&ucvpR`Y&JQ)!Yk;3>y%5&0%yLXkRPoM6(#pk!1 zL@%4iqzD&H)s_hxrt_PLI9$mpZFE{FAi{O@+Lx<5O3H`5o;`c^WZO2gmD{$Jg}Y4H z_s{Onr>oZuY&WkA`WI+uZr;Ch=g+hC0nyfW-%h+wDl9CFHWR(w^YrP{1+&llEf?0C zE!ShPK1C|J(B3TJ)_pli>OH`A^b< zHEVj}W4C_3e0g{B+E5Xf8|DGr8OtN%A{(#2?)_?@l(*K_@j>&3;NZ(IUcdjo`}@Qx zQ#zI`Nio^J#ih8z9F&iD-s(8a{_S^dT}p`vU%T=P&BE@ZGM646znf51CFQq#^6C{D z_suS6ExxGWCA7-?)4kq*%2_>b$vM~8=Pe3b9S{}e^!wMZ7jCCy4bFrKx(YTaC`2$` zdigT5r>E~%?Yc#4MAqi6HLt49X}xyMY{`-(2U2zwb9#xm>gegR+b%xz+2%^tSKW5W za%D$>3)ipvpFZWaJ@m5W3(-b+F(*Ei&3pq`gKD+(hyL%aY7vImQ`u!^~BH+RIp9>cz-pDyP zU6+@QS*Gu?{oZ#4G^f&x^Y(&g~qzRH7 z3>hX_6?>(v-pGg_JFfoVYn7*`=f`ckKC)f&TN11lp8I5PBKw54HnwJ+)10?A`ZNTs zbcu|Vl$4NIF!4?QhTuY(_WpnOluyJw-*YhR*NgYIn^yns2?%dh4dithStF=Dveg7}s z=JS`y(s_nbyyf!yx!3RgR9y44Q$N}IT+(7+ftCfY@5ikdZLtti&XD1)zd|;JKpnJ zH=NkC$2`jRg7VTeYo>_1PL!6p6O-9KSHsj)^t^4gnEkJV-#4x=yDY1{*lA_Rqy6>I zE?0aN*MB^Deuc@qbCoR4nywp^jV7ramVJ;Hw>aqF+rGQ8dv3pNjH*pP$?G}knyuNX z&oU{M-&rR#HZpolIx=;NNd9a2qRA(hESPdz`rYqC|J*gFo^npxocVig{N0x4l_8;_ z6F+|B+;#ibgStnL})sj2Avf6e|27bw_YbG~Ub<&=WThxM{ciw;5WuLuSqPe^AGR3e){^F`^%Gm|Mzj5bT{w#lP4l;*R4~#{ddCVlPOm|+lZHC ze&4{%vGmCUzlbVOL+j+pWxBd+Kjp1D|K)4`pM0Ay2l?+`Y%ALx85eo*zTHm~yH6*M z8*DhK)L?z`R*>HVg#({$OtStzFIM&J$;=dA8uYNd`2Q~+qZ>X!BFWa@*1BoBdV8;) zGkdo8_KThE4PUC5E9SMtUQ$`Z;H0TKNkuGox#`!0PoFm5T2PpiBUAs; zet(O9{j>fHmv?W~od0^F3g`Xb|GF#Q|CT?t|Ih3HcS~PC;%fch{o(9+cCUcK-L@Bw ze|UCwf%$=#yNZ7sPYHUvNaO7)hD+D3>8-vxOE=qpcVxDz?~^32%!tcJHvDrxKhJjd z`mpRJZ)bQu;8$e1diCm^R&H@abMyAM)9Ph&#r0zkxy${$vF+Ewg)%D(BgKK4W~7;h0lxe8k0%QJj-yORq$) z4O_ftPfuC-_cy14UrkcUU0tNG+p>Zo`?+G1sKb?)C5)S&rKLSjn#MGD=G0DyrA%i?I>{J@@41Kr%xwcdz`%ZOV!>3g)tGTzK3`fOw%@3rmu;=t72+8 zRYgthl&|k@>#fr}ZRh&2Pd_cXA-~IODbxAS8)m%M*|uZPCMK>UOG+IR6BX5%zWh6J z@}%P{tK_2H&GHL+#C?5zi;9Xi?UChDZ9AP~_F7XlacN$gq=U$D9=5;VBKbL;BO^86 zf34cNaN!1SKO>(b8dJSigsfU%yz$5pmz0zxziZdkCooK%I{Uq$9N%2O?mKgGc=-E& z)Y=&z?mBYhz)?k3#|8zC3t5k=IkPJ&B$^Z^UAi>s?c5^KhJy>jHKv~0Fw47jXQy8N zX(6?R0U9DJ)~!=oe0^2>yOfp*v4v$$3j>Zk-G4d9jP%qs(BC}>q;@KJ{TT-?$tk$C7=dX$fC02%JW`3(zX>G4Pm8X#X zH|oiTb4@LOZdbm$V`;n8Bvakr`D~i;rp=qnYYrZ5X<@k%^8TpbUq@copd_YEMr#db z|IOEUpVHacx#1?$_fH;PUQI`H8ZVwdJL~paNB?;FcUE=bChZl?M<+EbI;6B^%a)(D z`}VBixq0)ZqkVE=q2UXj)a8q(ELyoT^4!Uj)5<@cU+uTNS>@zPUS3|s_$SVBeUnmm zdaXC#!J%mV-I`^=h7AqT5fKxtt*xJSb#=*BR!2uhGCB$bL~TmHJYUsQ=-%D}LEF8x zv;XN#^=j>}`H>iLW}0vMd;zC`urRUdub*{xcD{J~wpr(NU3!Gf@q<}g7p1+A+w=L| z?sA*^SMD_R+kO(9GEKz&$$wpedCx!o`)=E@Y+6{w-z(EDuehqArQ=do7IxtLf+
    EG}7&6l4# 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

    AxI*{Fc11-CgTf$?HoRORt|kr5$VLUaa~lFEqY6 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 literal 0 HcmV?d00001 diff --git a/dist/icons/controller/single_joycon_left.png b/dist/icons/controller/single_joycon_left.png new file mode 100644 index 0000000000000000000000000000000000000000..5471530340bf963323909422043f3876c6a7ffe0 GIT binary patch literal 25565 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 literal 0 HcmV?d00001 diff --git a/dist/icons/controller/single_joycon_left_dark.png b/dist/icons/controller/single_joycon_left_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..b6ee073cbfaebebeea14274bb75a6129d117b867 GIT binary patch literal 25682 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

    8cbzxst@oK=OvGQYV_ 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⪼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 KT-G@yGywoYQV7Wa literal 0 HcmV?d00001 diff --git a/dist/icons/controller/single_joycon_left_midnight.png b/dist/icons/controller/single_joycon_left_midnight.png new file mode 100644 index 0000000000000000000000000000000000000000..34a485c81d103cfa2ca7516fe4267f6db708afda GIT binary patch literal 24405 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 literal 0 HcmV?d00001 diff --git a/dist/icons/controller/single_joycon_left_vertical_midnight.png b/dist/icons/controller/single_joycon_left_vertical_midnight.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc578216da9e2790961e267cdb1ccbeaf7841cf GIT binary patch literal 23681 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 literal 0 HcmV?d00001 diff --git a/dist/icons/controller/single_joycon_right.png b/dist/icons/controller/single_joycon_right.png new file mode 100644 index 0000000000000000000000000000000000000000..8d29173f663d7f8217cda6f6b25b6ab9ff05d9df GIT binary patch literal 28320 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

    C+}Gx$&*H%Pn->s;K2<%#I08DoU$_4&44z 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 C>_7_u literal 0 HcmV?d00001 diff --git a/dist/icons/controller/single_joycon_right_midnight.png b/dist/icons/controller/single_joycon_right_midnight.png new file mode 100644 index 0000000000000000000000000000000000000000..89afe022d9652aa256e045d18a6a5aaa48e3ff54 GIT binary patch literal 27006 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 KpUXO@geCw!Kl-u& literal 0 HcmV?d00001 diff --git a/dist/icons/controller/single_joycon_right_vertical.png b/dist/icons/controller/single_joycon_right_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..4d7d06547c669e52c3c7dfbce9171c94ad69b35c GIT binary patch literal 27655 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 literal 0 HcmV?d00001 diff --git a/dist/icons/controller/single_joycon_right_vertical_dark.png b/dist/icons/controller/single_joycon_right_vertical_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..9a6eb3013f300055659a06ec911aca5695b79a23 GIT binary patch literal 27729 zcmeAS@N?(olHy`uVBq!ia0y~yV4T3fz-Yk1#=yWZbFsP-0|Ns~v6E*A2L}g74M$1` z0|NtRfk$L90|Va?5N4dJ%_q&kz#v)T8c`CQpH@mmtT}V z`<;yx1A_vCr;B4q#hf>HD`P^Q@3sGMzWCfs<1;*m_q|t8SfsHd-?Jyu=ghoi+cJ0E zzrAel-u+vAnX_g+n=DMdr`wC<=;lkXY7j4Ro2xn zaA6TCX`9*j{BPCIs@BbQre|u-7teeC(~hMs;qo%yn_Y{1vDc@j-c-}>YHqkC;<_>5087EvtUw*s6O~>&wb~Dd zghoVUlwG%#OxvV*kMBX$we|YHmaXyFpPm1{pzo=TqkuXAj)Utba zY)$m`fBIWXOIP#BS?PF9da~{HDp$cKFV;r!1wktny0l(=wPImqJ^e6o;j{@45~L&~ zR!mJjs&V?%a;e@Q3snl)=hgjM>9w8ppn>q5+w*?dxK4_(zqdDk{<@VbBh9ZB%U3

    cBkY!P4~)nz3GXb%+6pj$IoI;xJ~gECWZgl~( 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

    ~7(=H#h%Q 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 literal 0 HcmV?d00001 diff --git a/dist/icons/controller/single_joycon_right_vertical_midnight.png b/dist/icons/controller/single_joycon_right_vertical_midnight.png new file mode 100644 index 0000000000000000000000000000000000000000..685249b680cd62e2f363898aab2dd6b97388558e GIT binary patch literal 26354 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 NJYD@<);T3K0RX!aj2r*} literal 0 HcmV?d00001 diff --git a/dist/qt_themes/colorful_dark/icons/16x16/view-refresh.png b/dist/qt_themes/colorful_dark/icons/16x16/view-refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..d4afd76f949ff5c65e039b69ff999325bff5d7b8 GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0Vr6+oC#(CO%61_lPn64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xh zq!<_&o_o4DhFJ6-y=3Tj*g=5xLS&1}RFQ@NnRg8jL{ncym>W)bDYRYgRWn%01lSYkZB;=Q;E885kHC NJYD@<);T3K0RX!aj2r*} literal 0 HcmV?d00001 diff --git a/dist/qt_themes/colorful_dark/style.qrc b/dist/qt_themes/colorful_dark/style.qrc index 27a6cc87d3..0abcb4e83d 100644 --- a/dist/qt_themes/colorful_dark/style.qrc +++ b/dist/qt_themes/colorful_dark/style.qrc @@ -2,6 +2,7 @@ icons/index.theme icons/16x16/lock.png + icons/16x16/view-refresh.png ../colorful/icons/48x48/bad_folder.png ../colorful/icons/48x48/chip.png ../colorful/icons/48x48/folder.png diff --git a/dist/qt_themes/colorful_midnight_blue/icons/16x16/refresh.png b/dist/qt_themes/colorful_midnight_blue/icons/16x16/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..d4afd76f949ff5c65e039b69ff999325bff5d7b8 GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0Vr6+oC#(CO%61_lPn64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xh zq!<_&o_o4DhFJ6-y=3Tj*g=5xLS&1}RFQ@NnRg8jL{ncym>W)bDYRYgRWn%01lSYkZB;=Q;E885kHC NJYD@<);T3K0RX!aj2r*} literal 0 HcmV?d00001 diff --git a/dist/qt_themes/colorful_midnight_blue/icons/16x16/view-refresh.png b/dist/qt_themes/colorful_midnight_blue/icons/16x16/view-refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..d4afd76f949ff5c65e039b69ff999325bff5d7b8 GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0Vr6+oC#(CO%61_lPn64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xh zq!<_&o_o4DhFJ6-y=3Tj*g=5xLS&1}RFQ@NnRg8jL{ncym>W)bDYRYgRWn%01lSYkZB;=Q;E885kHC NJYD@<);T3K0RX!aj2r*} literal 0 HcmV?d00001 diff --git a/dist/qt_themes/colorful_midnight_blue/style.qrc b/dist/qt_themes/colorful_midnight_blue/style.qrc index fd33bc8500..bf367099a4 100644 --- a/dist/qt_themes/colorful_midnight_blue/style.qrc +++ b/dist/qt_themes/colorful_midnight_blue/style.qrc @@ -2,6 +2,7 @@ icons/index.theme icons/16x16/lock.png + icons/16x16/view-refresh.png ../colorful/icons/48x48/bad_folder.png ../colorful/icons/48x48/chip.png ../colorful/icons/48x48/folder.png diff --git a/dist/qt_themes/default/default.qrc b/dist/qt_themes/default/default.qrc index c51fdb26cc..2182f33f3a 100644 --- a/dist/qt_themes/default/default.qrc +++ b/dist/qt_themes/default/default.qrc @@ -4,6 +4,7 @@ icons/16x16/checked.png icons/16x16/failed.png icons/16x16/lock.png + icons/16x16/view-refresh.png icons/48x48/bad_folder.png icons/48x48/chip.png icons/48x48/folder.png diff --git a/dist/qt_themes/default/icons/16x16/refresh.png b/dist/qt_themes/default/icons/16x16/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..69f9474acabad4c5bbb4b8dd3f73b34b5d49d3f1 GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0Vrg+Q2bYlC?S0|SF(iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$ zQVa|Xw>(`OLo9laURv$v;wZp!;jpsfTTzD-aT_uYi6?|l=IuWpdDg$d;r^Ou>=QIN zm{=w>xF!hL95FemGt>IPwn=8ev8GpT5AWF+@-XU6qI7UR!_%>U8#%RzjZ zu*{cE^N$jy#}r<1oUhB;#}C!Kg5JY# z-fWtZAo8wR=%+l-Qo(Q9w#svom#$xUc&Jn>GYk4PRE;{XTPtjrq8^tyR?ykfq}u()z4*}Q$iB}2sVbi literal 0 HcmV?d00001 diff --git a/dist/qt_themes/default/icons/16x16/view-refresh.png b/dist/qt_themes/default/icons/16x16/view-refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..69f9474acabad4c5bbb4b8dd3f73b34b5d49d3f1 GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0Vrg+Q2bYlC?S0|SF(iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$ zQVa|Xw>(`OLo9laURv$v;wZp!;jpsfTTzD-aT_uYi6?|l=IuWpdDg$d;r^Ou>=QIN zm{=w>xF!hL95FemGt>IPwn=8ev8GpT5AWF+@-XU6qI7UR!_%>U8#%RzjZ zu*{cE^N$jy#}r<1oUhB;#}C!Kg5JY# z-fWtZAo8wR=%+l-Qo(Q9w#svom#$xUc&Jn>GYk4PRE;{XTPtjrq8^tyR?ykfq}u()z4*}Q$iB}2sVbi literal 0 HcmV?d00001 diff --git a/dist/qt_themes/default/style.qss b/dist/qt_themes/default/style.qss index 6b5953e385..5da56520b0 100644 --- a/dist/qt_themes/default/style.qss +++ b/dist/qt_themes/default/style.qss @@ -30,6 +30,66 @@ QPushButton#RendererStatusBarButton:checked { color: #e85c00; } -QPushButton#RendererStatusBarButton:!checked{ +QPushButton#RendererStatusBarButton:!checked { color: #0066ff; } + +QPushButton#buttonRefreshDevices { + min-width: 20px; + min-height: 20px; + max-width: 20px; + max-height: 20px; +} + +QCheckBox#checkboxPlayer1Connected, +QCheckBox#checkboxPlayer2Connected, +QCheckBox#checkboxPlayer3Connected, +QCheckBox#checkboxPlayer4Connected, +QCheckBox#checkboxPlayer5Connected, +QCheckBox#checkboxPlayer6Connected, +QCheckBox#checkboxPlayer7Connected, +QCheckBox#checkboxPlayer8Connected { + spacing: 0px; +} + +QCheckBox#checkboxPlayer1Connected::indicator, +QCheckBox#checkboxPlayer2Connected::indicator, +QCheckBox#checkboxPlayer3Connected::indicator, +QCheckBox#checkboxPlayer4Connected::indicator, +QCheckBox#checkboxPlayer5Connected::indicator, +QCheckBox#checkboxPlayer6Connected::indicator, +QCheckBox#checkboxPlayer7Connected::indicator, +QCheckBox#checkboxPlayer8Connected::indicator { + width: 14px; + height: 14px; +} + +QCheckBox#checkboxPlayer1Connected::indicator:checked, +QCheckBox#checkboxPlayer2Connected::indicator:checked, +QCheckBox#checkboxPlayer3Connected::indicator:checked, +QCheckBox#checkboxPlayer4Connected::indicator:checked, +QCheckBox#checkboxPlayer5Connected::indicator:checked, +QCheckBox#checkboxPlayer6Connected::indicator:checked, +QCheckBox#checkboxPlayer7Connected::indicator:checked, +QCheckBox#checkboxPlayer8Connected::indicator:checked, +QGroupBox#groupConnectedController::indicator:checked { + border-radius: 2px; + border: 1px solid black; + background: #39ff14; + image: none; +} + +QCheckBox#checkboxPlayer1Connected::indicator:unchecked, +QCheckBox#checkboxPlayer2Connected::indicator:unchecked, +QCheckBox#checkboxPlayer3Connected::indicator:unchecked, +QCheckBox#checkboxPlayer4Connected::indicator:unchecked, +QCheckBox#checkboxPlayer5Connected::indicator:unchecked, +QCheckBox#checkboxPlayer6Connected::indicator:unchecked, +QCheckBox#checkboxPlayer7Connected::indicator:unchecked, +QCheckBox#checkboxPlayer8Connected::indicator:unchecked, +QGroupBox#groupConnectedController::indicator:unchecked { + border-radius: 2px; + border: 1px solid black; + background: transparent; + image: none; +} diff --git a/dist/qt_themes/qdarkstyle/icons/16x16/refresh.png b/dist/qt_themes/qdarkstyle/icons/16x16/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..d4afd76f949ff5c65e039b69ff999325bff5d7b8 GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0Vr6+oC#(CO%61_lPn64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xh zq!<_&o_o4DhFJ6-y=3Tj*g=5xLS&1}RFQ@NnRg8jL{ncym>W)bDYRYgRWn%01lSYkZB;=Q;E885kHC NJYD@<);T3K0RX!aj2r*} literal 0 HcmV?d00001 diff --git a/dist/qt_themes/qdarkstyle/icons/16x16/view-refresh.png b/dist/qt_themes/qdarkstyle/icons/16x16/view-refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..d4afd76f949ff5c65e039b69ff999325bff5d7b8 GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0Vr6+oC#(CO%61_lPn64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xh zq!<_&o_o4DhFJ6-y=3Tj*g=5xLS&1}RFQ@NnRg8jL{ncym>W)bDYRYgRWn%01lSYkZB;=Q;E885kHC NJYD@<);T3K0RX!aj2r*} literal 0 HcmV?d00001 diff --git a/dist/qt_themes/qdarkstyle/style.qrc b/dist/qt_themes/qdarkstyle/style.qrc index c2c14c28a1..ec07ba160d 100644 --- a/dist/qt_themes/qdarkstyle/style.qrc +++ b/dist/qt_themes/qdarkstyle/style.qrc @@ -2,6 +2,7 @@ icons/index.theme icons/16x16/lock.png + icons/16x16/view-refresh.png icons/48x48/bad_folder.png icons/48x48/chip.png icons/48x48/folder.png diff --git a/dist/qt_themes/qdarkstyle/style.qss b/dist/qt_themes/qdarkstyle/style.qss index 2926a05fa9..7755426f83 100644 --- a/dist/qt_themes/qdarkstyle/style.qss +++ b/dist/qt_themes/qdarkstyle/style.qss @@ -40,8 +40,8 @@ QCheckBox:disabled { QCheckBox::indicator, QGroupBox::indicator { - width: 18px; - height: 18px; + width: 16px; + height: 16px; } QGroupBox::indicator { @@ -1237,6 +1237,7 @@ QPlainTextEdit:disabled { background-color: #2b2e31; } + QPushButton#TogglableStatusBarButton { min-width: 0px; color: #656565; @@ -1271,6 +1272,102 @@ QPushButton#RendererStatusBarButton:checked { color: #e85c00; } -QPushButton#RendererStatusBarButton:!checked{ - color: #00ccdd; +QPushButton#RendererStatusBarButton:!checked { + color: #00ccdd; +} + +QPushButton#buttonRefreshDevices { + min-width: 24px; + min-height: 24px; + max-width: 24px; + max-height: 24px; + padding: 0px 0px; +} + +QCheckBox#checkboxPlayer1Connected, +QCheckBox#checkboxPlayer2Connected, +QCheckBox#checkboxPlayer3Connected, +QCheckBox#checkboxPlayer4Connected, +QCheckBox#checkboxPlayer5Connected, +QCheckBox#checkboxPlayer6Connected, +QCheckBox#checkboxPlayer7Connected, +QCheckBox#checkboxPlayer8Connected { + spacing: 0px; +} + +QCheckBox#checkboxPlayer1Connected::indicator, +QCheckBox#checkboxPlayer2Connected::indicator, +QCheckBox#checkboxPlayer3Connected::indicator, +QCheckBox#checkboxPlayer4Connected::indicator, +QCheckBox#checkboxPlayer5Connected::indicator, +QCheckBox#checkboxPlayer6Connected::indicator, +QCheckBox#checkboxPlayer7Connected::indicator, +QCheckBox#checkboxPlayer8Connected::indicator { + width: 14px; + height: 14px; +} + +QCheckBox#checkboxPlayer1Connected::indicator:checked, +QCheckBox#checkboxPlayer2Connected::indicator:checked, +QCheckBox#checkboxPlayer3Connected::indicator:checked, +QCheckBox#checkboxPlayer4Connected::indicator:checked, +QCheckBox#checkboxPlayer5Connected::indicator:checked, +QCheckBox#checkboxPlayer6Connected::indicator:checked, +QCheckBox#checkboxPlayer7Connected::indicator:checked, +QCheckBox#checkboxPlayer8Connected::indicator:checked, +QGroupBox#groupConnectedController::indicator:checked { + border-radius: 2px; + border: 1px solid #929192; + background: #39ff14; + image: none; +} + +QCheckBox#checkboxPlayer1Connected::indicator:unchecked, +QCheckBox#checkboxPlayer2Connected::indicator:unchecked, +QCheckBox#checkboxPlayer3Connected::indicator:unchecked, +QCheckBox#checkboxPlayer4Connected::indicator:unchecked, +QCheckBox#checkboxPlayer5Connected::indicator:unchecked, +QCheckBox#checkboxPlayer6Connected::indicator:unchecked, +QCheckBox#checkboxPlayer7Connected::indicator:unchecked, +QCheckBox#checkboxPlayer8Connected::indicator:unchecked, +QGroupBox#groupConnectedController::indicator:unchecked { + border-radius: 2px; + border: 1px solid #929192; + background: transparent; + image: none; +} + +QSpinBox#spinboxLStickRange, +QSpinBox#spinboxRStickRange { + padding: 4px 0px 5px 0px; + min-width: 63px; +} + +QSpinBox#vibrationSpin { + padding: 4px 0px 5px 0px; + min-width: 63px; +} + +QSpinBox#spinboxLStickRange:up-button, +QSpinBox#spinboxRStickRange:up-button, +QSpinBox#vibrationSpin:up-button { + left: -2px; +} + +QSpinBox#spinboxLStickRange:down-button, +QSpinBox#spinboxRStickRange:down-button, +QSpinBox#vibrationSpin:down-button { + right: -1px; +} + +QGroupBox#motionGroup::indicator, +QGroupBox#vibrationGroup::indicator { + margin-left: 0px; +} + +QGroupBox#motionGroup::title, +QGroupBox#vibrationGroup::title { + spacing: 2px; + padding-left: 1px; + padding-right: 1px; } diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/refresh.png b/dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..d4afd76f949ff5c65e039b69ff999325bff5d7b8 GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0Vr6+oC#(CO%61_lPn64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xh zq!<_&o_o4DhFJ6-y=3Tj*g=5xLS&1}RFQ@NnRg8jL{ncym>W)bDYRYgRWn%01lSYkZB;=Q;E885kHC NJYD@<);T3K0RX!aj2r*} literal 0 HcmV?d00001 diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/view-refresh.png b/dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/view-refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..d4afd76f949ff5c65e039b69ff999325bff5d7b8 GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zI14-?iy0Vr6+oC#(CO%61_lPn64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xh zq!<_&o_o4DhFJ6-y=3Tj*g=5xLS&1}RFQ@NnRg8jL{ncym>W)bDYRYgRWn%01lSYkZB;=Q;E885kHC NJYD@<);T3K0RX!aj2r*} literal 0 HcmV?d00001 diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc b/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc index 1b7686f15d..616aace739 100644 --- a/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc +++ b/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc @@ -2,6 +2,7 @@ icons/index.theme icons/16x16/lock.png + icons/16x16/view-refresh.png icons/48x48/bad_folder.png icons/48x48/chip.png icons/48x48/folder.png diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/style.qss b/dist/qt_themes/qdarkstyle_midnight_blue/style.qss index 9c24b0d076..0ecdf271e6 100644 --- a/dist/qt_themes/qdarkstyle_midnight_blue/style.qss +++ b/dist/qt_themes/qdarkstyle_midnight_blue/style.qss @@ -236,21 +236,19 @@ https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qgroupbox --------------------------------------------------------------------------- */ QGroupBox { - font-weight: bold; - border: 1px solid #32414B; - border-radius: 4px; - padding: 4px; - margin-top: 16px; + font-weight: bold; + border: 1px solid #32414B; + border-radius: 4px; + margin-top: 12px; + padding: 4px; } QGroupBox::title { - subcontrol-origin: margin; - subcontrol-position: top left; - left: 3px; - padding-left: 3px; - padding-right: 5px; - padding-top: 8px; - padding-bottom: 16px; + subcontrol-origin: margin; + subcontrol-position: top left; + padding-left: 3px; + padding-right: 5px; + padding-top: 4px; } QGroupBox::indicator { @@ -2172,3 +2170,121 @@ PlotWidget { /* Fix cut labels in plots #134 */ padding: 0px; } + + +QPushButton#TogglableStatusBarButton { + min-width: 0px; + color: #656565; + border: 1px solid transparent; + background-color: transparent; + padding: 0px 3px 0px 3px; + text-align: center; +} + +QPushButton#TogglableStatusBarButton:checked { + color: #ffffff; +} + +QPushButton#TogglableStatusBarButton:hover { + border: 1px solid #76797C; +} + +QPushButton#RendererStatusBarButton { + min-width: 0px; + color: #656565; + border: 1px solid transparent; + background-color: transparent; + padding: 0px 3px 0px 3px; + text-align: center; +} + +QPushButton#RendererStatusBarButton:hover { + border: 1px solid #76797C; +} + +QPushButton#RendererStatusBarButton:checked { + color: #e85c00; +} + +QPushButton#RendererStatusBarButton:!checked { + color: #00ccdd; +} + +QPushButton#buttonRefreshDevices { + min-width: 20px; + min-height: 20px; + max-width: 20px; + max-height: 20px; + padding: 0px 0px; +} + + +QCheckBox#checkboxPlayer1Connected, +QCheckBox#checkboxPlayer2Connected, +QCheckBox#checkboxPlayer3Connected, +QCheckBox#checkboxPlayer4Connected, +QCheckBox#checkboxPlayer5Connected, +QCheckBox#checkboxPlayer6Connected, +QCheckBox#checkboxPlayer7Connected, +QCheckBox#checkboxPlayer8Connected { + spacing: 0px; +} + +QCheckBox#checkboxPlayer1Connected::indicator, +QCheckBox#checkboxPlayer2Connected::indicator, +QCheckBox#checkboxPlayer3Connected::indicator, +QCheckBox#checkboxPlayer4Connected::indicator, +QCheckBox#checkboxPlayer5Connected::indicator, +QCheckBox#checkboxPlayer6Connected::indicator, +QCheckBox#checkboxPlayer7Connected::indicator, +QCheckBox#checkboxPlayer8Connected::indicator { + width: 14px; + height: 14px; +} + +QCheckBox#checkboxPlayer1Connected::indicator:checked, +QCheckBox#checkboxPlayer2Connected::indicator:checked, +QCheckBox#checkboxPlayer3Connected::indicator:checked, +QCheckBox#checkboxPlayer4Connected::indicator:checked, +QCheckBox#checkboxPlayer5Connected::indicator:checked, +QCheckBox#checkboxPlayer6Connected::indicator:checked, +QCheckBox#checkboxPlayer7Connected::indicator:checked, +QCheckBox#checkboxPlayer8Connected::indicator:checked, +QGroupBox#groupConnectedController::indicator:checked { + border-radius: 2px; + border: 1px solid #929192; + background: #39ff14; + image: none; +} + +QCheckBox#checkboxPlayer1Connected::indicator:unchecked, +QCheckBox#checkboxPlayer2Connected::indicator:unchecked, +QCheckBox#checkboxPlayer3Connected::indicator:unchecked, +QCheckBox#checkboxPlayer4Connected::indicator:unchecked, +QCheckBox#checkboxPlayer5Connected::indicator:unchecked, +QCheckBox#checkboxPlayer6Connected::indicator:unchecked, +QCheckBox#checkboxPlayer7Connected::indicator:unchecked, +QCheckBox#checkboxPlayer8Connected::indicator:unchecked, +QGroupBox#groupConnectedController::indicator:unchecked { + border-radius: 2px; + border: 1px solid #929192; + background: transparent; + image: none; +} + +QSpinBox#spinboxLStickRange, +QSpinBox#spinboxRStickRange { + min-width: 53px; +} + +QGroupBox#motionGroup::indicator, +QGroupBox#vibrationGroup::indicator { + margin-left: 0px; +} + +QGroupBox#motionGroup::title, +QGroupBox#vibrationGroup::title { +spacing: 2px; + padding-left: 1px; + padding-right: 1px; +} diff --git a/src/common/param_package.h b/src/common/param_package.h index c8a70bfa95..c13e454790 100644 --- a/src/common/param_package.h +++ b/src/common/param_package.h @@ -19,7 +19,7 @@ public: explicit ParamPackage(const std::string& serialized); ParamPackage(std::initializer_list list); ParamPackage(const ParamPackage& other) = default; - ParamPackage(ParamPackage&& other) = default; + ParamPackage(ParamPackage&& other) noexcept = default; ParamPackage& operator=(const ParamPackage& other) = default; ParamPackage& operator=(ParamPackage&& other) = default; diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp index 0e7794dc7b..82e11b1694 100644 --- a/src/core/hle/service/hid/controllers/npad.cpp +++ b/src/core/hle/service/hid/controllers/npad.cpp @@ -24,6 +24,7 @@ constexpr s32 HID_JOYSTICK_MAX = 0x7fff; constexpr std::size_t NPAD_OFFSET = 0x9A00; constexpr u32 BATTERY_FULL = 2; constexpr u32 MAX_NPAD_ID = 7; +constexpr std::size_t HANDHELD_INDEX = 8; constexpr std::array npad_id_list{ 0, 1, 2, 3, 4, 5, 6, 7, NPAD_HANDHELD, NPAD_UNKNOWN, }; @@ -33,19 +34,41 @@ enum class JoystickId : std::size_t { Joystick_Right, }; -static Controller_NPad::NPadControllerType MapSettingsTypeToNPad(Settings::ControllerType type) { +Controller_NPad::NPadControllerType Controller_NPad::MapSettingsTypeToNPad( + Settings::ControllerType type) { switch (type) { case Settings::ControllerType::ProController: - return Controller_NPad::NPadControllerType::ProController; - case Settings::ControllerType::DualJoycon: - return Controller_NPad::NPadControllerType::JoyDual; + return NPadControllerType::ProController; + case Settings::ControllerType::DualJoyconDetached: + return NPadControllerType::JoyDual; case Settings::ControllerType::LeftJoycon: - return Controller_NPad::NPadControllerType::JoyLeft; + return NPadControllerType::JoyLeft; case Settings::ControllerType::RightJoycon: - return Controller_NPad::NPadControllerType::JoyRight; + return NPadControllerType::JoyRight; + case Settings::ControllerType::Handheld: + return NPadControllerType::Handheld; default: UNREACHABLE(); - return Controller_NPad::NPadControllerType::JoyDual; + return NPadControllerType::ProController; + } +} + +Settings::ControllerType Controller_NPad::MapNPadToSettingsType( + Controller_NPad::NPadControllerType type) { + switch (type) { + case NPadControllerType::ProController: + return Settings::ControllerType::ProController; + case NPadControllerType::JoyDual: + return Settings::ControllerType::DualJoyconDetached; + case NPadControllerType::JoyLeft: + return Settings::ControllerType::LeftJoycon; + case NPadControllerType::JoyRight: + return Settings::ControllerType::RightJoycon; + case NPadControllerType::Handheld: + return Settings::ControllerType::Handheld; + default: + UNREACHABLE(); + return Settings::ControllerType::ProController; } } @@ -60,9 +83,9 @@ std::size_t Controller_NPad::NPadIdToIndex(u32 npad_id) { case 6: case 7: return npad_id; - case 8: + case HANDHELD_INDEX: case NPAD_HANDHELD: - return 8; + return HANDHELD_INDEX; case 9: case NPAD_UNKNOWN: return 9; @@ -83,7 +106,7 @@ u32 Controller_NPad::IndexToNPad(std::size_t index) { case 6: case 7: return static_cast(index); - case 8: + case HANDHELD_INDEX: return NPAD_HANDHELD; case 9: return NPAD_UNKNOWN; @@ -96,25 +119,35 @@ u32 Controller_NPad::IndexToNPad(std::size_t index) { Controller_NPad::Controller_NPad(Core::System& system) : ControllerBase(system), system(system) {} Controller_NPad::~Controller_NPad() = default; -void Controller_NPad::InitNewlyAddedControler(std::size_t controller_idx) { +void Controller_NPad::InitNewlyAddedController(std::size_t controller_idx) { const auto controller_type = connected_controllers[controller_idx].type; auto& controller = shared_memory_entries[controller_idx]; if (controller_type == NPadControllerType::None) { + styleset_changed_events[controller_idx].writable->Signal(); return; } controller.joy_styles.raw = 0; // Zero out controller.device_type.raw = 0; + controller.properties.raw = 0; switch (controller_type) { case NPadControllerType::None: UNREACHABLE(); break; - case NPadControllerType::Handheld: - controller.joy_styles.handheld.Assign(1); - controller.device_type.handheld.Assign(1); - controller.pad_assignment = NPadAssignments::Dual; + case NPadControllerType::ProController: + controller.joy_styles.pro_controller.Assign(1); + controller.device_type.pro_controller.Assign(1); controller.properties.is_vertical.Assign(1); controller.properties.use_plus.Assign(1); controller.properties.use_minus.Assign(1); + controller.pad_assignment = NPadAssignments::Single; + break; + case NPadControllerType::Handheld: + controller.joy_styles.handheld.Assign(1); + controller.device_type.handheld.Assign(1); + controller.properties.is_vertical.Assign(1); + controller.properties.use_plus.Assign(1); + controller.properties.use_minus.Assign(1); + controller.pad_assignment = NPadAssignments::Dual; break; case NPadControllerType::JoyDual: controller.joy_styles.joycon_dual.Assign(1); @@ -144,14 +177,6 @@ void Controller_NPad::InitNewlyAddedControler(std::size_t controller_idx) { controller.device_type.pokeball.Assign(1); controller.pad_assignment = NPadAssignments::Single; break; - case NPadControllerType::ProController: - controller.joy_styles.pro_controller.Assign(1); - controller.device_type.pro_controller.Assign(1); - controller.properties.is_vertical.Assign(1); - controller.properties.use_plus.Assign(1); - controller.properties.use_minus.Assign(1); - controller.pad_assignment = NPadAssignments::Single; - break; } controller.single_color_error = ColorReadError::ReadOk; @@ -192,36 +217,25 @@ void Controller_NPad::OnInit() { style.pokeball.Assign(1); } - std::transform( - Settings::values.players.begin(), Settings::values.players.end(), - connected_controllers.begin(), [](const Settings::PlayerInput& player) { - return ControllerHolder{MapSettingsTypeToNPad(player.type), player.connected}; - }); - - std::stable_partition(connected_controllers.begin(), connected_controllers.begin() + 8, - [](const ControllerHolder& holder) { return holder.is_connected; }); + std::transform(Settings::values.players.begin(), Settings::values.players.end(), + connected_controllers.begin(), [](const Settings::PlayerInput& player) { + return ControllerHolder{MapSettingsTypeToNPad(player.controller_type), + player.connected}; + }); // Account for handheld - if (connected_controllers[8].is_connected) - connected_controllers[8].type = NPadControllerType::Handheld; + if (connected_controllers[HANDHELD_INDEX].is_connected) { + connected_controllers[HANDHELD_INDEX].type = NPadControllerType::Handheld; + } supported_npad_id_types.resize(npad_id_list.size()); std::memcpy(supported_npad_id_types.data(), npad_id_list.data(), npad_id_list.size() * sizeof(u32)); - // Add a default dual joycon controller if none are present. - if (std::none_of(connected_controllers.begin(), connected_controllers.end(), - [](const ControllerHolder& controller) { return controller.is_connected; })) { - supported_npad_id_types.resize(npad_id_list.size()); - std::memcpy(supported_npad_id_types.data(), npad_id_list.data(), - npad_id_list.size() * sizeof(u32)); - AddNewController(NPadControllerType::JoyDual); - } - for (std::size_t i = 0; i < connected_controllers.size(); ++i) { const auto& controller = connected_controllers[i]; if (controller.is_connected) { - AddNewControllerAt(controller.type, IndexToNPad(i)); + AddNewControllerAt(controller.type, i); } } } @@ -309,8 +323,9 @@ void Controller_NPad::RequestPadStateUpdate(u32 npad_id) { void Controller_NPad::OnUpdate(const Core::Timing::CoreTiming& core_timing, u8* data, std::size_t data_len) { - if (!IsControllerActivated()) + if (!IsControllerActivated()) { return; + } for (std::size_t i = 0; i < shared_memory_entries.size(); i++) { auto& npad = shared_memory_entries[i]; const std::array controller_npads{&npad.main_controller_states, @@ -365,6 +380,14 @@ void Controller_NPad::OnUpdate(const Core::Timing::CoreTiming& core_timing, u8* case NPadControllerType::None: UNREACHABLE(); break; + case NPadControllerType::ProController: + main_controller.connection_status.raw = 0; + main_controller.connection_status.IsConnected.Assign(1); + main_controller.connection_status.IsWired.Assign(1); + main_controller.pad.pad_states.raw = pad_state.pad_states.raw; + main_controller.pad.l_stick = pad_state.l_stick; + main_controller.pad.r_stick = pad_state.r_stick; + break; case NPadControllerType::Handheld: handheld_entry.connection_status.raw = 0; handheld_entry.connection_status.IsWired.Assign(1); @@ -378,22 +401,19 @@ void Controller_NPad::OnUpdate(const Core::Timing::CoreTiming& core_timing, u8* break; case NPadControllerType::JoyDual: dual_entry.connection_status.raw = 0; - + dual_entry.connection_status.IsConnected.Assign(1); dual_entry.connection_status.IsLeftJoyConnected.Assign(1); dual_entry.connection_status.IsRightJoyConnected.Assign(1); - dual_entry.connection_status.IsConnected.Assign(1); - - libnx_entry.connection_status.IsLeftJoyConnected.Assign(1); - libnx_entry.connection_status.IsRightJoyConnected.Assign(1); - libnx_entry.connection_status.IsConnected.Assign(1); - dual_entry.pad.pad_states.raw = pad_state.pad_states.raw; dual_entry.pad.l_stick = pad_state.l_stick; dual_entry.pad.r_stick = pad_state.r_stick; + + libnx_entry.connection_status.IsConnected.Assign(1); + libnx_entry.connection_status.IsLeftJoyConnected.Assign(1); + libnx_entry.connection_status.IsRightJoyConnected.Assign(1); break; case NPadControllerType::JoyLeft: left_entry.connection_status.raw = 0; - left_entry.connection_status.IsConnected.Assign(1); left_entry.pad.pad_states.raw = pad_state.pad_states.raw; left_entry.pad.l_stick = pad_state.l_stick; @@ -401,7 +421,6 @@ void Controller_NPad::OnUpdate(const Core::Timing::CoreTiming& core_timing, u8* break; case NPadControllerType::JoyRight: right_entry.connection_status.raw = 0; - right_entry.connection_status.IsConnected.Assign(1); right_entry.pad.pad_states.raw = pad_state.pad_states.raw; right_entry.pad.l_stick = pad_state.l_stick; @@ -409,23 +428,12 @@ void Controller_NPad::OnUpdate(const Core::Timing::CoreTiming& core_timing, u8* break; case NPadControllerType::Pokeball: pokeball_entry.connection_status.raw = 0; - pokeball_entry.connection_status.IsConnected.Assign(1); pokeball_entry.connection_status.IsWired.Assign(1); - pokeball_entry.pad.pad_states.raw = pad_state.pad_states.raw; pokeball_entry.pad.l_stick = pad_state.l_stick; pokeball_entry.pad.r_stick = pad_state.r_stick; break; - case NPadControllerType::ProController: - main_controller.connection_status.raw = 0; - - main_controller.connection_status.IsConnected.Assign(1); - main_controller.connection_status.IsWired.Assign(1); - main_controller.pad.pad_states.raw = pad_state.pad_states.raw; - main_controller.pad.l_stick = pad_state.l_stick; - main_controller.pad.r_stick = pad_state.r_stick; - break; } // LibNX exclusively uses this section, so we always update it since LibNX doesn't activate @@ -453,26 +461,6 @@ void Controller_NPad::SetSupportedNPadIdTypes(u8* data, std::size_t length) { supported_npad_id_types.clear(); supported_npad_id_types.resize(length / sizeof(u32)); std::memcpy(supported_npad_id_types.data(), data, length); - for (std::size_t i = 0; i < connected_controllers.size(); i++) { - auto& controller = connected_controllers[i]; - if (!controller.is_connected) { - continue; - } - const auto requested_controller = - i <= MAX_NPAD_ID ? MapSettingsTypeToNPad(Settings::values.players[i].type) - : NPadControllerType::Handheld; - if (!IsControllerSupported(requested_controller)) { - const auto is_handheld = requested_controller == NPadControllerType::Handheld; - if (is_handheld) { - controller.type = NPadControllerType::None; - controller.is_connected = false; - AddNewController(requested_controller); - } else { - controller.type = requested_controller; - InitNewlyAddedControler(i); - } - } - } } void Controller_NPad::GetSupportedNpadIdTypes(u32* data, std::size_t max_length) { @@ -504,7 +492,7 @@ void Controller_NPad::VibrateController(const std::vector& controller_ids, const std::vector& vibrations) { LOG_DEBUG(Service_HID, "(STUBBED) called"); - if (!can_controllers_vibrate) { + if (!Settings::values.vibration_enabled || !can_controllers_vibrate) { return; } for (std::size_t i = 0; i < controller_ids.size(); i++) { @@ -517,8 +505,6 @@ void Controller_NPad::VibrateController(const std::vector& controller_ids, } std::shared_ptr Controller_NPad::GetStyleSetChangedEvent(u32 npad_id) const { - // TODO(ogniK): Figure out the best time to signal this event. This event seems that it should - // be signalled at least once, and signaled after a new controller is connected? const auto& styleset_event = styleset_changed_events[NPadIdToIndex(npad_id)]; return styleset_event.readable; } @@ -527,43 +513,43 @@ Controller_NPad::Vibration Controller_NPad::GetLastVibration() const { return last_processed_vibration; } -void Controller_NPad::AddNewController(NPadControllerType controller) { - controller = DecideBestController(controller); - if (controller == NPadControllerType::Handheld) { - connected_controllers[8] = {controller, true}; - InitNewlyAddedControler(8); - return; - } - const auto pos = - std::find_if(connected_controllers.begin(), connected_controllers.end() - 2, - [](const ControllerHolder& holder) { return !holder.is_connected; }); - if (pos == connected_controllers.end() - 2) { - LOG_ERROR(Service_HID, "Cannot connect any more controllers!"); - return; - } - const auto controller_id = std::distance(connected_controllers.begin(), pos); - connected_controllers[controller_id] = {controller, true}; - InitNewlyAddedControler(controller_id); +void Controller_NPad::AddNewControllerAt(NPadControllerType controller, std::size_t npad_index) { + UpdateControllerAt(controller, npad_index, true); } -void Controller_NPad::AddNewControllerAt(NPadControllerType controller, u32 npad_id) { - controller = DecideBestController(controller); - if (controller == NPadControllerType::Handheld) { - connected_controllers[NPadIdToIndex(NPAD_HANDHELD)] = {controller, true}; - InitNewlyAddedControler(NPadIdToIndex(NPAD_HANDHELD)); +void Controller_NPad::UpdateControllerAt(NPadControllerType controller, std::size_t npad_index, + bool connected) { + if (!connected) { + DisconnectNPad(IndexToNPad(npad_index)); return; } - connected_controllers[NPadIdToIndex(npad_id)] = {controller, true}; - InitNewlyAddedControler(NPadIdToIndex(npad_id)); -} + if (controller == NPadControllerType::Handheld) { + Settings::values.players[HANDHELD_INDEX].controller_type = + MapNPadToSettingsType(controller); + Settings::values.players[HANDHELD_INDEX].connected = true; + connected_controllers[HANDHELD_INDEX] = {controller, true}; + InitNewlyAddedController(HANDHELD_INDEX); + return; + } -void Controller_NPad::ConnectNPad(u32 npad_id) { - connected_controllers[NPadIdToIndex(npad_id)].is_connected = true; + Settings::values.players[npad_index].controller_type = MapNPadToSettingsType(controller); + Settings::values.players[npad_index].connected = true; + connected_controllers[npad_index] = {controller, true}; + InitNewlyAddedController(npad_index); } void Controller_NPad::DisconnectNPad(u32 npad_id) { - connected_controllers[NPadIdToIndex(npad_id)].is_connected = false; + const auto npad_index = NPadIdToIndex(npad_id); + connected_controllers[npad_index].is_connected = false; + Settings::values.players[npad_index].connected = false; + + auto& controller = shared_memory_entries[npad_index]; + controller.joy_styles.raw = 0; // Zero out + controller.device_type.raw = 0; + controller.properties.raw = 0; + + styleset_changed_events[npad_index].writable->Signal(); } void Controller_NPad::SetGyroscopeZeroDriftMode(GyroscopeZeroDriftMode drift_mode) { @@ -599,8 +585,8 @@ bool Controller_NPad::SwapNpadAssignment(u32 npad_id_1, u32 npad_id_2) { std::swap(connected_controllers[npad_index_1].type, connected_controllers[npad_index_2].type); - InitNewlyAddedControler(npad_index_1); - InitNewlyAddedControler(npad_index_2); + AddNewControllerAt(connected_controllers[npad_index_1].type, npad_index_1); + AddNewControllerAt(connected_controllers[npad_index_2].type, npad_index_2); return true; } @@ -628,7 +614,6 @@ Controller_NPad::LedPattern Controller_NPad::GetLedPattern(u32 npad_id) { case 7: return LedPattern{0, 1, 1, 0}; default: - UNIMPLEMENTED_MSG("Unhandled npad_id {}", npad_id); return LedPattern{0, 0, 0, 0}; } } diff --git a/src/core/hle/service/hid/controllers/npad.h b/src/core/hle/service/hid/controllers/npad.h index 5d4c58a431..75ce5b7313 100644 --- a/src/core/hle/service/hid/controllers/npad.h +++ b/src/core/hle/service/hid/controllers/npad.h @@ -118,10 +118,11 @@ public: std::shared_ptr GetStyleSetChangedEvent(u32 npad_id) const; Vibration GetLastVibration() const; - void AddNewController(NPadControllerType controller); - void AddNewControllerAt(NPadControllerType controller, u32 npad_id); + // Adds a new controller at an index. + void AddNewControllerAt(NPadControllerType controller, std::size_t npad_index); + // Adds a new controller at an index with connection status. + void UpdateControllerAt(NPadControllerType controller, std::size_t npad_index, bool connected); - void ConnectNPad(u32 npad_id); void DisconnectNPad(u32 npad_id); void SetGyroscopeZeroDriftMode(GyroscopeZeroDriftMode drift_mode); GyroscopeZeroDriftMode GetGyroscopeZeroDriftMode() const; @@ -141,6 +142,8 @@ public: // Specifically for cheat engine and other features. u32 GetAndResetPressState(); + static Controller_NPad::NPadControllerType MapSettingsTypeToNPad(Settings::ControllerType type); + static Settings::ControllerType MapNPadToSettingsType(Controller_NPad::NPadControllerType type); static std::size_t NPadIdToIndex(u32 npad_id); static u32 IndexToNPad(std::size_t index); @@ -309,7 +312,7 @@ private: bool is_connected; }; - void InitNewlyAddedControler(std::size_t controller_idx); + void InitNewlyAddedController(std::size_t controller_idx); bool IsControllerSupported(NPadControllerType controller) const; NPadControllerType DecideBestController(NPadControllerType priority) const; void RequestPadStateUpdate(u32 npad_id); diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index 1e95b75806..33416b5dd3 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp @@ -38,11 +38,9 @@ namespace Service::HID { // Updating period for each HID device. -// TODO(ogniK): Find actual polling rate of hid -constexpr auto pad_update_ns = std::chrono::nanoseconds{1000000000 / 66}; -[[maybe_unused]] constexpr auto accelerometer_update_ns = - std::chrono::nanoseconds{1000000000 / 100}; -[[maybe_unused]] constexpr auto gyroscope_update_ticks = std::chrono::nanoseconds{1000000000 / 100}; +// HID is polled every 15ms, this value was derived from +// https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering#joy-con-status-data-packet +constexpr auto pad_update_ns = std::chrono::nanoseconds{15 * 1000 * 1000}; // (15ms, 66.6Hz) constexpr std::size_t SHARED_MEMORY_SIZE = 0x40000; IAppletResource::IAppletResource(Core::System& system) @@ -845,8 +843,7 @@ void Hid::CreateActiveVibrationDeviceList(Kernel::HLERequestContext& ctx) { void Hid::PermitVibration(Kernel::HLERequestContext& ctx) { IPC::RequestParser rp{ctx}; const auto can_vibrate{rp.Pop()}; - applet_resource->GetController(HidController::NPad) - .SetVibrationEnabled(can_vibrate); + Settings::values.vibration_enabled = can_vibrate; LOG_DEBUG(Service_HID, "called, can_vibrate={}", can_vibrate); @@ -859,8 +856,7 @@ void Hid::IsVibrationPermitted(Kernel::HLERequestContext& ctx) { IPC::ResponseBuilder rb{ctx, 3}; rb.Push(RESULT_SUCCESS); - rb.Push( - applet_resource->GetController(HidController::NPad).IsVibrationEnabled()); + rb.Push(Settings::values.vibration_enabled); } void Hid::ActivateConsoleSixAxisSensor(Kernel::HLERequestContext& ctx) { diff --git a/src/core/settings.cpp b/src/core/settings.cpp index d328fb8b77..28d3f9099c 100644 --- a/src/core/settings.cpp +++ b/src/core/settings.cpp @@ -13,56 +13,6 @@ namespace Settings { -namespace NativeButton { -const std::array mapping = {{ - "button_a", - "button_b", - "button_x", - "button_y", - "button_lstick", - "button_rstick", - "button_l", - "button_r", - "button_zl", - "button_zr", - "button_plus", - "button_minus", - "button_dleft", - "button_dup", - "button_dright", - "button_ddown", - "button_lstick_left", - "button_lstick_up", - "button_lstick_right", - "button_lstick_down", - "button_rstick_left", - "button_rstick_up", - "button_rstick_right", - "button_rstick_down", - "button_sl", - "button_sr", - "button_home", - "button_screenshot", -}}; -} - -namespace NativeAnalog { -const std::array mapping = {{ - "lstick", - "rstick", -}}; -} - -namespace NativeMouseButton { -const std::array mapping = {{ - "left", - "right", - "middle", - "forward", - "back", -}}; -} - Values values = {}; bool configuring_global = true; diff --git a/src/core/settings.h b/src/core/settings.h index 3681b5e9df..732c6a8948 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -12,340 +12,10 @@ #include #include #include "common/common_types.h" +#include "input_common/settings.h" namespace Settings { -namespace NativeButton { -enum Values { - A, - B, - X, - Y, - LStick, - RStick, - L, - R, - ZL, - ZR, - Plus, - Minus, - - DLeft, - DUp, - DRight, - DDown, - - LStick_Left, - LStick_Up, - LStick_Right, - LStick_Down, - - RStick_Left, - RStick_Up, - RStick_Right, - RStick_Down, - - SL, - SR, - - Home, - Screenshot, - - NumButtons, -}; - -constexpr int BUTTON_HID_BEGIN = A; -constexpr int BUTTON_NS_BEGIN = Home; - -constexpr int BUTTON_HID_END = BUTTON_NS_BEGIN; -constexpr int BUTTON_NS_END = NumButtons; - -constexpr int NUM_BUTTONS_HID = BUTTON_HID_END - BUTTON_HID_BEGIN; -constexpr int NUM_BUTTONS_NS = BUTTON_NS_END - BUTTON_NS_BEGIN; - -extern const std::array mapping; - -} // namespace NativeButton - -namespace NativeAnalog { -enum Values { - LStick, - RStick, - - NumAnalogs, -}; - -constexpr int STICK_HID_BEGIN = LStick; -constexpr int STICK_HID_END = NumAnalogs; -constexpr int NUM_STICKS_HID = NumAnalogs; - -extern const std::array mapping; -} // namespace NativeAnalog - -namespace NativeMouseButton { -enum Values { - Left, - Right, - Middle, - Forward, - Back, - - NumMouseButtons, -}; - -constexpr int MOUSE_HID_BEGIN = Left; -constexpr int MOUSE_HID_END = NumMouseButtons; -constexpr int NUM_MOUSE_HID = NumMouseButtons; - -extern const std::array mapping; -} // namespace NativeMouseButton - -namespace NativeKeyboard { -enum Keys { - None, - Error, - - A = 4, - B, - C, - D, - E, - F, - G, - H, - I, - J, - K, - L, - M, - N, - O, - P, - Q, - R, - S, - T, - U, - V, - W, - X, - Y, - Z, - N1, - N2, - N3, - N4, - N5, - N6, - N7, - N8, - N9, - N0, - Enter, - Escape, - Backspace, - Tab, - Space, - Minus, - Equal, - LeftBrace, - RightBrace, - Backslash, - Tilde, - Semicolon, - Apostrophe, - Grave, - Comma, - Dot, - Slash, - CapsLockKey, - - F1, - F2, - F3, - F4, - F5, - F6, - F7, - F8, - F9, - F10, - F11, - F12, - - SystemRequest, - ScrollLockKey, - Pause, - Insert, - Home, - PageUp, - Delete, - End, - PageDown, - Right, - Left, - Down, - Up, - - NumLockKey, - KPSlash, - KPAsterisk, - KPMinus, - KPPlus, - KPEnter, - KP1, - KP2, - KP3, - KP4, - KP5, - KP6, - KP7, - KP8, - KP9, - KP0, - KPDot, - - Key102, - Compose, - Power, - KPEqual, - - F13, - F14, - F15, - F16, - F17, - F18, - F19, - F20, - F21, - F22, - F23, - F24, - - Open, - Help, - Properties, - Front, - Stop, - Repeat, - Undo, - Cut, - Copy, - Paste, - Find, - Mute, - VolumeUp, - VolumeDown, - CapsLockActive, - NumLockActive, - ScrollLockActive, - KPComma, - - KPLeftParenthesis, - KPRightParenthesis, - - LeftControlKey = 0xE0, - LeftShiftKey, - LeftAltKey, - LeftMetaKey, - RightControlKey, - RightShiftKey, - RightAltKey, - RightMetaKey, - - MediaPlayPause, - MediaStopCD, - MediaPrevious, - MediaNext, - MediaEject, - MediaVolumeUp, - MediaVolumeDown, - MediaMute, - MediaWebsite, - MediaBack, - MediaForward, - MediaStop, - MediaFind, - MediaScrollUp, - MediaScrollDown, - MediaEdit, - MediaSleep, - MediaCoffee, - MediaRefresh, - MediaCalculator, - - NumKeyboardKeys, -}; - -static_assert(NumKeyboardKeys == 0xFC, "Incorrect number of keyboard keys."); - -enum Modifiers { - LeftControl, - LeftShift, - LeftAlt, - LeftMeta, - RightControl, - RightShift, - RightAlt, - RightMeta, - CapsLock, - ScrollLock, - NumLock, - - NumKeyboardMods, -}; - -constexpr int KEYBOARD_KEYS_HID_BEGIN = None; -constexpr int KEYBOARD_KEYS_HID_END = NumKeyboardKeys; -constexpr int NUM_KEYBOARD_KEYS_HID = NumKeyboardKeys; - -constexpr int KEYBOARD_MODS_HID_BEGIN = LeftControl; -constexpr int KEYBOARD_MODS_HID_END = NumKeyboardMods; -constexpr int NUM_KEYBOARD_MODS_HID = NumKeyboardMods; - -} // namespace NativeKeyboard - -using ButtonsRaw = std::array; -using AnalogsRaw = std::array; -using MouseButtonsRaw = std::array; -using KeyboardKeysRaw = std::array; -using KeyboardModsRaw = std::array; - -constexpr u32 JOYCON_BODY_NEON_RED = 0xFF3C28; -constexpr u32 JOYCON_BUTTONS_NEON_RED = 0x1E0A0A; -constexpr u32 JOYCON_BODY_NEON_BLUE = 0x0AB9E6; -constexpr u32 JOYCON_BUTTONS_NEON_BLUE = 0x001E1E; - -enum class ControllerType { - ProController, - DualJoycon, - RightJoycon, - LeftJoycon, -}; - -struct PlayerInput { - bool connected; - ControllerType type; - ButtonsRaw buttons; - AnalogsRaw analogs; - - u32 body_color_right; - u32 button_color_right; - u32 body_color_left; - u32 button_color_left; -}; - -struct TouchscreenInput { - bool enabled; - std::string device; - - u32 finger; - u32 diameter_x; - u32 diameter_y; - u32 rotation_angle; -}; - enum class RendererBackend { OpenGL = 0, Vulkan = 1, @@ -461,6 +131,8 @@ struct Values { // Controls std::array players; + bool use_docked_mode; + bool mouse_enabled; std::string mouse_device; MouseButtonsRaw mouse_buttons; @@ -474,14 +146,15 @@ struct Values { AnalogsRaw debug_pad_analogs; std::string motion_device; + + bool vibration_enabled; + TouchscreenInput touchscreen; std::atomic_bool is_device_reload_pending{true}; std::string udp_input_address; u16 udp_input_port; u8 udp_pad_index; - bool use_docked_mode; - // Data Storage bool use_virtual_sd; bool gamecard_inserted; diff --git a/src/input_common/CMakeLists.txt b/src/input_common/CMakeLists.txt index 317c25bade..56267c8a81 100644 --- a/src/input_common/CMakeLists.txt +++ b/src/input_common/CMakeLists.txt @@ -7,6 +7,8 @@ add_library(input_common STATIC main.h motion_emu.cpp motion_emu.h + settings.cpp + settings.h gcadapter/gc_adapter.cpp gcadapter/gc_adapter.h gcadapter/gc_poller.cpp diff --git a/src/input_common/gcadapter/gc_poller.cpp b/src/input_common/gcadapter/gc_poller.cpp index b346fdf8e9..85342bbe79 100644 --- a/src/input_common/gcadapter/gc_poller.cpp +++ b/src/input_common/gcadapter/gc_poller.cpp @@ -232,7 +232,7 @@ std::unique_ptr GCAnalogFactory::Create(const Common::Param const int port = params.Get("port", 0); const int axis_x = params.Get("axis_x", 0); const int axis_y = params.Get("axis_y", 1); - const float deadzone = std::clamp(params.Get("deadzone", 0.0f), 0.0f, .99f); + const float deadzone = std::clamp(params.Get("deadzone", 0.0f), 0.0f, 1.0f); const float range = std::clamp(params.Get("range", 1.0f), 0.50f, 1.50f); return std::make_unique(port, axis_x, axis_y, deadzone, adapter.get(), range); diff --git a/src/input_common/main.cpp b/src/input_common/main.cpp index b9d5d0ec35..b8725e9af3 100644 --- a/src/input_common/main.cpp +++ b/src/input_common/main.cpp @@ -44,7 +44,6 @@ void Init() { #ifdef HAVE_SDL2 sdl = SDL::Init(); #endif - udp = CemuhookUDP::Init(); } @@ -103,6 +102,55 @@ std::string GenerateAnalogParamFromKeys(int key_up, int key_down, int key_left, return circle_pad_param.Serialize(); } +std::vector GetInputDevices() { + std::vector devices = { + Common::ParamPackage{{"display", "Any"}, {"class", "any"}}, + Common::ParamPackage{{"display", "Keyboard"}, {"class", "key"}}, + }; +#ifdef HAVE_SDL2 + auto sdl_devices = sdl->GetInputDevices(); + devices.insert(devices.end(), sdl_devices.begin(), sdl_devices.end()); +#endif + auto udp_devices = udp->GetInputDevices(); + devices.insert(devices.end(), udp_devices.begin(), udp_devices.end()); + return devices; +} + +std::unordered_map GetButtonMappingForDevice( + const Common::ParamPackage& params) { + std::unordered_map mappings{}; + if (!params.Has("class") || params.Get("class", "") == "any") { + return mappings; + } + if (params.Get("class", "") == "key") { + // TODO consider returning the SDL key codes for the default keybindings + } +#ifdef HAVE_SDL2 + if (params.Get("class", "") == "sdl") { + return sdl->GetButtonMappingForDevice(params); + } +#endif + return mappings; +} + +std::unordered_map GetAnalogMappingForDevice( + const Common::ParamPackage& params) { + std::unordered_map mappings{}; + if (!params.Has("class") || params.Get("class", "") == "any") { + return mappings; + } + if (params.Get("class", "") == "key") { + // TODO consider returning the SDL key codes for the default keybindings + return mappings; + } +#ifdef HAVE_SDL2 + if (params.Get("class", "") == "sdl") { + return sdl->GetAnalogMappingForDevice(params); + } +#endif + return mappings; +} + namespace Polling { std::vector> GetPollers(DeviceType type) { diff --git a/src/input_common/main.h b/src/input_common/main.h index 0e32856f6d..ebc7f95333 100644 --- a/src/input_common/main.h +++ b/src/input_common/main.h @@ -6,8 +6,10 @@ #include #include +#include #include #include "input_common/gcadapter/gc_poller.h" +#include "input_common/settings.h" namespace Common { class ParamPackage; @@ -42,9 +44,27 @@ std::string GenerateKeyboardParam(int key_code); std::string GenerateAnalogParamFromKeys(int key_up, int key_down, int key_left, int key_right, int key_modifier, float modifier_scale); +/** + * Return a list of available input devices that this Factory can create a new device with. + * Each returned Parampackage should have a `display` field used for display, a class field for + * backends to determine if this backend is meant to service the request and any other information + * needed to identify this in the backend later. + */ +std::vector GetInputDevices(); + +/** + * Given a ParamPackage for a Device returned from `GetInputDevices`, attempt to get the default + * mapping for the device. This is currently only implemented for the sdl backend devices. + */ +using ButtonMapping = std::unordered_map; +using AnalogMapping = std::unordered_map; + +ButtonMapping GetButtonMappingForDevice(const Common::ParamPackage&); +AnalogMapping GetAnalogMappingForDevice(const Common::ParamPackage&); + namespace Polling { -enum class DeviceType { Button, Analog }; +enum class DeviceType { Button, AnalogPreferred }; /** * A class that can be used to get inputs from an input device like controllers without having to @@ -54,7 +74,9 @@ class DevicePoller { public: virtual ~DevicePoller() = default; /// Setup and start polling for inputs, should be called before GetNextInput - virtual void Start() = 0; + /// If a device_id is provided, events should be filtered to only include events from this + /// device id + virtual void Start(std::string device_id = "") = 0; /// Stop polling virtual void Stop() = 0; /** diff --git a/src/input_common/sdl/sdl.h b/src/input_common/sdl/sdl.h index 5306daa700..f3554be9a3 100644 --- a/src/input_common/sdl/sdl.h +++ b/src/input_common/sdl/sdl.h @@ -6,6 +6,7 @@ #include #include +#include "common/param_package.h" #include "input_common/main.h" namespace InputCommon::Polling { @@ -22,14 +23,24 @@ public: /// Unregisters SDL device factories and shut them down. virtual ~State() = default; - virtual Pollers GetPollers(Polling::DeviceType type) = 0; + virtual Pollers GetPollers(Polling::DeviceType type) { + return {}; + } + + virtual std::vector GetInputDevices() { + return {}; + } + + virtual ButtonMapping GetButtonMappingForDevice(const Common::ParamPackage&) { + return {}; + } + virtual AnalogMapping GetAnalogMappingForDevice(const Common::ParamPackage&) { + return {}; + } }; class NullState : public State { public: - Pollers GetPollers(Polling::DeviceType type) override { - return {}; - } }; std::unique_ptr Init(); diff --git a/src/input_common/sdl/sdl_impl.cpp b/src/input_common/sdl/sdl_impl.cpp index d76c279d32..35a9d45ec7 100644 --- a/src/input_common/sdl/sdl_impl.cpp +++ b/src/input_common/sdl/sdl_impl.cpp @@ -7,6 +7,8 @@ #include #include #include +#include +#include #include #include #include @@ -23,7 +25,8 @@ namespace InputCommon::SDL { -static std::string GetGUID(SDL_Joystick* joystick) { +namespace { +std::string GetGUID(SDL_Joystick* joystick) { const SDL_JoystickGUID guid = SDL_JoystickGetGUID(joystick); char guid_str[33]; SDL_JoystickGetGUIDString(guid, guid_str, sizeof(guid_str)); @@ -31,7 +34,8 @@ static std::string GetGUID(SDL_Joystick* joystick) { } /// Creates a ParamPackage from an SDL_Event that can directly be used to create a ButtonDevice -static Common::ParamPackage SDLEventToButtonParamPackage(SDLState& state, const SDL_Event& event); +Common::ParamPackage SDLEventToButtonParamPackage(SDLState& state, const SDL_Event& event); +} // Anonymous namespace static int SDLEventWatcher(void* user_data, SDL_Event* event) { auto* const sdl_state = static_cast(user_data); @@ -48,8 +52,10 @@ static int SDLEventWatcher(void* user_data, SDL_Event* event) { class SDLJoystick { public: - SDLJoystick(std::string guid_, int port_, SDL_Joystick* joystick) - : guid{std::move(guid_)}, port{port_}, sdl_joystick{joystick, &SDL_JoystickClose} {} + SDLJoystick(std::string guid_, int port_, SDL_Joystick* joystick, + SDL_GameController* gamecontroller) + : guid{std::move(guid_)}, port{port_}, sdl_joystick{joystick, &SDL_JoystickClose}, + sdl_controller{gamecontroller, &SDL_GameControllerClose} {} void SetButton(int button, bool value) { std::lock_guard lock{mutex}; @@ -115,10 +121,15 @@ public: return sdl_joystick.get(); } - void SetSDLJoystick(SDL_Joystick* joystick) { + void SetSDLJoystick(SDL_Joystick* joystick, SDL_GameController* controller) { + sdl_controller.reset(controller); sdl_joystick.reset(joystick); } + SDL_GameController* GetSDLGameController() const { + return sdl_controller.get(); + } + private: struct State { std::unordered_map buttons; @@ -128,6 +139,7 @@ private: std::string guid; int port; std::unique_ptr sdl_joystick; + std::unique_ptr sdl_controller; mutable std::mutex mutex; }; @@ -136,18 +148,19 @@ std::shared_ptr SDLState::GetSDLJoystickByGUID(const std::string& g const auto it = joystick_map.find(guid); if (it != joystick_map.end()) { while (it->second.size() <= static_cast(port)) { - auto joystick = - std::make_shared(guid, static_cast(it->second.size()), nullptr); + auto joystick = std::make_shared(guid, static_cast(it->second.size()), + nullptr, nullptr); it->second.emplace_back(std::move(joystick)); } return it->second[port]; } - auto joystick = std::make_shared(guid, 0, nullptr); + auto joystick = std::make_shared(guid, 0, nullptr, nullptr); return joystick_map[guid].emplace_back(std::move(joystick)); } std::shared_ptr SDLState::GetSDLJoystickBySDLID(SDL_JoystickID sdl_id) { auto sdl_joystick = SDL_JoystickFromInstanceID(sdl_id); + auto sdl_controller = SDL_GameControllerFromInstanceID(sdl_id); const std::string guid = GetGUID(sdl_joystick); std::lock_guard lock{joystick_map_mutex}; @@ -171,23 +184,27 @@ std::shared_ptr SDLState::GetSDLJoystickBySDLID(SDL_JoystickID sdl_ }); if (nullptr_it != map_it->second.end()) { // ... and map it - (*nullptr_it)->SetSDLJoystick(sdl_joystick); + (*nullptr_it)->SetSDLJoystick(sdl_joystick, sdl_controller); return *nullptr_it; } // There is no SDLJoystick without a mapped SDL_Joystick // Create a new SDLJoystick const int port = static_cast(map_it->second.size()); - auto joystick = std::make_shared(guid, port, sdl_joystick); + auto joystick = std::make_shared(guid, port, sdl_joystick, sdl_controller); return map_it->second.emplace_back(std::move(joystick)); } - auto joystick = std::make_shared(guid, 0, sdl_joystick); + auto joystick = std::make_shared(guid, 0, sdl_joystick, sdl_controller); return joystick_map[guid].emplace_back(std::move(joystick)); } void SDLState::InitJoystick(int joystick_index) { SDL_Joystick* sdl_joystick = SDL_JoystickOpen(joystick_index); + SDL_GameController* sdl_gamecontroller = nullptr; + if (SDL_IsGameController(joystick_index)) { + sdl_gamecontroller = SDL_GameControllerOpen(joystick_index); + } if (!sdl_joystick) { LOG_ERROR(Input, "failed to open joystick {}", joystick_index); return; @@ -196,7 +213,7 @@ void SDLState::InitJoystick(int joystick_index) { std::lock_guard lock{joystick_map_mutex}; if (joystick_map.find(guid) == joystick_map.end()) { - auto joystick = std::make_shared(guid, 0, sdl_joystick); + auto joystick = std::make_shared(guid, 0, sdl_joystick, sdl_gamecontroller); joystick_map[guid].emplace_back(std::move(joystick)); return; } @@ -205,11 +222,11 @@ void SDLState::InitJoystick(int joystick_index) { joystick_guid_list.begin(), joystick_guid_list.end(), [](const std::shared_ptr& joystick) { return !joystick->GetSDLJoystick(); }); if (it != joystick_guid_list.end()) { - (*it)->SetSDLJoystick(sdl_joystick); + (*it)->SetSDLJoystick(sdl_joystick, sdl_gamecontroller); return; } const int port = static_cast(joystick_guid_list.size()); - auto joystick = std::make_shared(guid, port, sdl_joystick); + auto joystick = std::make_shared(guid, port, sdl_joystick, sdl_gamecontroller); joystick_guid_list.emplace_back(std::move(joystick)); } @@ -231,7 +248,7 @@ void SDLState::CloseJoystick(SDL_Joystick* sdl_joystick) { // Destruct SDL_Joystick outside the lock guard because SDL can internally call the // event callback which locks the mutex again. - joystick->SetSDLJoystick(nullptr); + joystick->SetSDLJoystick(nullptr, nullptr); } void SDLState::HandleGameControllerEvent(const SDL_Event& event) { @@ -460,7 +477,7 @@ public: const int port = params.Get("port", 0); const int axis_x = params.Get("axis_x", 0); const int axis_y = params.Get("axis_y", 1); - const float deadzone = std::clamp(params.Get("deadzone", 0.0f), 0.0f, .99f); + const float deadzone = std::clamp(params.Get("deadzone", 0.0f), 0.0f, 1.0f); const float range = std::clamp(params.Get("range", 1.0f), 0.50f, 1.50f); auto joystick = state.GetSDLJoystickByGUID(guid, port); @@ -476,8 +493,10 @@ private: SDLState::SDLState() { using namespace Input; - RegisterFactory("sdl", std::make_shared(*this)); - RegisterFactory("sdl", std::make_shared(*this)); + analog_factory = std::make_shared(*this); + button_factory = std::make_shared(*this); + RegisterFactory("sdl", analog_factory); + RegisterFactory("sdl", button_factory); // If the frontend is going to manage the event loop, then we dont start one here start_thread = !SDL_WasInit(SDL_INIT_JOYSTICK); @@ -485,6 +504,7 @@ SDLState::SDLState() { LOG_CRITICAL(Input, "SDL_Init(SDL_INIT_JOYSTICK) failed with: {}", SDL_GetError()); return; } + has_gamecontroller = SDL_InitSubSystem(SDL_INIT_GAMECONTROLLER); if (SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, "1") == SDL_FALSE) { LOG_ERROR(Input, "Failed to set hint for background events with: {}", SDL_GetError()); } @@ -497,7 +517,7 @@ SDLState::SDLState() { using namespace std::chrono_literals; while (initialized) { SDL_PumpEvents(); - std::this_thread::sleep_for(10ms); + std::this_thread::sleep_for(5ms); } }); } @@ -523,65 +543,233 @@ SDLState::~SDLState() { } } -static Common::ParamPackage SDLEventToButtonParamPackage(SDLState& state, const SDL_Event& event) { +std::vector SDLState::GetInputDevices() { + std::scoped_lock lock(joystick_map_mutex); + std::vector devices = {}; + for (const auto& [key, value] : joystick_map) { + for (const auto& joystick : value) { + auto controller = joystick->GetSDLGameController(); + auto joy = joystick->GetSDLJoystick(); + if (controller) { + std::string name = + fmt::format("{} {}", SDL_GameControllerName(controller), joystick->GetPort()); + devices.emplace_back(Common::ParamPackage{ + {"class", "sdl"}, + {"display", name}, + {"guid", joystick->GetGUID()}, + {"port", std::to_string(joystick->GetPort())}, + }); + } else if (joy) { + std::string name = fmt::format("{} {}", SDL_JoystickName(joy), joystick->GetPort()); + devices.emplace_back(Common::ParamPackage{ + {"class", "sdl"}, + {"display", name}, + {"guid", joystick->GetGUID()}, + {"port", std::to_string(joystick->GetPort())}, + }); + } + } + } + return devices; +} + +namespace { +Common::ParamPackage BuildAnalogParamPackageForButton(int port, std::string guid, u8 axis, + float value = 0.1) { Common::ParamPackage params({{"engine", "sdl"}}); + params.Set("port", port); + params.Set("guid", guid); + params.Set("axis", axis); + if (value > 0) { + params.Set("direction", "+"); + params.Set("threshold", "0.5"); + } else { + params.Set("direction", "-"); + params.Set("threshold", "-0.5"); + } + return params; +} + +Common::ParamPackage BuildButtonParamPackageForButton(int port, std::string guid, u8 button) { + Common::ParamPackage params({{"engine", "sdl"}}); + params.Set("port", port); + params.Set("guid", guid); + params.Set("button", button); + return params; +} + +Common::ParamPackage BuildHatParamPackageForButton(int port, std::string guid, u8 hat, u8 value) { + Common::ParamPackage params({{"engine", "sdl"}}); + + params.Set("port", port); + params.Set("guid", guid); + params.Set("hat", hat); + switch (value) { + case SDL_HAT_UP: + params.Set("direction", "up"); + break; + case SDL_HAT_DOWN: + params.Set("direction", "down"); + break; + case SDL_HAT_LEFT: + params.Set("direction", "left"); + break; + case SDL_HAT_RIGHT: + params.Set("direction", "right"); + break; + default: + return {}; + } + return params; +} + +Common::ParamPackage SDLEventToButtonParamPackage(SDLState& state, const SDL_Event& event) { + Common::ParamPackage params{}; switch (event.type) { case SDL_JOYAXISMOTION: { const auto joystick = state.GetSDLJoystickBySDLID(event.jaxis.which); - params.Set("port", joystick->GetPort()); - params.Set("guid", joystick->GetGUID()); - params.Set("axis", event.jaxis.axis); - if (event.jaxis.value > 0) { - params.Set("direction", "+"); - params.Set("threshold", "0.5"); - } else { - params.Set("direction", "-"); - params.Set("threshold", "-0.5"); - } + params = BuildAnalogParamPackageForButton(joystick->GetPort(), joystick->GetGUID(), + event.jaxis.axis, event.jaxis.value); break; } case SDL_JOYBUTTONUP: { const auto joystick = state.GetSDLJoystickBySDLID(event.jbutton.which); - params.Set("port", joystick->GetPort()); - params.Set("guid", joystick->GetGUID()); - params.Set("button", event.jbutton.button); + params = BuildButtonParamPackageForButton(joystick->GetPort(), joystick->GetGUID(), + event.jbutton.button); break; } case SDL_JOYHATMOTION: { const auto joystick = state.GetSDLJoystickBySDLID(event.jhat.which); - params.Set("port", joystick->GetPort()); - params.Set("guid", joystick->GetGUID()); - params.Set("hat", event.jhat.hat); - switch (event.jhat.value) { - case SDL_HAT_UP: - params.Set("direction", "up"); - break; - case SDL_HAT_DOWN: - params.Set("direction", "down"); - break; - case SDL_HAT_LEFT: - params.Set("direction", "left"); - break; - case SDL_HAT_RIGHT: - params.Set("direction", "right"); - break; - default: - return {}; - } + params = BuildHatParamPackageForButton(joystick->GetPort(), joystick->GetGUID(), + event.jhat.hat, event.jhat.value); break; } } return params; } -namespace Polling { +Common::ParamPackage BuildParamPackageForBinding(int port, const std::string& guid, + const SDL_GameControllerButtonBind& binding) { + Common::ParamPackage out{}; + switch (binding.bindType) { + case SDL_CONTROLLER_BINDTYPE_AXIS: + out = BuildAnalogParamPackageForButton(port, guid, binding.value.axis); + break; + case SDL_CONTROLLER_BINDTYPE_BUTTON: + out = BuildButtonParamPackageForButton(port, guid, binding.value.button); + break; + case SDL_CONTROLLER_BINDTYPE_HAT: + out = BuildHatParamPackageForButton(port, guid, binding.value.hat.hat, + binding.value.hat.hat_mask); + break; + default: + break; + } + return out; +}; +Common::ParamPackage BuildParamPackageForAnalog(int port, const std::string& guid, int axis_x, + int axis_y) { + Common::ParamPackage params{}; + params.Set("engine", "sdl"); + params.Set("port", port); + params.Set("guid", guid); + params.Set("axis_x", axis_x); + params.Set("axis_y", axis_y); + return params; +} +} // Anonymous namespace + +ButtonMapping SDLState::GetButtonMappingForDevice(const Common::ParamPackage& params) { + // This list is missing ZL/ZR since those are not considered buttons in SDL GameController. + // We will add those afterwards + // This list also excludes Screenshot since theres not really a mapping for that + std::unordered_map + switch_to_sdl_button = { + {Settings::NativeButton::A, SDL_CONTROLLER_BUTTON_B}, + {Settings::NativeButton::B, SDL_CONTROLLER_BUTTON_A}, + {Settings::NativeButton::X, SDL_CONTROLLER_BUTTON_Y}, + {Settings::NativeButton::Y, SDL_CONTROLLER_BUTTON_X}, + {Settings::NativeButton::LStick, SDL_CONTROLLER_BUTTON_LEFTSTICK}, + {Settings::NativeButton::RStick, SDL_CONTROLLER_BUTTON_RIGHTSTICK}, + {Settings::NativeButton::L, SDL_CONTROLLER_BUTTON_LEFTSHOULDER}, + {Settings::NativeButton::R, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER}, + {Settings::NativeButton::Plus, SDL_CONTROLLER_BUTTON_START}, + {Settings::NativeButton::Minus, SDL_CONTROLLER_BUTTON_BACK}, + {Settings::NativeButton::DLeft, SDL_CONTROLLER_BUTTON_DPAD_LEFT}, + {Settings::NativeButton::DUp, SDL_CONTROLLER_BUTTON_DPAD_UP}, + {Settings::NativeButton::DRight, SDL_CONTROLLER_BUTTON_DPAD_RIGHT}, + {Settings::NativeButton::DDown, SDL_CONTROLLER_BUTTON_DPAD_DOWN}, + {Settings::NativeButton::SL, SDL_CONTROLLER_BUTTON_LEFTSHOULDER}, + {Settings::NativeButton::SR, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER}, + {Settings::NativeButton::Home, SDL_CONTROLLER_BUTTON_GUIDE}, + }; + if (!params.Has("guid") || !params.Has("port")) { + return {}; + } + const auto joystick = GetSDLJoystickByGUID(params.Get("guid", ""), params.Get("port", 0)); + auto controller = joystick->GetSDLGameController(); + if (!controller) { + return {}; + } + + ButtonMapping mapping{}; + for (const auto& [switch_button, sdl_button] : switch_to_sdl_button) { + const auto& binding = SDL_GameControllerGetBindForButton(controller, sdl_button); + mapping[switch_button] = + BuildParamPackageForBinding(joystick->GetPort(), joystick->GetGUID(), binding); + } + + // Add the missing bindings for ZL/ZR + std::unordered_map switch_to_sdl_axis = + { + {Settings::NativeButton::ZL, SDL_CONTROLLER_AXIS_TRIGGERLEFT}, + {Settings::NativeButton::ZR, SDL_CONTROLLER_AXIS_TRIGGERRIGHT}, + }; + for (const auto& [switch_button, sdl_axis] : switch_to_sdl_axis) { + const auto& binding = SDL_GameControllerGetBindForAxis(controller, sdl_axis); + mapping[switch_button] = + BuildParamPackageForBinding(joystick->GetPort(), joystick->GetGUID(), binding); + } + + return mapping; +} + +AnalogMapping SDLState::GetAnalogMappingForDevice(const Common::ParamPackage& params) { + if (!params.Has("guid") || !params.Has("port")) { + return {}; + } + const auto joystick = GetSDLJoystickByGUID(params.Get("guid", ""), params.Get("port", 0)); + auto controller = joystick->GetSDLGameController(); + if (!controller) { + return {}; + } + + AnalogMapping mapping = {}; + const auto& binding_left_x = + SDL_GameControllerGetBindForAxis(controller, SDL_CONTROLLER_AXIS_LEFTX); + const auto& binding_left_y = + SDL_GameControllerGetBindForAxis(controller, SDL_CONTROLLER_AXIS_LEFTY); + mapping[Settings::NativeAnalog::LStick] = + BuildParamPackageForAnalog(joystick->GetPort(), joystick->GetGUID(), + binding_left_x.value.axis, binding_left_y.value.axis); + const auto& binding_right_x = + SDL_GameControllerGetBindForAxis(controller, SDL_CONTROLLER_AXIS_RIGHTX); + const auto& binding_right_y = + SDL_GameControllerGetBindForAxis(controller, SDL_CONTROLLER_AXIS_RIGHTY); + mapping[Settings::NativeAnalog::RStick] = + BuildParamPackageForAnalog(joystick->GetPort(), joystick->GetGUID(), + binding_right_x.value.axis, binding_right_y.value.axis); + return mapping; +} + +namespace Polling { class SDLPoller : public InputCommon::Polling::DevicePoller { public: explicit SDLPoller(SDLState& state_) : state(state_) {} - void Start() override { + void Start(std::string device_id) override { state.event_queue.Clear(); state.polling = true; } @@ -601,71 +789,106 @@ public: Common::ParamPackage GetNextInput() override { SDL_Event event; while (state.event_queue.Pop(event)) { - switch (event.type) { - case SDL_JOYAXISMOTION: - if (std::abs(event.jaxis.value / 32767.0) < 0.5) { - break; - } - [[fallthrough]]; - case SDL_JOYBUTTONUP: - case SDL_JOYHATMOTION: - return SDLEventToButtonParamPackage(state, event); + const auto package = FromEvent(event); + if (package) { + return *package; } } return {}; } + std::optional FromEvent(const SDL_Event& event) { + switch (event.type) { + case SDL_JOYAXISMOTION: + if (std::abs(event.jaxis.value / 32767.0) < 0.5) { + break; + } + [[fallthrough]]; + case SDL_JOYBUTTONUP: + case SDL_JOYHATMOTION: + return {SDLEventToButtonParamPackage(state, event)}; + } + return {}; + } }; -class SDLAnalogPoller final : public SDLPoller { +/** + * Attempts to match the press to a controller joy axis (left/right stick) and if a match + * isn't found, checks if the event matches anything from SDLButtonPoller and uses that + * instead + */ +class SDLAnalogPreferredPoller final : public SDLPoller { public: - explicit SDLAnalogPoller(SDLState& state_) : SDLPoller(state_) {} - - void Start() override { - SDLPoller::Start(); + explicit SDLAnalogPreferredPoller(SDLState& state_) + : SDLPoller(state_), button_poller(state_) {} + void Start(std::string device_id) override { + SDLPoller::Start(device_id); + // Load the game controller // Reset stored axes analog_x_axis = -1; analog_y_axis = -1; - analog_axes_joystick = -1; } Common::ParamPackage GetNextInput() override { SDL_Event event; while (state.event_queue.Pop(event)) { - if (event.type != SDL_JOYAXISMOTION || std::abs(event.jaxis.value / 32767.0) < 0.5) { + // Filter out axis events that are below a threshold + if (event.type == SDL_JOYAXISMOTION && std::abs(event.jaxis.value / 32767.0) < 0.5) { continue; } - // An analog device needs two axes, so we need to store the axis for later and wait for - // a second SDL event. The axes also must be from the same joystick. - const int axis = event.jaxis.axis; - if (analog_x_axis == -1) { - analog_x_axis = axis; - analog_axes_joystick = event.jaxis.which; - } else if (analog_y_axis == -1 && analog_x_axis != axis && - analog_axes_joystick == event.jaxis.which) { - analog_y_axis = axis; + // Simplify controller config by testing if game controller support is enabled. + if (event.type == SDL_JOYAXISMOTION) { + const auto axis = event.jaxis.axis; + const auto joystick = state.GetSDLJoystickBySDLID(event.jaxis.which); + const auto controller = joystick->GetSDLGameController(); + if (controller) { + const auto axis_left_x = + SDL_GameControllerGetBindForAxis(controller, SDL_CONTROLLER_AXIS_LEFTX) + .value.axis; + const auto axis_left_y = + SDL_GameControllerGetBindForAxis(controller, SDL_CONTROLLER_AXIS_LEFTY) + .value.axis; + const auto axis_right_x = + SDL_GameControllerGetBindForAxis(controller, SDL_CONTROLLER_AXIS_RIGHTX) + .value.axis; + const auto axis_right_y = + SDL_GameControllerGetBindForAxis(controller, SDL_CONTROLLER_AXIS_RIGHTY) + .value.axis; + + if (axis == axis_left_x || axis == axis_left_y) { + analog_x_axis = axis_left_x; + analog_y_axis = axis_left_y; + break; + } else if (axis == axis_right_x || axis == axis_right_y) { + analog_x_axis = axis_right_x; + analog_y_axis = axis_right_y; + break; + } + } + } + + // If the press wasn't accepted as a joy axis, check for a button press + auto button_press = button_poller.FromEvent(event); + if (button_press) { + return *button_press; } } - Common::ParamPackage params; + if (analog_x_axis != -1 && analog_y_axis != -1) { const auto joystick = state.GetSDLJoystickBySDLID(event.jaxis.which); - params.Set("engine", "sdl"); - params.Set("port", joystick->GetPort()); - params.Set("guid", joystick->GetGUID()); - params.Set("axis_x", analog_x_axis); - params.Set("axis_y", analog_y_axis); + auto params = BuildParamPackageForAnalog(joystick->GetPort(), joystick->GetGUID(), + analog_x_axis, analog_y_axis); analog_x_axis = -1; analog_y_axis = -1; - analog_axes_joystick = -1; return params; } - return params; + return {}; } private: int analog_x_axis = -1; int analog_y_axis = -1; - SDL_JoystickID analog_axes_joystick = -1; + SDLButtonPoller button_poller; }; } // namespace Polling @@ -673,8 +896,8 @@ SDLState::Pollers SDLState::GetPollers(InputCommon::Polling::DeviceType type) { Pollers pollers; switch (type) { - case InputCommon::Polling::DeviceType::Analog: - pollers.emplace_back(std::make_unique(*this)); + case InputCommon::Polling::DeviceType::AnalogPreferred: + pollers.emplace_back(std::make_unique(*this)); break; case InputCommon::Polling::DeviceType::Button: pollers.emplace_back(std::make_unique(*this)); diff --git a/src/input_common/sdl/sdl_impl.h b/src/input_common/sdl/sdl_impl.h index 606a32c5b4..bd19ba61de 100644 --- a/src/input_common/sdl/sdl_impl.h +++ b/src/input_common/sdl/sdl_impl.h @@ -50,6 +50,11 @@ public: std::atomic polling = false; Common::SPSCQueue event_queue; + std::vector GetInputDevices() override; + + ButtonMapping GetButtonMappingForDevice(const Common::ParamPackage& params) override; + AnalogMapping GetAnalogMappingForDevice(const Common::ParamPackage& params) override; + private: void InitJoystick(int joystick_index); void CloseJoystick(SDL_Joystick* sdl_joystick); @@ -57,6 +62,9 @@ private: /// Needs to be called before SDL_QuitSubSystem. void CloseJoysticks(); + // Set to true if SDL supports game controller subsystem + bool has_gamecontroller = false; + /// Map of GUID of a list of corresponding virtual Joysticks std::unordered_map>> joystick_map; std::mutex joystick_map_mutex; diff --git a/src/input_common/settings.cpp b/src/input_common/settings.cpp new file mode 100644 index 0000000000..80c719cf45 --- /dev/null +++ b/src/input_common/settings.cpp @@ -0,0 +1,33 @@ +// Copyright 2020 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "input_common/settings.h" + +namespace Settings { +namespace NativeButton { +const std::array mapping = {{ + "button_a", "button_b", "button_x", "button_y", "button_lstick", + "button_rstick", "button_l", "button_r", "button_zl", "button_zr", + "button_plus", "button_minus", "button_dleft", "button_dup", "button_dright", + "button_ddown", "button_sl", "button_sr", "button_home", "button_screenshot", +}}; +} + +namespace NativeAnalog { +const std::array mapping = {{ + "lstick", + "rstick", +}}; +} + +namespace NativeMouseButton { +const std::array mapping = {{ + "left", + "right", + "middle", + "forward", + "back", +}}; +} +} // namespace Settings diff --git a/src/input_common/settings.h b/src/input_common/settings.h new file mode 100644 index 0000000000..8e481a7fe5 --- /dev/null +++ b/src/input_common/settings.h @@ -0,0 +1,335 @@ +// Copyright 2020 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include +#include +#include "common/common_types.h" + +namespace Settings { +namespace NativeButton { +enum Values { + A, + B, + X, + Y, + LStick, + RStick, + L, + R, + ZL, + ZR, + Plus, + Minus, + + DLeft, + DUp, + DRight, + DDown, + + SL, + SR, + + Home, + Screenshot, + + NumButtons, +}; + +constexpr int BUTTON_HID_BEGIN = A; +constexpr int BUTTON_NS_BEGIN = Home; + +constexpr int BUTTON_HID_END = BUTTON_NS_BEGIN; +constexpr int BUTTON_NS_END = NumButtons; + +constexpr int NUM_BUTTONS_HID = BUTTON_HID_END - BUTTON_HID_BEGIN; +constexpr int NUM_BUTTONS_NS = BUTTON_NS_END - BUTTON_NS_BEGIN; + +extern const std::array mapping; + +} // namespace NativeButton + +namespace NativeAnalog { +enum Values { + LStick, + RStick, + + NumAnalogs, +}; + +constexpr int STICK_HID_BEGIN = LStick; +constexpr int STICK_HID_END = NumAnalogs; +constexpr int NUM_STICKS_HID = NumAnalogs; + +extern const std::array mapping; +} // namespace NativeAnalog + +namespace NativeMouseButton { +enum Values { + Left, + Right, + Middle, + Forward, + Back, + + NumMouseButtons, +}; + +constexpr int MOUSE_HID_BEGIN = Left; +constexpr int MOUSE_HID_END = NumMouseButtons; +constexpr int NUM_MOUSE_HID = NumMouseButtons; + +extern const std::array mapping; +} // namespace NativeMouseButton + +namespace NativeKeyboard { +enum Keys { + None, + Error, + + A = 4, + B, + C, + D, + E, + F, + G, + H, + I, + J, + K, + L, + M, + N, + O, + P, + Q, + R, + S, + T, + U, + V, + W, + X, + Y, + Z, + N1, + N2, + N3, + N4, + N5, + N6, + N7, + N8, + N9, + N0, + Enter, + Escape, + Backspace, + Tab, + Space, + Minus, + Equal, + LeftBrace, + RightBrace, + Backslash, + Tilde, + Semicolon, + Apostrophe, + Grave, + Comma, + Dot, + Slash, + CapsLockKey, + + F1, + F2, + F3, + F4, + F5, + F6, + F7, + F8, + F9, + F10, + F11, + F12, + + SystemRequest, + ScrollLockKey, + Pause, + Insert, + Home, + PageUp, + Delete, + End, + PageDown, + Right, + Left, + Down, + Up, + + NumLockKey, + KPSlash, + KPAsterisk, + KPMinus, + KPPlus, + KPEnter, + KP1, + KP2, + KP3, + KP4, + KP5, + KP6, + KP7, + KP8, + KP9, + KP0, + KPDot, + + Key102, + Compose, + Power, + KPEqual, + + F13, + F14, + F15, + F16, + F17, + F18, + F19, + F20, + F21, + F22, + F23, + F24, + + Open, + Help, + Properties, + Front, + Stop, + Repeat, + Undo, + Cut, + Copy, + Paste, + Find, + Mute, + VolumeUp, + VolumeDown, + CapsLockActive, + NumLockActive, + ScrollLockActive, + KPComma, + + KPLeftParenthesis, + KPRightParenthesis, + + LeftControlKey = 0xE0, + LeftShiftKey, + LeftAltKey, + LeftMetaKey, + RightControlKey, + RightShiftKey, + RightAltKey, + RightMetaKey, + + MediaPlayPause, + MediaStopCD, + MediaPrevious, + MediaNext, + MediaEject, + MediaVolumeUp, + MediaVolumeDown, + MediaMute, + MediaWebsite, + MediaBack, + MediaForward, + MediaStop, + MediaFind, + MediaScrollUp, + MediaScrollDown, + MediaEdit, + MediaSleep, + MediaCoffee, + MediaRefresh, + MediaCalculator, + + NumKeyboardKeys, +}; + +static_assert(NumKeyboardKeys == 0xFC, "Incorrect number of keyboard keys."); + +enum Modifiers { + LeftControl, + LeftShift, + LeftAlt, + LeftMeta, + RightControl, + RightShift, + RightAlt, + RightMeta, + CapsLock, + ScrollLock, + NumLock, + + NumKeyboardMods, +}; + +constexpr int KEYBOARD_KEYS_HID_BEGIN = None; +constexpr int KEYBOARD_KEYS_HID_END = NumKeyboardKeys; +constexpr int NUM_KEYBOARD_KEYS_HID = NumKeyboardKeys; + +constexpr int KEYBOARD_MODS_HID_BEGIN = LeftControl; +constexpr int KEYBOARD_MODS_HID_END = NumKeyboardMods; +constexpr int NUM_KEYBOARD_MODS_HID = NumKeyboardMods; + +} // namespace NativeKeyboard + +using ButtonsRaw = std::array; +using AnalogsRaw = std::array; +using MouseButtonsRaw = std::array; +using KeyboardKeysRaw = std::array; +using KeyboardModsRaw = std::array; + +constexpr u32 JOYCON_BODY_NEON_RED = 0xFF3C28; +constexpr u32 JOYCON_BUTTONS_NEON_RED = 0x1E0A0A; +constexpr u32 JOYCON_BODY_NEON_BLUE = 0x0AB9E6; +constexpr u32 JOYCON_BUTTONS_NEON_BLUE = 0x001E1E; + +enum class ControllerType { + ProController, + DualJoyconDetached, + LeftJoycon, + RightJoycon, + Handheld, +}; + +struct PlayerInput { + bool connected; + ControllerType controller_type; + ButtonsRaw buttons; + AnalogsRaw analogs; + std::string lstick_mod; + std::string rstick_mod; + + u32 body_color_left; + u32 body_color_right; + u32 button_color_left; + u32 button_color_right; +}; + +struct TouchscreenInput { + bool enabled; + std::string device; + + u32 finger; + u32 diameter_x; + u32 diameter_y; + u32 rotation_angle; +}; +} // namespace Settings diff --git a/src/input_common/udp/udp.cpp b/src/input_common/udp/udp.cpp index 8c6ef13949..60cf471236 100644 --- a/src/input_common/udp/udp.cpp +++ b/src/input_common/udp/udp.cpp @@ -77,10 +77,11 @@ State::State() { std::make_unique(status, Settings::values.udp_input_address, Settings::values.udp_input_port, Settings::values.udp_pad_index); - Input::RegisterFactory("cemuhookudp", - std::make_shared(status)); - Input::RegisterFactory("cemuhookudp", - std::make_shared(status)); + motion_factory = std::make_shared(status); + touch_factory = std::make_shared(status); + + Input::RegisterFactory("cemuhookudp", motion_factory); + Input::RegisterFactory("cemuhookudp", touch_factory); } State::~State() { @@ -88,6 +89,12 @@ State::~State() { Input::UnregisterFactory("cemuhookudp"); } +std::vector State::GetInputDevices() { + std::vector devices = {}; + // TODO support binding udp devices + return devices; +} + void State::ReloadUDPClient() { client->ReloadSocket(Settings::values.udp_input_address, Settings::values.udp_input_port, Settings::values.udp_pad_index); diff --git a/src/input_common/udp/udp.h b/src/input_common/udp/udp.h index 4f83f0441f..24f6e0857a 100644 --- a/src/input_common/udp/udp.h +++ b/src/input_common/udp/udp.h @@ -5,19 +5,26 @@ #pragma once #include +#include +#include "common/param_package.h" namespace InputCommon::CemuhookUDP { class Client; +class UDPMotionFactory; +class UDPTouchFactory; class State { public: State(); ~State(); void ReloadUDPClient(); + std::vector GetInputDevices(); private: std::unique_ptr client; + std::shared_ptr motion_factory; + std::shared_ptr touch_factory; }; std::unique_ptr Init(); diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt index 656096c9f8..6987e85e17 100644 --- a/src/yuzu/CMakeLists.txt +++ b/src/yuzu/CMakeLists.txt @@ -39,6 +39,9 @@ add_executable(yuzu configuration/configure_debug.cpp configuration/configure_debug.h configuration/configure_debug.ui + configuration/configure_debug_controller.cpp + configuration/configure_debug_controller.h + configuration/configure_debug_controller.ui configuration/configure_dialog.cpp configuration/configure_dialog.h configuration/configure_filesystem.cpp @@ -62,9 +65,9 @@ add_executable(yuzu configuration/configure_input_player.cpp configuration/configure_input_player.h configuration/configure_input_player.ui - configuration/configure_input_simple.cpp - configuration/configure_input_simple.h - configuration/configure_input_simple.ui + configuration/configure_input_advanced.cpp + configuration/configure_input_advanced.h + configuration/configure_input_advanced.ui configuration/configure_mouse_advanced.cpp configuration/configure_mouse_advanced.h configuration/configure_mouse_advanced.ui diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 7af974d8d3..489877be9f 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -6,7 +6,6 @@ #include #include #include "common/file_util.h" -#include "configure_input_simple.h" #include "core/hle/service/acc/profile_manager.h" #include "core/hle/service/hid/controllers/npad.h" #include "input_common/main.h" @@ -32,29 +31,29 @@ Config::~Config() { } const std::array Config::default_buttons = { - Qt::Key_A, Qt::Key_S, Qt::Key_Z, Qt::Key_X, Qt::Key_3, Qt::Key_4, Qt::Key_Q, - Qt::Key_W, Qt::Key_1, Qt::Key_2, Qt::Key_N, Qt::Key_M, Qt::Key_F, Qt::Key_T, - Qt::Key_H, Qt::Key_G, Qt::Key_Left, Qt::Key_Up, Qt::Key_Right, Qt::Key_Down, Qt::Key_J, - Qt::Key_I, Qt::Key_L, Qt::Key_K, Qt::Key_D, Qt::Key_C, Qt::Key_B, Qt::Key_V, + Qt::Key_A, Qt::Key_S, Qt::Key_Z, Qt::Key_X, Qt::Key_3, Qt::Key_4, Qt::Key_Q, + Qt::Key_W, Qt::Key_1, Qt::Key_2, Qt::Key_N, Qt::Key_M, Qt::Key_F, Qt::Key_T, + Qt::Key_H, Qt::Key_G, Qt::Key_D, Qt::Key_C, Qt::Key_B, Qt::Key_V, }; -const std::array, Settings::NativeAnalog::NumAnalogs> Config::default_analogs{{ +const std::array, Settings::NativeAnalog::NumAnalogs> Config::default_analogs{{ { Qt::Key_Up, Qt::Key_Down, Qt::Key_Left, Qt::Key_Right, - Qt::Key_E, }, { Qt::Key_I, Qt::Key_K, Qt::Key_J, Qt::Key_L, - Qt::Key_R, }, }}; +const int Config::default_lstick_mod = Qt::Key_E; +const int Config::default_rstick_mod = Qt::Key_R; + const std::array Config::default_mouse_buttons = { Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_Apostrophe, Qt::Key_Minus, Qt::Key_Equal, @@ -243,10 +242,10 @@ void Config::ReadPlayerValues() { player.connected = ReadSetting(QStringLiteral("player_%1_connected").arg(p), false).toBool(); - player.type = static_cast( + player.controller_type = static_cast( qt_config ->value(QStringLiteral("player_%1_type").arg(p), - static_cast(Settings::ControllerType::DualJoycon)) + static_cast(Settings::ControllerType::ProController)) .toUInt()); player.body_color_left = qt_config @@ -300,12 +299,6 @@ void Config::ReadPlayerValues() { } } } - - std::stable_partition( - Settings::values.players.begin(), - Settings::values.players.begin() + - Service::HID::Controller_NPad::NPadIdToIndex(Service::HID::NPAD_HANDHELD), - [](const auto& player) { return player.connected; }); } void Config::ReadDebugValues() { @@ -397,13 +390,6 @@ void Config::ReadTouchscreenValues() { ReadSetting(QStringLiteral("touchscreen_diameter_y"), 15).toUInt(); } -void Config::ApplyDefaultProfileIfInputInvalid() { - if (!std::any_of(Settings::values.players.begin(), Settings::values.players.end(), - [](const Settings::PlayerInput& in) { return in.connected; })) { - ApplyInputProfileConfiguration(UISettings::values.profile_index); - } -} - void Config::ReadAudioValues() { qt_config->beginGroup(QStringLiteral("Audio")); @@ -433,6 +419,8 @@ void Config::ReadControlValues() { ReadMouseValues(); ReadTouchscreenValues(); + Settings::values.vibration_enabled = + ReadSetting(QStringLiteral("vibration_enabled"), true).toBool(); Settings::values.motion_device = ReadSetting(QStringLiteral("motion_device"), QStringLiteral("engine:motion_emu,update_period:100,sensitivity:0.01")) @@ -501,7 +489,7 @@ void Config::ReadDataStorageValues() { Settings::values.gamecard_current_game = ReadSetting(QStringLiteral("gamecard_current_game"), false).toBool(); Settings::values.gamecard_path = - ReadSetting(QStringLiteral("gamecard_path"), QStringLiteral("")).toString().toStdString(); + ReadSetting(QStringLiteral("gamecard_path"), QString{}).toString().toStdString(); qt_config->endGroup(); } @@ -515,7 +503,7 @@ void Config::ReadDebuggingValues() { Settings::values.use_gdbstub = ReadSetting(QStringLiteral("use_gdbstub"), false).toBool(); Settings::values.gdbstub_port = ReadSetting(QStringLiteral("gdbstub_port"), 24689).toInt(); Settings::values.program_args = - ReadSetting(QStringLiteral("program_args"), QStringLiteral("")).toString().toStdString(); + ReadSetting(QStringLiteral("program_args"), QString{}).toString().toStdString(); Settings::values.dump_exefs = ReadSetting(QStringLiteral("dump_exefs"), false).toBool(); Settings::values.dump_nso = ReadSetting(QStringLiteral("dump_nso"), false).toBool(); Settings::values.reporting_services = @@ -548,8 +536,7 @@ void Config::ReadDisabledAddOnValues() { const auto d_size = qt_config->beginReadArray(QStringLiteral("disabled")); for (int j = 0; j < d_size; ++j) { qt_config->setArrayIndex(j); - out.push_back( - ReadSetting(QStringLiteral("d"), QStringLiteral("")).toString().toStdString()); + out.push_back(ReadSetting(QStringLiteral("d"), QString{}).toString().toStdString()); } qt_config->endArray(); Settings::values.disabled_addons.insert_or_assign(title_id, out); @@ -788,14 +775,11 @@ void Config::ReadUIValues() { UISettings::values.first_start = ReadSetting(QStringLiteral("firstStart"), true).toBool(); UISettings::values.callout_flags = ReadSetting(QStringLiteral("calloutFlags"), 0).toUInt(); UISettings::values.show_console = ReadSetting(QStringLiteral("showConsole"), false).toBool(); - UISettings::values.profile_index = ReadSetting(QStringLiteral("profileIndex"), 0).toUInt(); UISettings::values.pause_when_in_background = ReadSetting(QStringLiteral("pauseWhenInBackground"), false).toBool(); UISettings::values.hide_mouse = ReadSetting(QStringLiteral("hideInactiveMouse"), false).toBool(); - ApplyDefaultProfileIfInputInvalid(); - qt_config->endGroup(); } @@ -869,8 +853,9 @@ void Config::SavePlayerValues() { const auto& player = Settings::values.players[p]; WriteSetting(QStringLiteral("player_%1_connected").arg(p), player.connected, false); - WriteSetting(QStringLiteral("player_%1_type").arg(p), static_cast(player.type), - static_cast(Settings::ControllerType::DualJoycon)); + WriteSetting(QStringLiteral("player_%1_type").arg(p), + static_cast(player.controller_type), + static_cast(Settings::ControllerType::ProController)); WriteSetting(QStringLiteral("player_%1_body_color_left").arg(p), player.body_color_left, Settings::JOYCON_BODY_NEON_BLUE); @@ -990,6 +975,7 @@ void Config::SaveControlValues() { SaveMouseValues(); SaveTouchscreenValues(); + WriteSetting(QStringLiteral("vibration_enabled"), Settings::values.vibration_enabled, true); WriteSetting(QStringLiteral("motion_device"), QString::fromStdString(Settings::values.motion_device), QStringLiteral("engine:motion_emu,update_period:100,sensitivity:0.01")); @@ -1036,7 +1022,7 @@ void Config::SaveDataStorageValues() { WriteSetting(QStringLiteral("gamecard_current_game"), Settings::values.gamecard_current_game, false); WriteSetting(QStringLiteral("gamecard_path"), - QString::fromStdString(Settings::values.gamecard_path), QStringLiteral("")); + QString::fromStdString(Settings::values.gamecard_path), QString{}); qt_config->endGroup(); } @@ -1049,7 +1035,7 @@ void Config::SaveDebuggingValues() { WriteSetting(QStringLiteral("use_gdbstub"), Settings::values.use_gdbstub, false); WriteSetting(QStringLiteral("gdbstub_port"), Settings::values.gdbstub_port, 24689); WriteSetting(QStringLiteral("program_args"), - QString::fromStdString(Settings::values.program_args), QStringLiteral("")); + QString::fromStdString(Settings::values.program_args), QString{}); WriteSetting(QStringLiteral("dump_exefs"), Settings::values.dump_exefs, false); WriteSetting(QStringLiteral("dump_nso"), Settings::values.dump_nso, false); WriteSetting(QStringLiteral("quest_flag"), Settings::values.quest_flag, false); @@ -1076,8 +1062,7 @@ void Config::SaveDisabledAddOnValues() { qt_config->beginWriteArray(QStringLiteral("disabled")); for (std::size_t j = 0; j < elem.second.size(); ++j) { qt_config->setArrayIndex(static_cast(j)); - WriteSetting(QStringLiteral("d"), QString::fromStdString(elem.second[j]), - QStringLiteral("")); + WriteSetting(QStringLiteral("d"), QString::fromStdString(elem.second[j]), QString{}); } qt_config->endArray(); ++i; @@ -1266,7 +1251,6 @@ void Config::SaveUIValues() { WriteSetting(QStringLiteral("firstStart"), UISettings::values.first_start, true); WriteSetting(QStringLiteral("calloutFlags"), UISettings::values.callout_flags, 0); WriteSetting(QStringLiteral("showConsole"), UISettings::values.show_console, false); - WriteSetting(QStringLiteral("profileIndex"), UISettings::values.profile_index, 0); WriteSetting(QStringLiteral("pauseWhenInBackground"), UISettings::values.pause_when_in_background, false); WriteSetting(QStringLiteral("hideInactiveMouse"), UISettings::values.hide_mouse, false); diff --git a/src/yuzu/configuration/config.h b/src/yuzu/configuration/config.h index e5f39b0406..9eeaf9d1e6 100644 --- a/src/yuzu/configuration/config.h +++ b/src/yuzu/configuration/config.h @@ -23,7 +23,9 @@ public: void Save(); static const std::array default_buttons; - static const std::array, Settings::NativeAnalog::NumAnalogs> default_analogs; + static const std::array, Settings::NativeAnalog::NumAnalogs> default_analogs; + static const int default_lstick_mod; + static const int default_rstick_mod; static const std::array default_mouse_buttons; static const std::array default_keyboard_keys; @@ -37,7 +39,6 @@ private: void ReadKeyboardValues(); void ReadMouseValues(); void ReadTouchscreenValues(); - void ApplyDefaultProfileIfInputInvalid(); // Read functions bases off the respective config section names. void ReadAudioValues(); diff --git a/src/yuzu/configuration/configure.ui b/src/yuzu/configuration/configure.ui index 5f5d8e5710..fcf42cdcb3 100644 --- a/src/yuzu/configuration/configure.ui +++ b/src/yuzu/configuration/configure.ui @@ -6,7 +6,7 @@ 0 0 - 382 + 650 650 @@ -26,13 +26,13 @@ - 150 + 120 0 - 150 + 120 16777215 @@ -44,76 +44,121 @@ 0 + + General + General + + UI + Game List + + System + System + + Profiles + Profiles + + Filesystem + Filesystem - + + + Controls + - Input + Controls + + Hotkeys + Hotkeys + + CPU + CPU + + Debug + Debug + + Graphics + Graphics + + Advanced + GraphicsAdvanced + + Audio + Audio + + Debug + Debug + + Web + Web + + Services + Services @@ -205,9 +250,9 @@ 1 - ConfigureInputSimple + ConfigureInput QWidget -

    configuration/configure_input_simple.h
    +
    configuration/configure_input.h
    1 diff --git a/src/yuzu/configuration/configure_debug_controller.cpp b/src/yuzu/configuration/configure_debug_controller.cpp new file mode 100644 index 0000000000..45996b73f4 --- /dev/null +++ b/src/yuzu/configuration/configure_debug_controller.cpp @@ -0,0 +1,39 @@ +// Copyright 2020 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "ui_configure_debug_controller.h" +#include "yuzu/configuration/configure_debug_controller.h" + +ConfigureDebugController::ConfigureDebugController(QWidget* parent) + : QDialog(parent), ui(std::make_unique()) { + ui->setupUi(this); + + debug_controller = new ConfigureInputPlayer(this, 9, nullptr, true); + ui->controllerLayout->addWidget(debug_controller); + + connect(ui->clear_all_button, &QPushButton::clicked, this, + [this] { debug_controller->ClearAll(); }); + connect(ui->restore_defaults_button, &QPushButton::clicked, this, + [this] { debug_controller->RestoreDefaults(); }); + + RetranslateUI(); +} + +ConfigureDebugController::~ConfigureDebugController() = default; + +void ConfigureDebugController::ApplyConfiguration() { + debug_controller->ApplyConfiguration(); +} + +void ConfigureDebugController::changeEvent(QEvent* event) { + if (event->type() == QEvent::LanguageChange) { + RetranslateUI(); + } + + QDialog::changeEvent(event); +} + +void ConfigureDebugController::RetranslateUI() { + ui->retranslateUi(this); +} diff --git a/src/yuzu/configuration/configure_debug_controller.h b/src/yuzu/configuration/configure_debug_controller.h new file mode 100644 index 0000000000..df359a4f34 --- /dev/null +++ b/src/yuzu/configuration/configure_debug_controller.h @@ -0,0 +1,33 @@ +// Copyright 2020 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include +#include +#include "yuzu/configuration/configure_input_player.h" + +class QPushButton; + +namespace Ui { +class ConfigureDebugController; +} + +class ConfigureDebugController : public QDialog { + Q_OBJECT + +public: + explicit ConfigureDebugController(QWidget* parent); + ~ConfigureDebugController() override; + + void ApplyConfiguration(); + +private: + void changeEvent(QEvent* event) override; + void RetranslateUI(); + + ConfigureInputPlayer* debug_controller; + + std::unique_ptr ui; +}; diff --git a/src/yuzu/configuration/configure_debug_controller.ui b/src/yuzu/configuration/configure_debug_controller.ui new file mode 100644 index 0000000000..a95ed50ffd --- /dev/null +++ b/src/yuzu/configuration/configure_debug_controller.ui @@ -0,0 +1,97 @@ + + + ConfigureDebugController + + + + 0 + 0 + 780 + 500 + + + + Configure Debug Controller + + + + 2 + + + 9 + + + 9 + + + 9 + + + 9 + + + + + + + + + + Clear + + + + + + + Defaults + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + + + buttonBox + accepted() + ConfigureDebugController + accept() + + + 140 + 318 + + + 140 + 169 + + + + + buttonBox + rejected() + ConfigureDebugController + reject() + + + 140 + 318 + + + 140 + 169 + + + + + diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp index 4e30dc51eb..857577591c 100644 --- a/src/yuzu/configuration/configure_dialog.cpp +++ b/src/yuzu/configuration/configure_dialog.cpp @@ -80,12 +80,12 @@ Q_DECLARE_METATYPE(QList); void ConfigureDialog::PopulateSelectionList() { const std::array>, 6> items{ - {{tr("General"), {ui->generalTab, ui->webTab, ui->debugTab, ui->uiTab}}, + {{tr("General"), {ui->generalTab, ui->hotkeysTab, ui->uiTab, ui->webTab, ui->debugTab}}, {tr("System"), {ui->systemTab, ui->profileManagerTab, ui->serviceTab, ui->filesystemTab}}, {tr("CPU"), {ui->cpuTab, ui->cpuDebugTab}}, {tr("Graphics"), {ui->graphicsTab, ui->graphicsAdvancedTab}}, {tr("Audio"), {ui->audioTab}}, - {tr("Controls"), {ui->inputTab, ui->hotkeysTab}}}, + {tr("Controls"), ui->inputTab->GetSubTabs()}}, }; [[maybe_unused]] const QSignalBlocker blocker(ui->selectorList); @@ -117,7 +117,7 @@ void ConfigureDialog::UpdateVisibleTabs() { {ui->generalTab, tr("General")}, {ui->systemTab, tr("System")}, {ui->profileManagerTab, tr("Profiles")}, - {ui->inputTab, tr("Input")}, + {ui->inputTab, tr("Controls")}, {ui->hotkeysTab, tr("Hotkeys")}, {ui->cpuTab, tr("CPU")}, {ui->cpuDebugTab, tr("Debug")}, @@ -138,6 +138,6 @@ void ConfigureDialog::UpdateVisibleTabs() { const QList tabs = qvariant_cast>(items[0]->data(Qt::UserRole)); for (const auto tab : tabs) { - ui->tabWidget->addTab(tab, widgets.at(tab)); + ui->tabWidget->addTab(tab, tab->accessibleName()); } } diff --git a/src/yuzu/configuration/configure_input.cpp b/src/yuzu/configuration/configure_input.cpp index f2977719ce..5200d2d0e3 100644 --- a/src/yuzu/configuration/configure_input.cpp +++ b/src/yuzu/configuration/configure_input.cpp @@ -8,18 +8,32 @@ #include #include -#include "configuration/configure_touchscreen_advanced.h" #include "core/core.h" #include "core/hle/service/am/am.h" #include "core/hle/service/am/applet_ae.h" #include "core/hle/service/am/applet_oe.h" -#include "core/hle/service/hid/controllers/npad.h" #include "core/hle/service/sm/sm.h" #include "ui_configure_input.h" +#include "ui_configure_input_advanced.h" #include "ui_configure_input_player.h" +#include "yuzu/configuration/configure_debug_controller.h" #include "yuzu/configuration/configure_input.h" +#include "yuzu/configuration/configure_input_advanced.h" #include "yuzu/configuration/configure_input_player.h" #include "yuzu/configuration/configure_mouse_advanced.h" +#include "yuzu/configuration/configure_touchscreen_advanced.h" + +namespace { +template +void CallConfigureDialog(ConfigureInput& parent, Args&&... args) { + Dialog dialog(&parent, std::forward(args)...); + + const auto res = dialog.exec(); + if (res == QDialog::Accepted) { + dialog.ApplyConfiguration(); + } +} +} // Anonymous namespace void OnDockedModeChanged(bool last_state, bool new_state) { if (last_state == new_state) { @@ -48,97 +62,93 @@ void OnDockedModeChanged(bool last_state, bool new_state) { } } -namespace { -template -void CallConfigureDialog(ConfigureInput& parent, Args&&... args) { - parent.ApplyConfiguration(); - Dialog dialog(&parent, std::forward(args)...); - - const auto res = dialog.exec(); - if (res == QDialog::Accepted) { - dialog.ApplyConfiguration(); - } -} -} // Anonymous namespace - ConfigureInput::ConfigureInput(QWidget* parent) - : QDialog(parent), ui(std::make_unique()) { + : QWidget(parent), ui(std::make_unique()) { ui->setupUi(this); - players_controller = { - ui->player1_combobox, ui->player2_combobox, ui->player3_combobox, ui->player4_combobox, - ui->player5_combobox, ui->player6_combobox, ui->player7_combobox, ui->player8_combobox, + player_controllers = { + new ConfigureInputPlayer(this, 0, ui->consoleInputSettings), + new ConfigureInputPlayer(this, 1, ui->consoleInputSettings), + new ConfigureInputPlayer(this, 2, ui->consoleInputSettings), + new ConfigureInputPlayer(this, 3, ui->consoleInputSettings), + new ConfigureInputPlayer(this, 4, ui->consoleInputSettings), + new ConfigureInputPlayer(this, 5, ui->consoleInputSettings), + new ConfigureInputPlayer(this, 6, ui->consoleInputSettings), + new ConfigureInputPlayer(this, 7, ui->consoleInputSettings), }; - players_configure = { - ui->player1_configure, ui->player2_configure, ui->player3_configure, ui->player4_configure, - ui->player5_configure, ui->player6_configure, ui->player7_configure, ui->player8_configure, + player_tabs = { + ui->tabPlayer1, ui->tabPlayer2, ui->tabPlayer3, ui->tabPlayer4, + ui->tabPlayer5, ui->tabPlayer6, ui->tabPlayer7, ui->tabPlayer8, }; + player_connected = { + ui->checkboxPlayer1Connected, ui->checkboxPlayer2Connected, ui->checkboxPlayer3Connected, + ui->checkboxPlayer4Connected, ui->checkboxPlayer5Connected, ui->checkboxPlayer6Connected, + ui->checkboxPlayer7Connected, ui->checkboxPlayer8Connected, + }; + + for (std::size_t i = 0; i < player_tabs.size(); ++i) { + player_tabs[i]->setLayout(new QHBoxLayout(player_tabs[i])); + player_tabs[i]->layout()->addWidget(player_controllers[i]); + connect(player_controllers[i], &ConfigureInputPlayer::Connected, [&, i](bool is_connected) { + if (is_connected) { + for (std::size_t index = 0; index <= i; ++index) { + player_connected[index]->setChecked(is_connected); + } + } else { + for (std::size_t index = i; index < player_tabs.size(); ++index) { + player_connected[index]->setChecked(is_connected); + } + } + }); + connect(player_controllers[i], &ConfigureInputPlayer::RefreshInputDevices, + [&] { UpdateAllInputDevices(); }); + connect(player_connected[i], &QCheckBox::stateChanged, + [&, i](int state) { player_controllers[i]->ConnectPlayer(state == Qt::Checked); }); + } + // Only the first player can choose handheld mode so connect the signal just to player 1 + connect(player_controllers[0], &ConfigureInputPlayer::HandheldStateChanged, + [&](bool is_handheld) { UpdateDockedState(is_handheld); }); + + advanced = new ConfigureInputAdvanced(this); + ui->tabAdvanced->setLayout(new QHBoxLayout(ui->tabAdvanced)); + ui->tabAdvanced->layout()->addWidget(advanced); + connect(advanced, &ConfigureInputAdvanced::CallDebugControllerDialog, + [this] { CallConfigureDialog(*this); }); + connect(advanced, &ConfigureInputAdvanced::CallMouseConfigDialog, + [this] { CallConfigureDialog(*this); }); + connect(advanced, &ConfigureInputAdvanced::CallTouchscreenConfigDialog, + [this] { CallConfigureDialog(*this); }); + + connect(ui->buttonClearAll, &QPushButton::clicked, [this] { ClearAll(); }); + connect(ui->buttonRestoreDefaults, &QPushButton::clicked, [this] { RestoreDefaults(); }); + RetranslateUI(); LoadConfiguration(); - UpdateUIEnabled(); - - connect(ui->restore_defaults_button, &QPushButton::clicked, this, - &ConfigureInput::RestoreDefaults); - - for (auto* enabled : players_controller) { - connect(enabled, QOverload::of(&QComboBox::currentIndexChanged), this, - &ConfigureInput::UpdateUIEnabled); - } - connect(ui->use_docked_mode, &QCheckBox::stateChanged, this, &ConfigureInput::UpdateUIEnabled); - connect(ui->handheld_connected, &QCheckBox::stateChanged, this, - &ConfigureInput::UpdateUIEnabled); - connect(ui->mouse_enabled, &QCheckBox::stateChanged, this, &ConfigureInput::UpdateUIEnabled); - connect(ui->keyboard_enabled, &QCheckBox::stateChanged, this, &ConfigureInput::UpdateUIEnabled); - connect(ui->debug_enabled, &QCheckBox::stateChanged, this, &ConfigureInput::UpdateUIEnabled); - connect(ui->touchscreen_enabled, &QCheckBox::stateChanged, this, - &ConfigureInput::UpdateUIEnabled); - - for (std::size_t i = 0; i < players_configure.size(); ++i) { - connect(players_configure[i], &QPushButton::clicked, this, - [this, i] { CallConfigureDialog(*this, i, false); }); - } - - connect(ui->handheld_configure, &QPushButton::clicked, this, - [this] { CallConfigureDialog(*this, 8, false); }); - - connect(ui->debug_configure, &QPushButton::clicked, this, - [this] { CallConfigureDialog(*this, 9, true); }); - - connect(ui->mouse_advanced, &QPushButton::clicked, this, - [this] { CallConfigureDialog(*this); }); - - connect(ui->touchscreen_advanced, &QPushButton::clicked, this, - [this] { CallConfigureDialog(*this); }); } ConfigureInput::~ConfigureInput() = default; +QList ConfigureInput::GetSubTabs() const { + return { + ui->tabPlayer1, ui->tabPlayer2, ui->tabPlayer3, ui->tabPlayer4, ui->tabPlayer5, + ui->tabPlayer6, ui->tabPlayer7, ui->tabPlayer8, ui->tabAdvanced, + }; +} + void ConfigureInput::ApplyConfiguration() { - for (std::size_t i = 0; i < players_controller.size(); ++i) { - const auto controller_type_index = players_controller[i]->currentIndex(); - - Settings::values.players[i].connected = controller_type_index != 0; - - if (controller_type_index > 0) { - Settings::values.players[i].type = - static_cast(controller_type_index - 1); - } else { - Settings::values.players[i].type = Settings::ControllerType::DualJoycon; - } + for (auto controller : player_controllers) { + controller->ApplyConfiguration(); } + advanced->ApplyConfiguration(); + const bool pre_docked_mode = Settings::values.use_docked_mode; - Settings::values.use_docked_mode = ui->use_docked_mode->isChecked(); + Settings::values.use_docked_mode = ui->radioDocked->isChecked(); OnDockedModeChanged(pre_docked_mode, Settings::values.use_docked_mode); - Settings::values - .players[Service::HID::Controller_NPad::NPadIdToIndex(Service::HID::NPAD_HANDHELD)] - .connected = ui->handheld_connected->isChecked(); - Settings::values.debug_pad_enabled = ui->debug_enabled->isChecked(); - Settings::values.mouse_enabled = ui->mouse_enabled->isChecked(); - Settings::values.keyboard_enabled = ui->keyboard_enabled->isChecked(); - Settings::values.touchscreen.enabled = ui->touchscreen_enabled->isChecked(); + + Settings::values.vibration_enabled = ui->vibrationGroup->isChecked(); } void ConfigureInput::changeEvent(QEvent* event) { @@ -146,94 +156,63 @@ void ConfigureInput::changeEvent(QEvent* event) { RetranslateUI(); } - QDialog::changeEvent(event); + QWidget::changeEvent(event); } void ConfigureInput::RetranslateUI() { ui->retranslateUi(this); - RetranslateControllerComboBoxes(); -} - -void ConfigureInput::RetranslateControllerComboBoxes() { - for (auto* controller_box : players_controller) { - [[maybe_unused]] const QSignalBlocker blocker(controller_box); - - controller_box->clear(); - controller_box->addItems({tr("None"), tr("Pro Controller"), tr("Dual Joycons"), - tr("Single Right Joycon"), tr("Single Left Joycon")}); - } - - LoadPlayerControllerIndices(); -} - -void ConfigureInput::UpdateUIEnabled() { - bool hit_disabled = false; - for (auto* player : players_controller) { - player->setDisabled(hit_disabled); - if (hit_disabled) { - player->setCurrentIndex(0); - } - if (!hit_disabled && player->currentIndex() == 0) { - hit_disabled = true; - } - } - - for (std::size_t i = 0; i < players_controller.size(); ++i) { - players_configure[i]->setEnabled(players_controller[i]->currentIndex() != 0); - } - - ui->handheld_connected->setChecked(ui->handheld_connected->isChecked() && - !ui->use_docked_mode->isChecked()); - ui->handheld_connected->setEnabled(!ui->use_docked_mode->isChecked()); - ui->handheld_configure->setEnabled(ui->handheld_connected->isChecked() && - !ui->use_docked_mode->isChecked()); - ui->mouse_advanced->setEnabled(ui->mouse_enabled->isChecked()); - ui->debug_configure->setEnabled(ui->debug_enabled->isChecked()); - ui->touchscreen_advanced->setEnabled(ui->touchscreen_enabled->isChecked()); } void ConfigureInput::LoadConfiguration() { - std::stable_partition( - Settings::values.players.begin(), - Settings::values.players.begin() + - Service::HID::Controller_NPad::NPadIdToIndex(Service::HID::NPAD_HANDHELD), - [](const auto& player) { return player.connected; }); - LoadPlayerControllerIndices(); + UpdateDockedState(Settings::values.players[0].controller_type == + Settings::ControllerType::Handheld); - ui->use_docked_mode->setChecked(Settings::values.use_docked_mode); - ui->handheld_connected->setChecked( - Settings::values - .players[Service::HID::Controller_NPad::NPadIdToIndex(Service::HID::NPAD_HANDHELD)] - .connected); - ui->debug_enabled->setChecked(Settings::values.debug_pad_enabled); - ui->mouse_enabled->setChecked(Settings::values.mouse_enabled); - ui->keyboard_enabled->setChecked(Settings::values.keyboard_enabled); - ui->touchscreen_enabled->setChecked(Settings::values.touchscreen.enabled); - - UpdateUIEnabled(); + ui->vibrationGroup->setChecked(Settings::values.vibration_enabled); } void ConfigureInput::LoadPlayerControllerIndices() { - for (std::size_t i = 0; i < players_controller.size(); ++i) { - const auto connected = Settings::values.players[i].connected; - players_controller[i]->setCurrentIndex( - connected ? static_cast(Settings::values.players[i].type) + 1 : 0); + for (std::size_t i = 0; i < player_connected.size(); ++i) { + const auto connected = Settings::values.players[i].connected || + (i == 0 && Settings::values.players[8].connected); + player_connected[i]->setChecked(connected); } } +void ConfigureInput::ClearAll() { + // We don't have a good way to know what tab is active, but we can find out by getting the + // parent of the consoleInputSettings + auto player_tab = static_cast(ui->consoleInputSettings->parent()); + player_tab->ClearAll(); +} + void ConfigureInput::RestoreDefaults() { - players_controller[0]->setCurrentIndex(2); + // We don't have a good way to know what tab is active, but we can find out by getting the + // parent of the consoleInputSettings + auto player_tab = static_cast(ui->consoleInputSettings->parent()); + player_tab->RestoreDefaults(); - for (std::size_t i = 1; i < players_controller.size(); ++i) { - players_controller[i]->setCurrentIndex(0); - } - - ui->use_docked_mode->setCheckState(Qt::Unchecked); - ui->handheld_connected->setCheckState(Qt::Unchecked); - ui->mouse_enabled->setCheckState(Qt::Unchecked); - ui->keyboard_enabled->setCheckState(Qt::Unchecked); - ui->debug_enabled->setCheckState(Qt::Unchecked); - ui->touchscreen_enabled->setCheckState(Qt::Checked); - UpdateUIEnabled(); + ui->radioDocked->setChecked(true); + ui->radioUndocked->setChecked(false); + ui->vibrationGroup->setChecked(true); +} + +void ConfigureInput::UpdateDockedState(bool is_handheld) { + // If the controller type is handheld only, disallow changing docked mode + ui->radioDocked->setEnabled(!is_handheld); + ui->radioUndocked->setEnabled(!is_handheld); + + ui->radioDocked->setChecked(Settings::values.use_docked_mode); + ui->radioUndocked->setChecked(!Settings::values.use_docked_mode); + + // If its handheld only, force docked mode off (since you can't play handheld in a dock) + if (is_handheld) { + ui->radioUndocked->setChecked(true); + } +} + +void ConfigureInput::UpdateAllInputDevices() { + for (const auto& player : player_controllers) { + player->UpdateInputDevices(); + } } diff --git a/src/yuzu/configuration/configure_input.h b/src/yuzu/configuration/configure_input.h index 2f70cb3ca4..8241d23efe 100644 --- a/src/yuzu/configuration/configure_input.h +++ b/src/yuzu/configuration/configure_input.h @@ -10,11 +10,14 @@ #include #include +#include "yuzu/configuration/configure_input_advanced.h" +#include "yuzu/configuration/configure_input_player.h" + #include "ui_configure_input.h" -class QPushButton; class QString; class QTimer; +class QCheckBox; namespace Ui { class ConfigureInput; @@ -22,22 +25,25 @@ class ConfigureInput; void OnDockedModeChanged(bool last_state, bool new_state); -class ConfigureInput : public QDialog { +class ConfigureInput : public QWidget { Q_OBJECT public: explicit ConfigureInput(QWidget* parent = nullptr); ~ConfigureInput() override; - /// Save all button configurations to settings file + /// Save all button configurations to settings file. void ApplyConfiguration(); + QList GetSubTabs() const; + private: void changeEvent(QEvent* event) override; void RetranslateUI(); - void RetranslateControllerComboBoxes(); + void ClearAll(); - void UpdateUIEnabled(); + void UpdateDockedState(bool is_handheld); + void UpdateAllInputDevices(); /// Load configuration settings. void LoadConfiguration(); @@ -48,6 +54,8 @@ private: std::unique_ptr ui; - std::array players_controller; - std::array players_configure; + std::array player_controllers; + std::array player_tabs; + std::array player_connected; + ConfigureInputAdvanced* advanced; }; diff --git a/src/yuzu/configuration/configure_input.ui b/src/yuzu/configuration/configure_input.ui index efffd8487c..1369552249 100644 --- a/src/yuzu/configuration/configure_input.ui +++ b/src/yuzu/configuration/configure_input.ui @@ -1,529 +1,554 @@ ConfigureInput - + 0 0 - 384 - 576 + 700 + 540 - Custom Input Settings + ConfigureInput + + 2 + + + 3 + + + 3 + + + 3 + + + 3 + - - - - - Players - - - - - - - 110 - 0 - - - - - - - - Configure - - - - - - - Controller Type - - - Qt::AlignCenter - - - - - - - - 110 - 0 - - - - - - - - - 110 - 0 - - - - - - - - - 110 - 0 - - - - - - - - - 110 - 0 - - - - - - - - - 110 - 0 - - - - - - - - - 110 - 0 - - - - - - - - - 110 - 0 - - - - - - - - Configure - - - - - - - Configure - - - - - - - Configure - - - - - - - Configure - - - - - - - Configure - - - - - - - Configure - - - - - - - Configure - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 55 - 0 - - - - Player 1 - - - - - - - Player 2 - - - - - - - Player 3 - - - - - - - Player 4 - - - - - - - Player 5 - - - - - - - Player 6 - - - - - - - Player 7 - - - - - - - Player 8 - - - - - - - - - - Handheld - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 72 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Configure - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Joycons Docked - - - - - - - Use Docked Mode - - - - - - - - - - Other - - - - - - - 0 - 23 - - - - Keyboard - - - - - - - Debug Controller - - - - - - - Touchscreen - - - - - - - - 0 - 23 - - - - Mouse - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 76 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Advanced - - - - - - - Configure - - - - - - - Advanced - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - Restore Defaults + + + 0 + + + + Player 1 + + + Player 1 + + + + + Player 2 + + + Player 2 + + + + + Player 3 + + + Player 3 + + + + + Player 4 + + + Player 4 + + + + + Player 5 + + + Player 5 + + + + + Player 6 + + + Player 6 + + + + + Player 7 + + + Player 7 + + + + + Player 8 + + + Player 8 + + + + + Advanced + + + Advanced + + + + + + + + + 3 + + + 0 + + + 3 + + + 0 + + + 0 + + + + + + 16777215 + 16777215 + + + + Console Mode + + + + 6 - - - - - - Qt::Horizontal + + 3 - - - 40 - 20 - + + 6 - - - - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + 3 - - - - - + + 6 + + + + + Docked + + + true + + + + + + + Undocked + + + + + + + + + + Vibration + + + true + + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 65 + 21 + + + + + 65 + 16777215 + + + + % + + + 1 + + + 200 + + + 100 + + + + + + + + + + Motion + + + true + + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Configure + + + + + + + + + + + 5 + + + 0 + + + 0 + + + 0 + + + 3 + + + + + + + + + + + + Controllers + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + Qt::AlignCenter + + + + + + + + + + + + + + + + + + + + + Qt::LeftToRight + + + true + + + + + + + + + + + + + + 2 + + + Qt::AlignCenter + + + + + + + 3 + + + Qt::AlignCenter + + + + + + + 4 + + + Qt::AlignCenter + + + + + + + 5 + + + Qt::AlignCenter + + + + + + + 6 + + + Qt::AlignCenter + + + + + + + 7 + + + Qt::AlignCenter + + + + + + + 8 + + + Qt::AlignCenter + + + + + + + Connected + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + + 0 + 0 + + + + + 0 + 0 + + + + Qt::LeftToRight + + + min-width: 55px; + + + Defaults + + + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + + 0 + 0 + + + + + 0 + 0 + + + + Qt::LeftToRight + + + min-width: 55px; + + + Clear + + + + + - - - buttonBox - accepted() - ConfigureInput - accept() - - - 294 - 553 - - - 191 - 287 - - - - - buttonBox - rejected() - ConfigureInput - reject() - - - 294 - 553 - - - 191 - 287 - - - - + diff --git a/src/yuzu/configuration/configure_input_advanced.cpp b/src/yuzu/configuration/configure_input_advanced.cpp new file mode 100644 index 0000000000..18db04e7ea --- /dev/null +++ b/src/yuzu/configuration/configure_input_advanced.cpp @@ -0,0 +1,169 @@ +// Copyright 2020 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include +#include "core/core.h" +#include "core/settings.h" +#include "ui_configure_input_advanced.h" +#include "yuzu/configuration/configure_input_advanced.h" + +ConfigureInputAdvanced::ConfigureInputAdvanced(QWidget* parent) + : QWidget(parent), ui(new Ui::ConfigureInputAdvanced) { + ui->setupUi(this); + + controllers_color_buttons = {{ + { + ui->player1_left_body_button, + ui->player1_left_buttons_button, + ui->player1_right_body_button, + ui->player1_right_buttons_button, + }, + { + ui->player2_left_body_button, + ui->player2_left_buttons_button, + ui->player2_right_body_button, + ui->player2_right_buttons_button, + }, + { + ui->player3_left_body_button, + ui->player3_left_buttons_button, + ui->player3_right_body_button, + ui->player3_right_buttons_button, + }, + { + ui->player4_left_body_button, + ui->player4_left_buttons_button, + ui->player4_right_body_button, + ui->player4_right_buttons_button, + }, + { + ui->player5_left_body_button, + ui->player5_left_buttons_button, + ui->player5_right_body_button, + ui->player5_right_buttons_button, + }, + { + ui->player6_left_body_button, + ui->player6_left_buttons_button, + ui->player6_right_body_button, + ui->player6_right_buttons_button, + }, + { + ui->player7_left_body_button, + ui->player7_left_buttons_button, + ui->player7_right_body_button, + ui->player7_right_buttons_button, + }, + { + ui->player8_left_body_button, + ui->player8_left_buttons_button, + ui->player8_right_body_button, + ui->player8_right_buttons_button, + }, + }}; + + for (std::size_t player_idx = 0; player_idx < controllers_color_buttons.size(); ++player_idx) { + auto& color_buttons = controllers_color_buttons[player_idx]; + for (std::size_t button_idx = 0; button_idx < color_buttons.size(); ++button_idx) { + connect(color_buttons[button_idx], &QPushButton::clicked, this, + [this, player_idx, button_idx] { + OnControllerButtonClick(static_cast(player_idx), + static_cast(button_idx)); + }); + } + } + + connect(ui->mouse_enabled, &QCheckBox::stateChanged, this, + &ConfigureInputAdvanced::UpdateUIEnabled); + connect(ui->debug_enabled, &QCheckBox::stateChanged, this, + &ConfigureInputAdvanced::UpdateUIEnabled); + connect(ui->touchscreen_enabled, &QCheckBox::stateChanged, this, + &ConfigureInputAdvanced::UpdateUIEnabled); + + connect(ui->debug_configure, &QPushButton::clicked, this, + [this] { CallDebugControllerDialog(); }); + connect(ui->mouse_advanced, &QPushButton::clicked, this, [this] { CallMouseConfigDialog(); }); + connect(ui->touchscreen_advanced, &QPushButton::clicked, this, + [this] { CallTouchscreenConfigDialog(); }); + + LoadConfiguration(); +} + +ConfigureInputAdvanced::~ConfigureInputAdvanced() = default; + +void ConfigureInputAdvanced::OnControllerButtonClick(int player_idx, int button_idx) { + const QColor new_bg_color = QColorDialog::getColor(controllers_colors[player_idx][button_idx]); + if (!new_bg_color.isValid()) { + return; + } + controllers_colors[player_idx][button_idx] = new_bg_color; + controllers_color_buttons[player_idx][button_idx]->setStyleSheet( + QStringLiteral("background-color: %1; min-width: 55px;") + .arg(controllers_colors[player_idx][button_idx].name())); +} + +void ConfigureInputAdvanced::ApplyConfiguration() { + for (std::size_t player_idx = 0; player_idx < controllers_color_buttons.size(); ++player_idx) { + auto& player = Settings::values.players[player_idx]; + std::array colors{}; + std::transform(controllers_colors[player_idx].begin(), controllers_colors[player_idx].end(), + colors.begin(), [](QColor color) { return color.rgb(); }); + + player.body_color_left = colors[0]; + player.button_color_left = colors[1]; + player.body_color_right = colors[2]; + player.button_color_right = colors[3]; + } + + Settings::values.debug_pad_enabled = ui->debug_enabled->isChecked(); + Settings::values.mouse_enabled = ui->mouse_enabled->isChecked(); + Settings::values.keyboard_enabled = ui->keyboard_enabled->isChecked(); + Settings::values.touchscreen.enabled = ui->touchscreen_enabled->isChecked(); +} + +void ConfigureInputAdvanced::LoadConfiguration() { + for (std::size_t player_idx = 0; player_idx < controllers_color_buttons.size(); ++player_idx) { + auto& player = Settings::values.players[player_idx]; + std::array colors = { + player.body_color_left, + player.button_color_left, + player.body_color_right, + player.button_color_right, + }; + + std::transform(colors.begin(), colors.end(), controllers_colors[player_idx].begin(), + [](u32 rgb) { return QColor::fromRgb(rgb); }); + + for (std::size_t button_idx = 0; button_idx < colors.size(); ++button_idx) { + controllers_color_buttons[player_idx][button_idx]->setStyleSheet( + QStringLiteral("background-color: %1; min-width: 55px;") + .arg(controllers_colors[player_idx][button_idx].name())); + } + } + + ui->debug_enabled->setChecked(Settings::values.debug_pad_enabled); + ui->mouse_enabled->setChecked(Settings::values.mouse_enabled); + ui->keyboard_enabled->setChecked(Settings::values.keyboard_enabled); + ui->touchscreen_enabled->setChecked(Settings::values.touchscreen.enabled); + + UpdateUIEnabled(); +} + +void ConfigureInputAdvanced::changeEvent(QEvent* event) { + if (event->type() == QEvent::LanguageChange) { + RetranslateUI(); + } + + QWidget::changeEvent(event); +} + +void ConfigureInputAdvanced::RetranslateUI() { + ui->retranslateUi(this); +} + +void ConfigureInputAdvanced::UpdateUIEnabled() { + ui->mouse_advanced->setEnabled(ui->mouse_enabled->isChecked()); + ui->debug_configure->setEnabled(ui->debug_enabled->isChecked()); + ui->touchscreen_advanced->setEnabled(ui->touchscreen_enabled->isChecked()); +} diff --git a/src/yuzu/configuration/configure_input_advanced.h b/src/yuzu/configuration/configure_input_advanced.h new file mode 100644 index 0000000000..d6e913675d --- /dev/null +++ b/src/yuzu/configuration/configure_input_advanced.h @@ -0,0 +1,44 @@ +// Copyright 2020 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include +#include + +class QColor; +class QPushButton; + +namespace Ui { +class ConfigureInputAdvanced; +} + +class ConfigureInputAdvanced : public QWidget { + Q_OBJECT + +public: + explicit ConfigureInputAdvanced(QWidget* parent = nullptr); + ~ConfigureInputAdvanced() override; + + void ApplyConfiguration(); + +signals: + void CallDebugControllerDialog(); + void CallMouseConfigDialog(); + void CallTouchscreenConfigDialog(); + +private: + void changeEvent(QEvent* event) override; + void RetranslateUI(); + void UpdateUIEnabled(); + + void OnControllerButtonClick(int player_idx, int button_idx); + + void LoadConfiguration(); + + std::unique_ptr ui; + + std::array, 8> controllers_colors; + std::array, 8> controllers_color_buttons; +}; diff --git a/src/yuzu/configuration/configure_input_advanced.ui b/src/yuzu/configuration/configure_input_advanced.ui new file mode 100644 index 0000000000..5958435fce --- /dev/null +++ b/src/yuzu/configuration/configure_input_advanced.ui @@ -0,0 +1,2688 @@ + + + ConfigureInputAdvanced + + + + 0 + 0 + 710 + 580 + + + + Configure Input + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 9 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 3 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Joycon Colors + + + + 9 + + + 9 + + + 9 + + + 9 + + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Player 1 + + + + 6 + + + 6 + + + 0 + + + 6 + + + 6 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + L Body + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + L Button + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + R Body + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + R Button + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + + + + + + + Player 2 + + + + 6 + + + 6 + + + 0 + + + 6 + + + 6 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + L Body + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + L Button + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + R Body + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + R Button + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Player 3 + + + + 6 + + + 6 + + + 0 + + + 6 + + + 6 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + L Body + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + L Button + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + R Body + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + R Button + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + + + + + + + Player 4 + + + + 6 + + + 6 + + + 0 + + + 6 + + + 6 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + L Body + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + L Button + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + R Body + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + R Button + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + + + + + + + + + + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Player 5 + + + + 6 + + + 6 + + + 0 + + + 6 + + + 6 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + L Body + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + L Button + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + R Body + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + R Button + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + + + + + + + Player 6 + + + + 6 + + + 6 + + + 0 + + + 6 + + + 6 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + L Body + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + L Button + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + R Body + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + R Button + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Player 7 + + + + 6 + + + 6 + + + 0 + + + 6 + + + 6 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + L Body + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + L Button + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + R Body + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + R Button + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + + + + + + + Player 8 + + + + 6 + + + 6 + + + 0 + + + 6 + + + 6 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + L Body + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + L Button + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + R Body + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + R Button + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Other + + + + + + + 0 + 23 + + + + Keyboard + + + + + + + Advanced + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 76 + 20 + + + + + + + + Advanced + + + + + + + Touchscreen + + + + + + + + 0 + 23 + + + + Mouse + + + + + + + Motion / Touch + + + + + + + Configure + + + + + + + Debug Controller + + + + + + + Configure + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + + + + + diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp index 597defe8c6..4d79a51f3c 100644 --- a/src/yuzu/configuration/configure_input_player.cpp +++ b/src/yuzu/configuration/configure_input_player.cpp @@ -5,38 +5,86 @@ #include #include #include -#include #include +#include #include #include #include #include #include "common/assert.h" #include "common/param_package.h" +#include "core/core.h" +#include "core/hle/service/hid/controllers/npad.h" +#include "core/hle/service/hid/hid.h" +#include "core/hle/service/sm/sm.h" #include "input_common/main.h" #include "ui_configure_input_player.h" #include "yuzu/configuration/config.h" #include "yuzu/configuration/configure_input_player.h" +constexpr std::size_t HANDHELD_INDEX = 8; + const std::array ConfigureInputPlayer::analog_sub_buttons{{ "up", "down", "left", "right", - "modifier", }}; -static void LayerGridElements(QGridLayout* grid, QWidget* item, QWidget* onTopOf) { - const int index1 = grid->indexOf(item); - const int index2 = grid->indexOf(onTopOf); - int row, column, rowSpan, columnSpan; - grid->getItemPosition(index2, &row, &column, &rowSpan, &columnSpan); - grid->takeAt(index1); - grid->addWidget(item, row, column, rowSpan, columnSpan); +namespace { + +void UpdateController(Settings::ControllerType controller_type, std::size_t npad_index, + bool connected) { + Core::System& system{Core::System::GetInstance()}; + if (!system.IsPoweredOn()) { + return; + } + Service::SM::ServiceManager& sm = system.ServiceManager(); + + auto& npad = + sm.GetService("hid") + ->GetAppletResource() + ->GetController(Service::HID::HidController::NPad); + + npad.UpdateControllerAt(npad.MapSettingsTypeToNPad(controller_type), npad_index, connected); } -static QString GetKeyName(int key_code) { +/// Maps the controller type combobox index to Controller Type enum +constexpr Settings::ControllerType GetControllerTypeFromIndex(int index) { + switch (index) { + case 0: + default: + return Settings::ControllerType::ProController; + case 1: + return Settings::ControllerType::DualJoyconDetached; + case 2: + return Settings::ControllerType::LeftJoycon; + case 3: + return Settings::ControllerType::RightJoycon; + case 4: + return Settings::ControllerType::Handheld; + } +} + +/// Maps the Controller Type enum to controller type combobox index +constexpr int GetIndexFromControllerType(Settings::ControllerType type) { + switch (type) { + case Settings::ControllerType::ProController: + default: + return 0; + case Settings::ControllerType::DualJoyconDetached: + return 1; + case Settings::ControllerType::LeftJoycon: + return 2; + case Settings::ControllerType::RightJoycon: + return 3; + case Settings::ControllerType::Handheld: + return 4; + } +} + +QString GetKeyName(int key_code) { switch (key_code) { case Qt::Key_Shift: return QObject::tr("Shift"); @@ -51,9 +99,16 @@ static QString GetKeyName(int key_code) { } } -static void SetAnalogButton(const Common::ParamPackage& input_param, - Common::ParamPackage& analog_param, const std::string& button_name) { - if (analog_param.Get("engine", "") != "analog_from_button") { +void SetAnalogParam(const Common::ParamPackage& input_param, Common::ParamPackage& analog_param, + const std::string& button_name) { + // The poller returned a complete axis, so set all the buttons + if (input_param.Has("axis_x") && input_param.Has("axis_y")) { + analog_param = input_param; + return; + } + // Check if the current configuration has either no engine or an axis binding. + // Clears out the old binding and adds one with analog_from_button. + if (!analog_param.Has("engine") || analog_param.Has("axis_x") || analog_param.Has("axis_y")) { analog_param = { {"engine", "analog_from_button"}, }; @@ -61,7 +116,7 @@ static void SetAnalogButton(const Common::ParamPackage& input_param, analog_param.Set(button_name, input_param.Serialize()); } -static QString ButtonToText(const Common::ParamPackage& param) { +QString ButtonToText(const Common::ParamPackage& param) { if (!param.Has("engine")) { return QObject::tr("[not set]"); } @@ -111,7 +166,7 @@ static QString ButtonToText(const Common::ParamPackage& param) { return QObject::tr("[unknown]"); } -static QString AnalogToText(const Common::ParamPackage& param, const std::string& dir) { +QString AnalogToText(const Common::ParamPackage& param, const std::string& dir) { if (!param.Has("engine")) { return QObject::tr("[not set]"); } @@ -161,22 +216,24 @@ static QString AnalogToText(const Common::ParamPackage& param, const std::string } return QObject::tr("[unknown]"); } +} // namespace -ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_index, bool debug) - : QDialog(parent), ui(std::make_unique()), player_index(player_index), +ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_index, + QWidget* bottom_row, bool debug) + : QWidget(parent), ui(std::make_unique()), player_index(player_index), debug(debug), timeout_timer(std::make_unique()), - poll_timer(std::make_unique()) { + poll_timer(std::make_unique()), bottom_row(bottom_row) { ui->setupUi(this); + setFocusPolicy(Qt::ClickFocus); button_map = { - ui->buttonA, ui->buttonB, ui->buttonX, ui->buttonY, - ui->buttonLStick, ui->buttonRStick, ui->buttonL, ui->buttonR, - ui->buttonZL, ui->buttonZR, ui->buttonPlus, ui->buttonMinus, - ui->buttonDpadLeft, ui->buttonDpadUp, ui->buttonDpadRight, ui->buttonDpadDown, - ui->buttonLStickLeft, ui->buttonLStickUp, ui->buttonLStickRight, ui->buttonLStickDown, - ui->buttonRStickLeft, ui->buttonRStickUp, ui->buttonRStickRight, ui->buttonRStickDown, - ui->buttonSL, ui->buttonSR, ui->buttonHome, ui->buttonScreenshot, + ui->buttonA, ui->buttonB, ui->buttonX, ui->buttonY, + ui->buttonLStick, ui->buttonRStick, ui->buttonL, ui->buttonR, + ui->buttonZL, ui->buttonZR, ui->buttonPlus, ui->buttonMinus, + ui->buttonDpadLeft, ui->buttonDpadUp, ui->buttonDpadRight, ui->buttonDpadDown, + ui->buttonSL, ui->buttonSR, ui->buttonHome, ui->buttonScreenshot, + ui->buttonLStickMod, ui->buttonRStickMod, }; analog_map_buttons = {{ @@ -185,208 +242,159 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i ui->buttonLStickDown, ui->buttonLStickLeft, ui->buttonLStickRight, - ui->buttonLStickMod, }, { ui->buttonRStickUp, ui->buttonRStickDown, ui->buttonRStickLeft, ui->buttonRStickRight, - ui->buttonRStickMod, }, }}; - debug_hidden = { - ui->buttonSL, ui->labelSL, - ui->buttonSR, ui->labelSR, - ui->buttonLStick, ui->labelLStickPressed, - ui->buttonRStick, ui->labelRStickPressed, - ui->buttonHome, ui->labelHome, - ui->buttonScreenshot, ui->labelScreenshot, + analog_map_deadzone_label = {ui->labelLStickDeadzone, ui->labelRStickDeadzone}; + analog_map_deadzone_slider = {ui->sliderLStickDeadzone, ui->sliderRStickDeadzone}; + analog_map_modifier_groupbox = {ui->buttonLStickModGroup, ui->buttonRStickModGroup}; + analog_map_modifier_button = {ui->buttonLStickMod, ui->buttonRStickMod}; + analog_map_modifier_label = {ui->labelLStickModifierRange, ui->labelRStickModifierRange}; + analog_map_modifier_slider = {ui->sliderLStickModifierRange, ui->sliderRStickModifierRange}; + analog_map_range_groupbox = {ui->buttonLStickRangeGroup, ui->buttonRStickRangeGroup}; + analog_map_range_spinbox = {ui->spinboxLStickRange, ui->spinboxRStickRange}; + + const auto ConfigureButtonClick = [&](QPushButton* button, Common::ParamPackage* param, + int default_val) { + connect(button, &QPushButton::clicked, [=, this] { + HandleClick( + button, + [=, this](Common::ParamPackage params) { + // Workaround for ZL & ZR for analog triggers like on XBOX + // controllers. Analog triggers (from controllers like the XBOX + // controller) would not work due to a different range of their + // signals (from 0 to 255 on analog triggers instead of -32768 to + // 32768 on analog joysticks). The SDL driver misinterprets analog + // triggers as analog joysticks. + // TODO: reinterpret the signal range for analog triggers to map the + // values correctly. This is required for the correct emulation of + // the analog triggers of the GameCube controller. + if (button == ui->buttonZL || button == ui->buttonZR) { + params.Set("direction", "+"); + params.Set("threshold", "0.5"); + } + (*param) = std::move(params); + }, + InputCommon::Polling::DeviceType::Button); + }); }; - auto layout = Settings::values.players[player_index].type; - if (debug) - layout = Settings::ControllerType::DualJoycon; - - switch (layout) { - case Settings::ControllerType::ProController: - case Settings::ControllerType::DualJoycon: - layout_hidden = { - ui->buttonSL, - ui->labelSL, - ui->buttonSR, - ui->labelSR, - }; - break; - case Settings::ControllerType::LeftJoycon: - layout_hidden = { - ui->right_body_button, - ui->right_buttons_button, - ui->right_body_label, - ui->right_buttons_label, - ui->buttonR, - ui->labelR, - ui->buttonZR, - ui->labelZR, - ui->labelHome, - ui->buttonHome, - ui->buttonPlus, - ui->labelPlus, - ui->RStick, - ui->faceButtons, - }; - break; - case Settings::ControllerType::RightJoycon: - layout_hidden = { - ui->left_body_button, ui->left_buttons_button, - ui->left_body_label, ui->left_buttons_label, - ui->buttonL, ui->labelL, - ui->buttonZL, ui->labelZL, - ui->labelScreenshot, ui->buttonScreenshot, - ui->buttonMinus, ui->labelMinus, - ui->LStick, ui->Dpad, - }; - break; - } - - if (debug || layout == Settings::ControllerType::ProController) { - ui->controller_color->hide(); - } else { - if (layout == Settings::ControllerType::LeftJoycon || - layout == Settings::ControllerType::RightJoycon) { - ui->horizontalSpacer_4->setGeometry({0, 0, 0, 0}); - - LayerGridElements(ui->buttons, ui->shoulderButtons, ui->Dpad); - LayerGridElements(ui->buttons, ui->misc, ui->RStick); - LayerGridElements(ui->buttons, ui->Dpad, ui->faceButtons); - LayerGridElements(ui->buttons, ui->RStick, ui->LStick); - } - } - - for (auto* widget : layout_hidden) - widget->setVisible(false); - - analog_map_stick = {ui->buttonLStickAnalog, ui->buttonRStickAnalog}; - analog_map_deadzone_and_modifier_slider = {ui->sliderLStickDeadzoneAndModifier, - ui->sliderRStickDeadzoneAndModifier}; - analog_map_deadzone_and_modifier_slider_label = {ui->labelLStickDeadzoneAndModifier, - ui->labelRStickDeadzoneAndModifier}; - - for (int button_id = 0; button_id < Settings::NativeButton::NumButtons; button_id++) { + for (int button_id = 0; button_id < Settings::NativeButton::NumButtons; ++button_id) { auto* const button = button_map[button_id]; if (button == nullptr) { continue; } - - button->setContextMenuPolicy(Qt::CustomContextMenu); - connect(button, &QPushButton::clicked, [=, this] { - HandleClick( - button_map[button_id], - [=, this](Common::ParamPackage params) { - // Workaround for ZL & ZR for analog triggers like on XBOX controllors. - // Analog triggers (from controllers like the XBOX controller) would not - // work due to a different range of their signals (from 0 to 255 on - // analog triggers instead of -32768 to 32768 on analog joysticks). The - // SDL driver misinterprets analog triggers as analog joysticks. - // TODO: reinterpret the signal range for analog triggers to map the - // values correctly. This is required for the correct emulation of the - // analog triggers of the GameCube controller. - if (button_id == Settings::NativeButton::ZL || - button_id == Settings::NativeButton::ZR) { - params.Set("direction", "+"); - params.Set("threshold", "0.5"); - } - buttons_param[button_id] = std::move(params); - }, - InputCommon::Polling::DeviceType::Button); - }); - connect(button, &QPushButton::customContextMenuRequested, - [=, this](const QPoint& menu_location) { - QMenu context_menu; - context_menu.addAction(tr("Clear"), [&] { - buttons_param[button_id].Clear(); - button_map[button_id]->setText(tr("[not set]")); - }); - context_menu.addAction(tr("Restore Default"), [&] { - buttons_param[button_id] = Common::ParamPackage{ - InputCommon::GenerateKeyboardParam(Config::default_buttons[button_id])}; - button_map[button_id]->setText(ButtonToText(buttons_param[button_id])); - }); - context_menu.exec(button_map[button_id]->mapToGlobal(menu_location)); - }); + ConfigureButtonClick(button_map[button_id], &buttons_param[button_id], + Config::default_buttons[button_id]); } - for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; analog_id++) { - for (int sub_button_id = 0; sub_button_id < ANALOG_SUB_BUTTONS_NUM; sub_button_id++) { + // Handle clicks for the modifier buttons as well. + ConfigureButtonClick(ui->buttonLStickMod, &lstick_mod, Config::default_lstick_mod); + ConfigureButtonClick(ui->buttonRStickMod, &rstick_mod, Config::default_rstick_mod); + + for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; ++analog_id) { + for (int sub_button_id = 0; sub_button_id < ANALOG_SUB_BUTTONS_NUM; ++sub_button_id) { auto* const analog_button = analog_map_buttons[analog_id][sub_button_id]; + if (analog_button == nullptr) { continue; } - analog_button->setContextMenuPolicy(Qt::CustomContextMenu); connect(analog_button, &QPushButton::clicked, [=, this] { HandleClick( analog_map_buttons[analog_id][sub_button_id], [=, this](const Common::ParamPackage& params) { - SetAnalogButton(params, analogs_param[analog_id], - analog_sub_buttons[sub_button_id]); + SetAnalogParam(params, analogs_param[analog_id], + analog_sub_buttons[sub_button_id]); }, - InputCommon::Polling::DeviceType::Button); + InputCommon::Polling::DeviceType::AnalogPreferred); }); - connect(analog_button, &QPushButton::customContextMenuRequested, - [=, this](const QPoint& menu_location) { - QMenu context_menu; - context_menu.addAction(tr("Clear"), [&] { - analogs_param[analog_id].Erase(analog_sub_buttons[sub_button_id]); - analog_map_buttons[analog_id][sub_button_id]->setText(tr("[not set]")); - }); - context_menu.addAction(tr("Restore Default"), [&] { - Common::ParamPackage params{InputCommon::GenerateKeyboardParam( - Config::default_analogs[analog_id][sub_button_id])}; - SetAnalogButton(params, analogs_param[analog_id], - analog_sub_buttons[sub_button_id]); - analog_map_buttons[analog_id][sub_button_id]->setText(AnalogToText( - analogs_param[analog_id], analog_sub_buttons[sub_button_id])); - }); - context_menu.exec(analog_map_buttons[analog_id][sub_button_id]->mapToGlobal( - menu_location)); - }); } - connect(analog_map_stick[analog_id], &QPushButton::clicked, [=, this] { - if (QMessageBox::information( - this, tr("Information"), - tr("After pressing OK, first move your joystick horizontally, " - "and then vertically."), - QMessageBox::Ok | QMessageBox::Cancel) == QMessageBox::Ok) { - HandleClick( - analog_map_stick[analog_id], - [=, this](const Common::ParamPackage& params) { - analogs_param[analog_id] = params; - }, - InputCommon::Polling::DeviceType::Analog); - } + + connect(analog_map_modifier_button[analog_id], &QPushButton::clicked, [=, this] { + HandleClick( + analog_map_modifier_button[analog_id], + [=, this](const Common::ParamPackage& params) { + SetAnalogParam(params, analogs_param[analog_id], "modifier"); + }, + InputCommon::Polling::DeviceType::AnalogPreferred); }); - connect(analog_map_deadzone_and_modifier_slider[analog_id], &QSlider::valueChanged, + connect(analog_map_range_spinbox[analog_id], qOverload(&QSpinBox::valueChanged), [=, this] { - const float slider_value = - analog_map_deadzone_and_modifier_slider[analog_id]->value(); - if (analogs_param[analog_id].Get("engine", "") == "sdl" || - analogs_param[analog_id].Get("engine", "") == "gcpad") { - analog_map_deadzone_and_modifier_slider_label[analog_id]->setText( - tr("Deadzone: %1%").arg(slider_value)); - analogs_param[analog_id].Set("deadzone", slider_value / 100.0f); - } else { - analog_map_deadzone_and_modifier_slider_label[analog_id]->setText( - tr("Modifier Scale: %1%").arg(slider_value)); - analogs_param[analog_id].Set("modifier_scale", slider_value / 100.0f); - } + const auto spinbox_value = analog_map_range_spinbox[analog_id]->value(); + analogs_param[analog_id].Set("range", spinbox_value / 100.0f); + }); + + connect(analog_map_deadzone_slider[analog_id], &QSlider::valueChanged, [=, this] { + const auto slider_value = analog_map_deadzone_slider[analog_id]->value(); + analog_map_deadzone_label[analog_id]->setText(tr("Deadzone: %1%").arg(slider_value)); + analogs_param[analog_id].Set("deadzone", slider_value / 100.0f); + }); + + connect(analog_map_modifier_slider[analog_id], &QSlider::valueChanged, [=, this] { + const auto slider_value = analog_map_modifier_slider[analog_id]->value(); + analog_map_modifier_label[analog_id]->setText( + tr("Modifier Range: %1%").arg(slider_value)); + analogs_param[analog_id].Set("modifier_scale", slider_value / 100.0f); + }); + } + + // Player Connected checkbox + connect(ui->groupConnectedController, &QGroupBox::toggled, + [&](bool checked) { emit Connected(checked); }); + + // Set up controller type. Only Player 1 can choose Handheld. + ui->comboControllerType->clear(); + + QStringList controller_types = { + QStringLiteral("Pro Controller"), + QStringLiteral("Dual Joycons"), + QStringLiteral("Left Joycon"), + QStringLiteral("Right Joycon"), + }; + + if (player_index == 0) { + controller_types.append(QStringLiteral("Handheld")); + connect(ui->comboControllerType, qOverload(&QComboBox::currentIndexChanged), + [&](int index) { + emit HandheldStateChanged(GetControllerTypeFromIndex(index) == + Settings::ControllerType::Handheld); }); } - connect(ui->buttonClearAll, &QPushButton::clicked, [this] { ClearAll(); }); - connect(ui->buttonRestoreDefaults, &QPushButton::clicked, [this] { RestoreDefaults(); }); + // The Debug Controller can only choose the Pro Controller. + if (debug) { + ui->buttonScreenshot->setEnabled(false); + ui->buttonHome->setEnabled(false); + ui->groupConnectedController->setCheckable(false); + QStringList debug_controller_types = { + QStringLiteral("Pro Controller"), + }; + ui->comboControllerType->addItems(debug_controller_types); + } else { + ui->comboControllerType->addItems(controller_types); + } + + UpdateControllerIcon(); + UpdateControllerAvailableButtons(); + connect(ui->comboControllerType, qOverload(&QComboBox::currentIndexChanged), [&](int) { + UpdateControllerIcon(); + UpdateControllerAvailableButtons(); + }); + + connect(ui->comboDevices, qOverload(&QComboBox::currentIndexChanged), + [&] { UpdateMappingWithDefaults(); }); + + ui->buttonRefreshDevices->setIcon(QIcon::fromTheme(QStringLiteral("view-refresh"))); + UpdateInputDevices(); + connect(ui->buttonRefreshDevices, &QPushButton::clicked, [&] { emit RefreshInputDevices(); }); timeout_timer->setSingleShot(true); connect(timeout_timer.get(), &QTimer::timeout, [this] { SetPollingResult({}, true); }); @@ -416,20 +424,7 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i } }); - controller_color_buttons = { - ui->left_body_button, - ui->left_buttons_button, - ui->right_body_button, - ui->right_buttons_button, - }; - - for (std::size_t i = 0; i < controller_color_buttons.size(); ++i) { - connect(controller_color_buttons[i], &QPushButton::clicked, this, - [this, i] { OnControllerButtonClick(static_cast(i)); }); - } - LoadConfiguration(); - resize(0, 0); // TODO(wwylele): enable this when we actually emulate it ui->buttonHome->setEnabled(false); @@ -438,27 +433,43 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i ConfigureInputPlayer::~ConfigureInputPlayer() = default; void ConfigureInputPlayer::ApplyConfiguration() { - auto& buttons = - debug ? Settings::values.debug_pad_buttons : Settings::values.players[player_index].buttons; - auto& analogs = - debug ? Settings::values.debug_pad_analogs : Settings::values.players[player_index].analogs; + auto& player = Settings::values.players[player_index]; + auto& buttons = debug ? Settings::values.debug_pad_buttons : player.buttons; + auto& analogs = debug ? Settings::values.debug_pad_analogs : player.analogs; std::transform(buttons_param.begin(), buttons_param.end(), buttons.begin(), [](const Common::ParamPackage& param) { return param.Serialize(); }); std::transform(analogs_param.begin(), analogs_param.end(), analogs.begin(), [](const Common::ParamPackage& param) { return param.Serialize(); }); - if (debug) + if (debug) { return; + } - std::array colors{}; - std::transform(controller_colors.begin(), controller_colors.end(), colors.begin(), - [](QColor color) { return color.rgb(); }); + player.controller_type = + static_cast(ui->comboControllerType->currentIndex()); + player.connected = ui->groupConnectedController->isChecked(); - Settings::values.players[player_index].body_color_left = colors[0]; - Settings::values.players[player_index].button_color_left = colors[1]; - Settings::values.players[player_index].body_color_right = colors[2]; - Settings::values.players[player_index].button_color_right = colors[3]; + // Player 2-8 + if (player_index != 0) { + UpdateController(player.controller_type, player_index, player.connected); + return; + } + + // Player 1 and Handheld + auto& handheld = Settings::values.players[HANDHELD_INDEX]; + // If Handheld is selected, copy all the settings from Player 1 to Handheld. + if (player.controller_type == Settings::ControllerType::Handheld) { + handheld = player; + handheld.connected = ui->groupConnectedController->isChecked(); + player.connected = false; // Disconnect Player 1 + } else { + player.connected = ui->groupConnectedController->isChecked(); + handheld.connected = false; // Disconnect Handheld + } + + UpdateController(player.controller_type, player_index, player.connected); + UpdateController(Settings::ControllerType::Handheld, HANDHELD_INDEX, handheld.connected); } void ConfigureInputPlayer::changeEvent(QEvent* event) { @@ -466,24 +477,16 @@ void ConfigureInputPlayer::changeEvent(QEvent* event) { RetranslateUI(); } - QDialog::changeEvent(event); + QWidget::changeEvent(event); } void ConfigureInputPlayer::RetranslateUI() { ui->retranslateUi(this); - UpdateButtonLabels(); -} - -void ConfigureInputPlayer::OnControllerButtonClick(int i) { - const QColor new_bg_color = QColorDialog::getColor(controller_colors[i]); - if (!new_bg_color.isValid()) - return; - controller_colors[i] = new_bg_color; - controller_color_buttons[i]->setStyleSheet( - QStringLiteral("QPushButton { background-color: %1 }").arg(controller_colors[i].name())); + UpdateUI(); } void ConfigureInputPlayer::LoadConfiguration() { + auto& player = Settings::values.players[player_index]; if (debug) { std::transform(Settings::values.debug_pad_buttons.begin(), Settings::values.debug_pad_buttons.end(), buttons_param.begin(), @@ -492,56 +495,53 @@ void ConfigureInputPlayer::LoadConfiguration() { Settings::values.debug_pad_analogs.end(), analogs_param.begin(), [](const std::string& str) { return Common::ParamPackage(str); }); } else { - std::transform(Settings::values.players[player_index].buttons.begin(), - Settings::values.players[player_index].buttons.end(), buttons_param.begin(), + std::transform(player.buttons.begin(), player.buttons.end(), buttons_param.begin(), [](const std::string& str) { return Common::ParamPackage(str); }); - std::transform(Settings::values.players[player_index].analogs.begin(), - Settings::values.players[player_index].analogs.end(), analogs_param.begin(), + std::transform(player.analogs.begin(), player.analogs.end(), analogs_param.begin(), [](const std::string& str) { return Common::ParamPackage(str); }); } - UpdateButtonLabels(); + UpdateUI(); - if (debug) + if (debug) { return; + } - std::array colors = { - Settings::values.players[player_index].body_color_left, - Settings::values.players[player_index].button_color_left, - Settings::values.players[player_index].body_color_right, - Settings::values.players[player_index].button_color_right, - }; + ui->comboControllerType->setCurrentIndex(static_cast(player.controller_type)); + ui->groupConnectedController->setChecked( + player.connected || + (player_index == 0 && Settings::values.players[HANDHELD_INDEX].connected)); +} - std::transform(colors.begin(), colors.end(), controller_colors.begin(), - [](u32 rgb) { return QColor::fromRgb(rgb); }); - - for (std::size_t i = 0; i < colors.size(); ++i) { - controller_color_buttons[i]->setStyleSheet( - QStringLiteral("QPushButton { background-color: %1 }") - .arg(controller_colors[i].name())); +void ConfigureInputPlayer::UpdateInputDevices() { + input_devices = InputCommon::GetInputDevices(); + ui->comboDevices->clear(); + for (auto device : input_devices) { + ui->comboDevices->addItem(QString::fromStdString(device.Get("display", "Unknown")), {}); } } void ConfigureInputPlayer::RestoreDefaults() { - for (int button_id = 0; button_id < Settings::NativeButton::NumButtons; button_id++) { + // Reset Buttons + for (int button_id = 0; button_id < Settings::NativeButton::NumButtons; ++button_id) { buttons_param[button_id] = Common::ParamPackage{ InputCommon::GenerateKeyboardParam(Config::default_buttons[button_id])}; } - - for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; analog_id++) { - for (int sub_button_id = 0; sub_button_id < ANALOG_SUB_BUTTONS_NUM; sub_button_id++) { + // Reset Analogs + for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; ++analog_id) { + for (int sub_button_id = 0; sub_button_id < ANALOG_SUB_BUTTONS_NUM; ++sub_button_id) { Common::ParamPackage params{InputCommon::GenerateKeyboardParam( Config::default_analogs[analog_id][sub_button_id])}; - SetAnalogButton(params, analogs_param[analog_id], analog_sub_buttons[sub_button_id]); + SetAnalogParam(params, analogs_param[analog_id], analog_sub_buttons[sub_button_id]); } } - - UpdateButtonLabels(); - ApplyConfiguration(); + UpdateUI(); + UpdateInputDevices(); + ui->comboControllerType->setCurrentIndex(0); } void ConfigureInputPlayer::ClearAll() { - for (int button_id = 0; button_id < Settings::NativeButton::NumButtons; button_id++) { + for (int button_id = 0; button_id < Settings::NativeButton::NumButtons; ++button_id) { const auto* const button = button_map[button_id]; if (button == nullptr || !button->isEnabled()) { continue; @@ -550,8 +550,8 @@ void ConfigureInputPlayer::ClearAll() { buttons_param[button_id].Clear(); } - for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; analog_id++) { - for (int sub_button_id = 0; sub_button_id < ANALOG_SUB_BUTTONS_NUM; sub_button_id++) { + for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; ++analog_id) { + for (int sub_button_id = 0; sub_button_id < ANALOG_SUB_BUTTONS_NUM; ++sub_button_id) { const auto* const analog_button = analog_map_buttons[analog_id][sub_button_id]; if (analog_button == nullptr || !analog_button->isEnabled()) { continue; @@ -561,17 +561,17 @@ void ConfigureInputPlayer::ClearAll() { } } - UpdateButtonLabels(); - ApplyConfiguration(); + UpdateUI(); + UpdateInputDevices(); } -void ConfigureInputPlayer::UpdateButtonLabels() { - for (int button = 0; button < Settings::NativeButton::NumButtons; button++) { +void ConfigureInputPlayer::UpdateUI() { + for (int button = 0; button < Settings::NativeButton::NumButtons; ++button) { button_map[button]->setText(ButtonToText(buttons_param[button])); } - for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; analog_id++) { - for (int sub_button_id = 0; sub_button_id < ANALOG_SUB_BUTTONS_NUM; sub_button_id++) { + for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; ++analog_id) { + for (int sub_button_id = 0; sub_button_id < ANALOG_SUB_BUTTONS_NUM; ++sub_button_id) { auto* const analog_button = analog_map_buttons[analog_id][sub_button_id]; if (analog_button == nullptr) { @@ -581,52 +581,75 @@ void ConfigureInputPlayer::UpdateButtonLabels() { analog_button->setText( AnalogToText(analogs_param[analog_id], analog_sub_buttons[sub_button_id])); } - analog_map_stick[analog_id]->setText(tr("Set Analog Stick")); + const auto deadzone_label = analog_map_deadzone_label[analog_id]; + const auto deadzone_slider = analog_map_deadzone_slider[analog_id]; + const auto modifier_groupbox = analog_map_modifier_groupbox[analog_id]; + const auto modifier_label = analog_map_modifier_label[analog_id]; + const auto modifier_slider = analog_map_modifier_slider[analog_id]; + const auto range_groupbox = analog_map_range_groupbox[analog_id]; + const auto range_spinbox = analog_map_range_spinbox[analog_id]; + + int slider_value; auto& param = analogs_param[analog_id]; - auto* const analog_stick_slider = analog_map_deadzone_and_modifier_slider[analog_id]; - auto* const analog_stick_slider_label = - analog_map_deadzone_and_modifier_slider_label[analog_id]; + const bool is_controller = + param.Get("engine", "") == "sdl" || param.Get("engine", "") == "gcpad"; - if (param.Has("engine")) { - if (param.Get("engine", "") == "sdl" || param.Get("engine", "") == "gcpad") { - if (!param.Has("deadzone")) { - param.Set("deadzone", 0.1f); - } - - analog_stick_slider->setValue(static_cast(param.Get("deadzone", 0.1f) * 100)); - if (analog_stick_slider->value() == 0) { - analog_stick_slider_label->setText(tr("Deadzone: 0%")); - } - } else { - if (!param.Has("modifier_scale")) { - param.Set("modifier_scale", 0.5f); - } - - analog_stick_slider->setValue( - static_cast(param.Get("modifier_scale", 0.5f) * 100)); - if (analog_stick_slider->value() == 0) { - analog_stick_slider_label->setText(tr("Modifier Scale: 0%")); - } + if (is_controller) { + if (!param.Has("deadzone")) { + param.Set("deadzone", 0.1f); } + slider_value = static_cast(param.Get("deadzone", 0.1f) * 100); + deadzone_label->setText(tr("Deadzone: %1%").arg(slider_value)); + deadzone_slider->setValue(slider_value); + if (!param.Has("range")) { + param.Set("range", 1.0f); + } + range_spinbox->setValue(static_cast(param.Get("range", 1.0f) * 100)); + } else { + if (!param.Has("modifier_scale")) { + param.Set("modifier_scale", 0.5f); + } + slider_value = static_cast(param.Get("modifier_scale", 0.5f) * 100); + modifier_label->setText(tr("Modifier Range: %1%").arg(slider_value)); + modifier_slider->setValue(slider_value); } + + deadzone_label->setVisible(is_controller); + deadzone_slider->setVisible(is_controller); + modifier_groupbox->setVisible(!is_controller); + modifier_label->setVisible(!is_controller); + modifier_slider->setVisible(!is_controller); + range_groupbox->setVisible(is_controller); } } +void ConfigureInputPlayer::UpdateMappingWithDefaults() { + if (ui->comboDevices->currentIndex() < 2) { + return; + } + const auto& device = input_devices[ui->comboDevices->currentIndex()]; + auto button_mapping = InputCommon::GetButtonMappingForDevice(device); + auto analog_mapping = InputCommon::GetAnalogMappingForDevice(device); + for (int i = 0; i < buttons_param.size(); ++i) { + buttons_param[i] = button_mapping[static_cast(i)]; + } + for (int i = 0; i < analogs_param.size(); ++i) { + analogs_param[i] = analog_mapping[static_cast(i)]; + } + + UpdateUI(); +} + void ConfigureInputPlayer::HandleClick( QPushButton* button, std::function new_input_setter, InputCommon::Polling::DeviceType type) { - button->setText(tr("[press key]")); + button->setText(tr("[waiting]")); button->setFocus(); - // Keyboard keys can only be used as button devices - want_keyboard_keys = type == InputCommon::Polling::DeviceType::Button; - if (want_keyboard_keys) { - const auto iter = std::find(button_map.begin(), button_map.end(), button); - ASSERT(iter != button_map.end()); - const auto index = std::distance(button_map.begin(), iter); - ASSERT(index < Settings::NativeButton::NumButtons && index >= 0); - } + // The first two input devices are always Any and Keyboard. If the user filtered to a + // controller, then they don't want keyboard input + want_keyboard_keys = ui->comboDevices->currentIndex() < 2; input_setter = new_input_setter; @@ -636,20 +659,17 @@ void ConfigureInputPlayer::HandleClick( poller->Start(); } - grabKeyboard(); - grabMouse(); if (type == InputCommon::Polling::DeviceType::Button) { InputCommon::GetGCButtons()->BeginConfiguration(); } else { InputCommon::GetGCAnalogs()->BeginConfiguration(); } - timeout_timer->start(5000); // Cancel after 5 seconds - poll_timer->start(200); // Check for new inputs every 200ms + + timeout_timer->start(2500); // Cancel after 2.5 seconds + poll_timer->start(50); // Check for new inputs every 50ms } void ConfigureInputPlayer::SetPollingResult(const Common::ParamPackage& params, bool abort) { - releaseKeyboard(); - releaseMouse(); timeout_timer->stop(); poll_timer->stop(); for (auto& poller : device_pollers) { @@ -663,7 +683,7 @@ void ConfigureInputPlayer::SetPollingResult(const Common::ParamPackage& params, (*input_setter)(params); } - UpdateButtonLabels(); + UpdateUI(); input_setter = std::nullopt; } @@ -683,3 +703,114 @@ void ConfigureInputPlayer::keyPressEvent(QKeyEvent* event) { } SetPollingResult({}, true); } + +void ConfigureInputPlayer::UpdateControllerIcon() { + // We aren't using Qt's built in theme support here since we aren't drawing an icon (and its + // "nonstandard" to use an image through the icon support) + QString stylesheet{}; + switch (GetControllerTypeFromIndex(ui->comboControllerType->currentIndex())) { + case Settings::ControllerType::ProController: + stylesheet = QStringLiteral("image: url(:/controller/pro_controller%0)"); + break; + case Settings::ControllerType::DualJoyconDetached: + stylesheet = QStringLiteral("image: url(:/controller/dual_joycon%0)"); + break; + case Settings::ControllerType::LeftJoycon: + stylesheet = QStringLiteral("image: url(:/controller/single_joycon_left_vertical%0)"); + break; + case Settings::ControllerType::RightJoycon: + stylesheet = QStringLiteral("image: url(:/controller/single_joycon_right_vertical%0)"); + break; + case Settings::ControllerType::Handheld: + stylesheet = QStringLiteral("image: url(:/controller/handheld%0)"); + break; + default: + break; + } + + const QString theme = [this] { + if (QIcon::themeName().contains(QStringLiteral("dark"))) { + return QStringLiteral("_dark"); + } else if (QIcon::themeName().contains(QStringLiteral("midnight"))) { + return QStringLiteral("_midnight"); + } else { + return QString{}; + } + }(); + + ui->controllerFrame->setStyleSheet(stylesheet.arg(theme)); +} + +void ConfigureInputPlayer::UpdateControllerAvailableButtons() { + auto layout = GetControllerTypeFromIndex(ui->comboControllerType->currentIndex()); + if (debug) { + layout = Settings::ControllerType::DualJoyconDetached; + } + + // List of all the widgets that will be hidden by any of the following layouts that need + // "unhidden" after the controller type changes + const std::vector layout_show = { + ui->buttonShoulderButtonsSLSR, + ui->horizontalSpacerShoulderButtonsWidget, + ui->horizontalSpacerShoulderButtonsWidget2, + ui->buttonShoulderButtonsLeft, + ui->buttonMiscButtonsMinusScreenshot, + ui->bottomLeft, + ui->buttonShoulderButtonsRight, + ui->buttonMiscButtonsPlusHome, + ui->bottomRight, + }; + + for (auto* widget : layout_show) { + widget->show(); + } + + std::vector layout_hidden; + switch (layout) { + case Settings::ControllerType::ProController: + layout_hidden = { + ui->buttonShoulderButtonsSLSR, + ui->horizontalSpacerShoulderButtonsWidget2, + }; + break; + case Settings::ControllerType::DualJoyconDetached: + case Settings::ControllerType::Handheld: + layout_hidden = { + ui->buttonShoulderButtonsSLSR, + ui->horizontalSpacerShoulderButtonsWidget2, + }; + break; + case Settings::ControllerType::LeftJoycon: + layout_hidden = { + ui->horizontalSpacerShoulderButtonsWidget2, + ui->buttonShoulderButtonsRight, + ui->buttonMiscButtonsPlusHome, + ui->bottomRight, + }; + break; + case Settings::ControllerType::RightJoycon: + layout_hidden = { + ui->horizontalSpacerShoulderButtonsWidget, + ui->buttonShoulderButtonsLeft, + ui->buttonMiscButtonsMinusScreenshot, + ui->bottomLeft, + }; + break; + } + + for (auto* widget : layout_hidden) { + widget->hide(); + } +} + +void ConfigureInputPlayer::showEvent(QShowEvent* event) { + if (bottom_row == nullptr) { + return; + } + QWidget::showEvent(event); + ui->main->addWidget(bottom_row); +} + +void ConfigureInputPlayer::ConnectPlayer(bool connected) { + ui->groupConnectedController->setChecked(connected); +} diff --git a/src/yuzu/configuration/configure_input_player.h b/src/yuzu/configuration/configure_input_player.h index 95afa53752..a86db82006 100644 --- a/src/yuzu/configuration/configure_input_player.h +++ b/src/yuzu/configuration/configure_input_player.h @@ -15,11 +15,17 @@ #include "common/param_package.h" #include "core/settings.h" #include "ui_configure_input.h" +#include "yuzu/uisettings.h" +class QCheckBox; class QKeyEvent; +class QLabel; class QPushButton; +class QSlider; +class QSpinBox; class QString; class QTimer; +class QWidget; namespace InputCommon::Polling { class DevicePoller; @@ -30,43 +36,73 @@ namespace Ui { class ConfigureInputPlayer; } -class ConfigureInputPlayer : public QDialog { +class ConfigureInputPlayer : public QWidget { Q_OBJECT public: - explicit ConfigureInputPlayer(QWidget* parent, std::size_t player_index, bool debug = false); + explicit ConfigureInputPlayer(QWidget* parent, std::size_t player_index, QWidget* bottom_row, + bool debug = false); ~ConfigureInputPlayer() override; - /// Save all button configurations to settings file + /// Save all button configurations to settings file. void ApplyConfiguration(); + /// Update the input devices combobox. + void UpdateInputDevices(); + + /// Restore all buttons to their default values. + void RestoreDefaults(); + + /// Clear all input configuration. + void ClearAll(); + + /// Set the connection state checkbox (used to sync state). + void ConnectPlayer(bool connected); + +signals: + /// Emitted when this controller is connected by the user. + void Connected(bool connected); + /// Emitted when the Handheld mode is selected (undocked with dual joycons attached). + void HandheldStateChanged(bool is_handheld); + /// Emitted when the input devices combobox is being refreshed. + void RefreshInputDevices(); + +protected: + void showEvent(QShowEvent* event) override; + private: void changeEvent(QEvent* event) override; void RetranslateUI(); - void OnControllerButtonClick(int i); - /// Load configuration settings. void LoadConfiguration(); - /// Restore all buttons to their default values. - void RestoreDefaults(); - /// Clear all input configuration - void ClearAll(); - - /// Update UI to reflect current configuration. - void UpdateButtonLabels(); /// Called when the button was pressed. void HandleClick(QPushButton* button, std::function new_input_setter, InputCommon::Polling::DeviceType type); - /// Finish polling and configure input using the input_setter + /// Finish polling and configure input using the input_setter. void SetPollingResult(const Common::ParamPackage& params, bool abort); /// Handle key press events. void keyPressEvent(QKeyEvent* event) override; + /// Update UI to reflect current configuration. + void UpdateUI(); + + /// Update the controller selection combobox + void UpdateControllerCombobox(); + + /// Update the current controller icon. + void UpdateControllerIcon(); + + /// Hides and disables controller settings based on the current controller type. + void UpdateControllerAvailableButtons(); + + /// Gets the default controller mapping for this device and auto configures the input to match. + void UpdateMappingWithDefaults(); + std::unique_ptr ui; std::size_t player_index; @@ -75,32 +111,38 @@ private: std::unique_ptr timeout_timer; std::unique_ptr poll_timer; + static constexpr int PLAYER_COUNT = 8; + std::array player_connected_checkbox; + /// This will be the the setting function when an input is awaiting configuration. std::optional> input_setter; std::array buttons_param; std::array analogs_param; - static constexpr int ANALOG_SUB_BUTTONS_NUM = 5; + static constexpr int ANALOG_SUB_BUTTONS_NUM = 4; + // Adds room for two extra push buttons LStick Modifier and RStick Modifier. + static constexpr int BUTTON_MAP_COUNT = Settings::NativeButton::NumButtons + 2; /// Each button input is represented by a QPushButton. - std::array button_map; + std::array button_map; + /// Extra buttons for the modifiers. + Common::ParamPackage lstick_mod; + Common::ParamPackage rstick_mod; - std::vector debug_hidden; - std::vector layout_hidden; - - /// A group of five QPushButtons represent one analog input. The buttons each represent up, - /// down, left, right, and modifier, respectively. + /// A group of four QPushButtons represent one analog input. The buttons each represent up, + /// down, left, right, respectively. std::array, Settings::NativeAnalog::NumAnalogs> analog_map_buttons; - /// Analog inputs are also represented each with a single button, used to configure with an - /// actual analog stick - std::array analog_map_stick; - std::array - analog_map_deadzone_and_modifier_slider; - std::array - analog_map_deadzone_and_modifier_slider_label; + std::array analog_map_deadzone_label; + std::array analog_map_deadzone_slider; + std::array analog_map_modifier_groupbox; + std::array analog_map_modifier_button; + std::array analog_map_modifier_label; + std::array analog_map_modifier_slider; + std::array analog_map_range_groupbox; + std::array analog_map_range_spinbox; static const std::array analog_sub_buttons; @@ -110,6 +152,12 @@ private: /// keyboard events are ignored. bool want_keyboard_keys = false; - std::array controller_color_buttons; - std::array controller_colors; + /// List of physical devices users can map with. If a SDL backed device is selected, then you + /// can usue this device to get a default mapping. + std::vector input_devices; + + /// Bottom row is where console wide settings are held, and its "owned" by the parent + /// ConfigureInput widget. On show, add this widget to the main layout. This will change the + /// parent of the widget to this widget (but thats fine). + QWidget* bottom_row; }; diff --git a/src/yuzu/configuration/configure_input_player.ui b/src/yuzu/configuration/configure_input_player.ui index f27a77180a..eb826a9359 100644 --- a/src/yuzu/configuration/configure_input_player.ui +++ b/src/yuzu/configuration/configure_input_player.ui @@ -1,1243 +1,2974 @@ ConfigureInputPlayer - + 0 0 - 408 - 731 + 780 + 487 Configure Input - + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + - - - - - Right Stick + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 3 - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + 0 - - false - - - false - - - - + + + + Qt::LeftToRight + + + Connect Controller + + + false + + + true + + + + 5 + + + 5 + + + 5 + + + 5 + - + - - - Down: - - + + Pro Controller + + + + + Dual Joycons + + + + + Left Joycon + + + + + Right Joycon + + + + + Handheld + - - - - - - - - - - + + + + + + Input Device + + + + 3 + + + 5 + + + 5 + + + 5 + + + 5 + - + - - - Right: - - + + Any + + + + + Keyboard + - - - - - - - - - - - - - Set Analog Stick - - - - - - - - - - Left: - - - - - - - - - - - - - - - - - - - - - - Up: - - - - - - - - - - - - - - - - - - - - - - Pressed: - - - - - - - - - - - - - - - - - - - - - - Modifier: - - - - - - - - - - - - - - - - - - - - - - Deadzone: 0 - - - Qt::AlignHCenter - - - - - - - - - Qt::Horizontal - - - - - - - - - Qt::Vertical - - - - 0 - 0 - - - - - - - - - - - Directional Pad - - - false - - - false - - - - - - - - - - Up: - - - - - - - - - - - - - - - - - - - - - - Down: - - - - - - - - - - - - - - - - - - - - - - - 80 - 0 - - - - Left: - - - - - - - - - - - - - - - - - - - - - - - 80 - 0 - - - - Right: - - - - - - - - - - - - - - - - - - - - - Face Buttons - - - false - - - false - - - - - - - - - - - 80 - 0 - - - - A: - - - - - - - - - - - - - - - - - - - - - - - 80 - 0 - - - - B: - - - - - - - - - - - - - - - - - - - - - - X: - - - - - - - - - - - - - - - - - - - - - - Y: - - - - - - - - - - - - - - - - - - - - - Controller Color - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Left Body - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 90 - 0 - - - - Left Buttons - - - - - - - - 0 - 0 - - - - - 32 - 0 - - - - - 40 - 16777215 - - - - - - - - - - - Right Body - - - - - - - - 90 - 0 - - - - Right Buttons - - - - - - - - 0 - 0 - - - - - 32 - 0 - - - - - 40 - 16777215 - - - - - - - - - - - - 0 - 0 - - - - - 32 - 0 - - - - - 40 - 16777215 - - - - - - - - - - - - 0 - 0 - - - - - 32 - 0 - - - - - 40 - 16777215 - - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - - - - Left Stick - - - false - - - false - - - - - - - - - - Up: - - - - - - - - - - - - - - - - - - - - - - Right: - - - - - - - - - - - - - - - - - - Set Analog Stick - - - - - - - - - - - Left: - - - - - - - - - - - - - - - - - - - - - - Down: - - - - - - - - - - - - - - - - - - - - - - Modifier: - - - - - - - - - - - - - - - - - - - - - - Pressed: - - - - - - - - - - - - - - - - - - QLayout::SetDefaultConstraint - - - - - - - Deadzone: 0 - - - Qt::AlignHCenter - - - - - - - - - Qt::Horizontal - - - - - - - - - Qt::Vertical - - - - 0 - 0 - - - - - - - - - - - Shoulder Buttons - - - false - - - false - - - - - - - - - - L: - - - - - - - - - - - - - - - - - - - - - - R: - - - - - - - - - - - - - - - - - - - - - - ZL: - - - - - - - - - - - - - - - - - - - - - - ZR: - - - - - - - - - - - - - - - - - - - - - - SL: - - - - - - - - - - - - - - - - - - - - - - SR: - - - - - - - - - - - - - - - - - - - - - Misc. - - - false - - - false - - - - - - - - - - Minus: - - - - - - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Plus: - - - - - - - - - - - - - - - - - - - - - - Home: - - - - - - - - - - - - - - - - - - - - - - Screen Capture: - - - false - - - - - - - - - - 0 - 0 - + + + + 24 + 22 + - 80 - 16777215 + 24 + 22 - - + + + + + + + + + 0 + 0 + + + + Profile + + + + 3 + + + 5 + + + 5 + + + 5 + + + 5 + + + + + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Save + + + + + + + + 55 + 16777215 + + + + min-width: 55px; + + + New + + + + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Delete + + + + + + + + + + + + + 0 + 0 + + + + + QLayout::SetMinimumSize + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + QLayout::SetDefaultConstraint + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + Left Stick + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + 0 + + + QLayout::SetDefaultConstraint + + + 3 + + + 0 + + + 3 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + Up + + + Qt::AlignCenter + + + false + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Up + + + + + + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + + + + 3 + + + + + Left + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Left + + + + + + + + + + Right + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Right + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + Down + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Down + + + + + + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + + + + 3 + + + + + Pressed + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Pressed + + + + + + + + + + Modifier + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Modifier + + + + + + + + + + Range + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 55 + 21 + + + + + 55 + 16777215 + + + + % + + + 50 + + + 150 + + + 100 + + + + + + + + + + + + 3 + + + QLayout::SetDefaultConstraint + + + 0 + + + 2 + + + 0 + + + 3 + + + + + + + Deadzone: 0% + + + Qt::AlignHCenter + + + + + + + + + 100 + + + Qt::Horizontal + + + + + + + + + Modifier Range: 0% + + + Qt::AlignHCenter + + + + + + + + + 100 + + + Qt::Horizontal + + + + + + + + + + + + Qt::Vertical + + + + 20 + 0 + + + + + + + + + 0 + 0 + + + + D-Pad + + + false + + + false + + + + 0 + + + 3 + + + 0 + + + 3 + + + 3 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + Up + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Up + + + + + + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + + + + 3 + + + + + Left + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Left + + + + + + + + + + Right + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Right + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + Down + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Down + + + + + + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 0 + + + + + + + + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 3 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + L + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + L + + + + + + + + + + ZL + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + ZL + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 0 + 20 + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Minus + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Minus + + + + + + + + + + Capture + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Capture + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Plus + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Plus + + + + + + + + + + Home + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Home + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 0 + 20 + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + R + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + R + + + + + + + + + + ZR + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + ZR + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 0 + 20 + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + SL + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + SL + + + + + + + + + + SR + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + SR + + + + + + + + + + + + + + + + 0 + 0 + + + + + 75 + true + + + + image: url(:/controller/pro); + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + 3 + + + + + Qt::Horizontal + + + + 40 + 0 + + + + + + + + Qt::Horizontal + + + + 40 + 0 + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + Face Buttons + + + false + + + false + + + + 0 + + + 3 + + + 0 + + + 3 + + + 3 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + X + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + X + + + + + + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + + + + 3 + + + + + Y + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Y + + + + + + + + + + A + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + A + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + B + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + B + + + + + + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 0 + + + + + + + + + 0 + 0 + + + + Right Stick + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + false + + + false + + + + 0 + + + 3 + + + 0 + + + 3 + + + 0 + + + + + + 0 + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + Up + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Up + + + + + + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + + + + 3 + + + + + Left + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Left + + + + + + + + + + Right + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Right + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + Down + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Down + + + + + + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + + + + 3 + + + + + Pressed + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Pressed + + + + + + + + + + Modifier + + + Qt::AlignCenter + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 57 + 0 + + + + + 55 + 16777215 + + + + min-width: 55px; + + + Modifier + + + + + + + + + + Range + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 55 + 21 + + + + + 55 + 16777215 + + + + % + + + 50 + + + 150 + + + 100 + + + + + + + + + + + + 3 + + + 0 + + + 2 + + + 0 + + + 3 + + + + + + + Deadzone: 0% + + + Qt::AlignHCenter + + + + + + + + + 100 + + + Qt::Horizontal + + + + + + + + + Modifier Range: 0% + + + Qt::AlignHCenter + + + + + + + + + 100 + + + Qt::Horizontal + + + + + + + + + + + + Qt::Vertical + + + + 20 + 0 + + + + + + - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - 0 - 0 - - - - Qt::LeftToRight - - - Clear All - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - 0 - 0 - - - - Qt::LeftToRight - - - Restore Defaults - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - buttonBox - accepted() - ConfigureInputPlayer - accept() - - - 371 - 730 - - - 229 - 375 - - - - - buttonBox - rejected() - ConfigureInputPlayer - reject() - - - 371 - 730 - - - 229 - 375 - - - - + + + + diff --git a/src/yuzu/configuration/configure_input_simple.cpp b/src/yuzu/configuration/configure_input_simple.cpp deleted file mode 100644 index 0e0e8f1139..0000000000 --- a/src/yuzu/configuration/configure_input_simple.cpp +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2016 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#include -#include - -#include "ui_configure_input_simple.h" -#include "yuzu/configuration/configure_input.h" -#include "yuzu/configuration/configure_input_player.h" -#include "yuzu/configuration/configure_input_simple.h" -#include "yuzu/uisettings.h" - -namespace { - -template -void CallConfigureDialog(ConfigureInputSimple* caller, Args&&... args) { - caller->ApplyConfiguration(); - Dialog dialog(caller, std::forward(args)...); - - const auto res = dialog.exec(); - if (res == QDialog::Accepted) { - dialog.ApplyConfiguration(); - } -} - -// OnProfileSelect functions should (when applicable): -// - Set controller types -// - Set controller enabled -// - Set docked mode -// - Set advanced controller config/enabled (i.e. debug, kbd, mouse, touch) -// -// OnProfileSelect function should NOT however: -// - Reset any button mappings -// - Open any dialogs -// - Block in any way - -constexpr std::size_t PLAYER_0_INDEX = 0; -constexpr std::size_t HANDHELD_INDEX = 8; - -void HandheldOnProfileSelect() { - Settings::values.players[HANDHELD_INDEX].connected = true; - Settings::values.players[HANDHELD_INDEX].type = Settings::ControllerType::DualJoycon; - - for (std::size_t player = 0; player < HANDHELD_INDEX; ++player) { - Settings::values.players[player].connected = false; - } - - Settings::values.use_docked_mode = false; - Settings::values.keyboard_enabled = false; - Settings::values.mouse_enabled = false; - Settings::values.debug_pad_enabled = false; - Settings::values.touchscreen.enabled = true; -} - -void DualJoyconsDockedOnProfileSelect() { - Settings::values.players[PLAYER_0_INDEX].connected = true; - Settings::values.players[PLAYER_0_INDEX].type = Settings::ControllerType::DualJoycon; - - for (std::size_t player = 1; player <= HANDHELD_INDEX; ++player) { - Settings::values.players[player].connected = false; - } - - Settings::values.use_docked_mode = true; - Settings::values.keyboard_enabled = false; - Settings::values.mouse_enabled = false; - Settings::values.debug_pad_enabled = false; - Settings::values.touchscreen.enabled = true; -} - -// Name, OnProfileSelect (called when selected in drop down), OnConfigure (called when configure -// is clicked) -using InputProfile = std::tuple; - -constexpr std::array INPUT_PROFILES{{ - {QT_TR_NOOP("Single Player - Handheld - Undocked"), HandheldOnProfileSelect, - [](ConfigureInputSimple* caller) { - CallConfigureDialog(caller, HANDHELD_INDEX, false); - }}, - {QT_TR_NOOP("Single Player - Dual Joycons - Docked"), DualJoyconsDockedOnProfileSelect, - [](ConfigureInputSimple* caller) { - CallConfigureDialog(caller, PLAYER_0_INDEX, false); - }}, - {QT_TR_NOOP("Custom"), [] {}, CallConfigureDialog}, -}}; - -} // namespace - -void ApplyInputProfileConfiguration(int profile_index) { - std::get<1>( - INPUT_PROFILES.at(std::min(profile_index, static_cast(INPUT_PROFILES.size() - 1))))(); -} - -ConfigureInputSimple::ConfigureInputSimple(QWidget* parent) - : QWidget(parent), ui(std::make_unique()) { - ui->setupUi(this); - - for (const auto& profile : INPUT_PROFILES) { - const QString label = tr(std::get<0>(profile)); - ui->profile_combobox->addItem(label, label); - } - - connect(ui->profile_combobox, QOverload::of(&QComboBox::currentIndexChanged), this, - &ConfigureInputSimple::OnSelectProfile); - connect(ui->profile_configure, &QPushButton::clicked, this, &ConfigureInputSimple::OnConfigure); - - LoadConfiguration(); -} - -ConfigureInputSimple::~ConfigureInputSimple() = default; - -void ConfigureInputSimple::ApplyConfiguration() { - auto index = ui->profile_combobox->currentIndex(); - // Make the stored index for "Custom" very large so that if new profiles are added it - // doesn't change. - if (index >= static_cast(INPUT_PROFILES.size() - 1)) { - index = std::numeric_limits::max(); - } - - UISettings::values.profile_index = index; -} - -void ConfigureInputSimple::changeEvent(QEvent* event) { - if (event->type() == QEvent::LanguageChange) { - RetranslateUI(); - } - - QWidget::changeEvent(event); -} - -void ConfigureInputSimple::RetranslateUI() { - ui->retranslateUi(this); -} - -void ConfigureInputSimple::LoadConfiguration() { - const auto index = UISettings::values.profile_index; - if (index >= static_cast(INPUT_PROFILES.size()) || index < 0) { - ui->profile_combobox->setCurrentIndex(static_cast(INPUT_PROFILES.size() - 1)); - } else { - ui->profile_combobox->setCurrentIndex(index); - } -} - -void ConfigureInputSimple::OnSelectProfile(int index) { - const auto old_docked = Settings::values.use_docked_mode; - ApplyInputProfileConfiguration(index); - OnDockedModeChanged(old_docked, Settings::values.use_docked_mode); -} - -void ConfigureInputSimple::OnConfigure() { - std::get<2>(INPUT_PROFILES.at(ui->profile_combobox->currentIndex()))(this); -} diff --git a/src/yuzu/configuration/configure_input_simple.h b/src/yuzu/configuration/configure_input_simple.h deleted file mode 100644 index bb50502243..0000000000 --- a/src/yuzu/configuration/configure_input_simple.h +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2016 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#pragma once - -#include - -#include - -class QPushButton; -class QString; -class QTimer; - -namespace Ui { -class ConfigureInputSimple; -} - -// Used by configuration loader to apply a profile if the input is invalid. -void ApplyInputProfileConfiguration(int profile_index); - -class ConfigureInputSimple : public QWidget { - Q_OBJECT - -public: - explicit ConfigureInputSimple(QWidget* parent = nullptr); - ~ConfigureInputSimple() override; - - /// Save all button configurations to settings file - void ApplyConfiguration(); - -private: - void changeEvent(QEvent* event) override; - void RetranslateUI(); - - /// Load configuration settings. - void LoadConfiguration(); - - void OnSelectProfile(int index); - void OnConfigure(); - - std::unique_ptr ui; -}; diff --git a/src/yuzu/configuration/configure_input_simple.ui b/src/yuzu/configuration/configure_input_simple.ui deleted file mode 100644 index c4889caa99..0000000000 --- a/src/yuzu/configuration/configure_input_simple.ui +++ /dev/null @@ -1,97 +0,0 @@ - - - ConfigureInputSimple - - - - 0 - 0 - 473 - 685 - - - - ConfigureInputSimple - - - - - - - - Profile - - - - - - Configure - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 250 - 0 - - - - - - - - Choose a controller configuration: - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - diff --git a/src/yuzu/configuration/configure_mouse_advanced.cpp b/src/yuzu/configuration/configure_mouse_advanced.cpp index 5bcf5ffa88..95e1ae8733 100644 --- a/src/yuzu/configuration/configure_mouse_advanced.cpp +++ b/src/yuzu/configuration/configure_mouse_advanced.cpp @@ -205,15 +205,11 @@ void ConfigureMouseAdvanced::HandleClick( poller->Start(); } - grabKeyboard(); - grabMouse(); - timeout_timer->start(5000); // Cancel after 5 seconds - poll_timer->start(200); // Check for new inputs every 200ms + timeout_timer->start(2500); // Cancel after 2.5 seconds + poll_timer->start(50); // Check for new inputs every 50ms } void ConfigureMouseAdvanced::SetPollingResult(const Common::ParamPackage& params, bool abort) { - releaseKeyboard(); - releaseMouse(); timeout_timer->stop(); poll_timer->stop(); for (auto& poller : device_pollers) { diff --git a/src/yuzu/configuration/configure_mouse_advanced.ui b/src/yuzu/configuration/configure_mouse_advanced.ui index 08245ecf0b..74552fdbd7 100644 --- a/src/yuzu/configuration/configure_mouse_advanced.ui +++ b/src/yuzu/configuration/configure_mouse_advanced.ui @@ -6,13 +6,18 @@ 0 0 - 250 - 261 + 310 + 193 Configure Mouse + + QPushButton { + min-width: 55px; +} + @@ -20,81 +25,33 @@ Mouse Buttons - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - + + - + - + - Right: + Forward: - + - 75 + 57 0 - - + + + 16777215 + 16777215 + - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - - - - - Middle: - - - - - - - @@ -123,6 +80,12 @@ + + + 57 + 0 + + @@ -147,7 +110,7 @@ - 75 + 57 0 @@ -158,21 +121,33 @@ - - + + - + - + - Forward: + Middle: - + + + + 57 + 0 + + + + + 16777215 + 16777215 + + @@ -180,6 +155,98 @@ + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 0 + 20 + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 0 + 20 + + + + + + + + + + + + Right: + + + + + + + + + + 57 + 0 + + + + + 16777215 + 16777215 + + + + + + + + + + + + + Qt::Horizontal + + + + 0 + 20 + + + + + + + + Qt::Horizontal + + + + 0 + 20 + + + + @@ -187,15 +254,39 @@ + + + 57 + 0 + + + + + 16777215 + 16777215 + + - Clear All + Clear + + + 57 + 0 + + + + + 16777215 + 16777215 + + - Restore Defaults + Defaults @@ -206,21 +297,24 @@ - 40 + 0 20 + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + - - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - diff --git a/src/yuzu/uisettings.cpp b/src/yuzu/uisettings.cpp index a51175f36b..37499fc854 100644 --- a/src/yuzu/uisettings.cpp +++ b/src/yuzu/uisettings.cpp @@ -16,4 +16,5 @@ const Themes themes{{ }}; Values values = {}; + } // namespace UISettings diff --git a/src/yuzu/uisettings.h b/src/yuzu/uisettings.h index 2d2e82f15f..533815098d 100644 --- a/src/yuzu/uisettings.h +++ b/src/yuzu/uisettings.h @@ -13,6 +13,7 @@ #include #include #include "common/common_types.h" +#include "core/settings.h" namespace UISettings { @@ -87,9 +88,6 @@ struct Values { // logging bool show_console; - // Controllers - int profile_index; - // Game List bool show_add_ons; uint32_t icon_size; @@ -100,6 +98,7 @@ struct Values { }; extern Values values; + } // namespace UISettings Q_DECLARE_METATYPE(UISettings::GameDir*); diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp index 8a63fd1913..e9f1c65007 100644 --- a/src/yuzu_cmd/config.cpp +++ b/src/yuzu_cmd/config.cpp @@ -288,6 +288,8 @@ void Config::ReadValues() { Settings::values.debug_pad_analogs[i] = default_param; } + Settings::values.vibration_enabled = + sdl2_config->GetBoolean("ControlsGeneral", "vibration_enabled", true); Settings::values.touchscreen.enabled = sdl2_config->GetBoolean("ControlsGeneral", "touch_enabled", true); Settings::values.touchscreen.device = diff --git a/src/yuzu_tester/config.cpp b/src/yuzu_tester/config.cpp index 74022af236..aaf59129a6 100644 --- a/src/yuzu_tester/config.cpp +++ b/src/yuzu_tester/config.cpp @@ -75,6 +75,7 @@ void Config::ReadValues() { Settings::values.debug_pad_analogs[i] = ""; } + Settings::values.vibration_enabled = true; Settings::values.touchscreen.enabled = ""; Settings::values.touchscreen.device = ""; Settings::values.touchscreen.finger = 0;

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 JtaD0e0ss^_%|-wK literal 0 HcmV?d00001 diff --git a/dist/icons/controller/handheld.png b/dist/icons/controller/handheld.png new file mode 100644 index 0000000000000000000000000000000000000000..d009b4a47a2b5695704bf2076c56c6cfe123a2f7 GIT binary patch literal 14108 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 literal 0 HcmV?d00001 diff --git a/dist/icons/controller/handheld_dark.png b/dist/icons/controller/handheld_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..c80ca9259b1daa21c01fa430d16503bb2d3483ea GIT binary patch literal 13731 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