From 5e725be91663aebcbe4fe73556e0f668627b91ab Mon Sep 17 00:00:00 2001 From: Sandro Kalatozishvili Date: Sun, 8 Oct 2023 01:31:54 +0400 Subject: [PATCH] Use submenu orientation function only in case of unleashed firmware --- docs/README.md | 40 +++++++++++++++++++++++++++++++++ screens/horizontal/screen6.png | Bin 0 -> 2315 bytes screens/horizontal/screen7.png | Bin 2315 -> 1817 bytes screens/horizontal/screen8.png | Bin 1807 -> 0 bytes xremote.h | 2 +- xremote_app.c | 10 +++++++-- 6 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 docs/README.md create mode 100644 screens/horizontal/screen6.png delete mode 100644 screens/horizontal/screen8.png diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..0908f50 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,40 @@ +## flipper-xremote +Advanced IR Remote App for Flipper Device + +## About +Navigation to the menu to press each button individually can be often uncomfortable because it requires scrolling to the desired button and selecting it. The idea behind XRemote is that all physical buttons are pre-mapped to specific category buttons, and a physical button directly sends an infrared signal. This allows the flipper device to be used as a remote rather than as a tool that has a remote. + +XRemote also introduces a more user-friendly learning approach. Instead of having to manually name each button on the flipper when cloning a remote, the learning tool informs you upfront which buttons it will record. All you need to do is press the corresponding button on your existing remote, eliminating the need to name them individually. + +The application is compatible with standard .ir files. However, to ensure functionality, names within these files must align with the predefined naming scheme. If the button is not highlighted when pressed or the notification LED does not light up, the button with the appropriate name cannot be found in the file. + +## Button schema +Button name | Description +------------|------------------- +Power | Power +Setup | Setup/Settings +Input | Input/Source +Menu | Menu +List | List +Info | Info +Mode | Mode +Back | Back +Ok | Enter/Ok +Up | Up +Down | Down +Left | Left +Right | Right +Mute | Mute +Vol_up | Volume up +Vol_dn | Volume down +Ch_next | Next channel +Ch_prev | Previous channel +Next | Jump forward +Prev | Jump backward +Fast_fo | Fast forward +Fast_ba | Fast backward +Play_pa | Play/Pause +Pause | Pause +Play | Play +Stop | Stop + diff --git a/screens/horizontal/screen6.png b/screens/horizontal/screen6.png new file mode 100644 index 0000000000000000000000000000000000000000..a9591649875105f23bf18cdd2ddb2114e5c94255 GIT binary patch literal 2315 zcmZWrYgAKL7Cwj;VMLrk7LPQB8Ani9mSP$hRtVsuC`?6#1cU*klPST(h!`P|2&A@4 z3d5s{C@@J-G6f|MOC*5h5gcookw>89QHbF(!<0vWq!0o&1enW$uHHI7?z;D`bMD^X z_wBvEa|_Q#opf~YZ~y=}Mw~hk4Zt?|(FW|?xJ53+zYE{&ubhf!0I>V(jmxIOcQ*=v zogEP;juNxEbGmb-|Ml9tW8fOG=U*1-XCl9u!Ug|m;uoJ?bjuES%{Srp55F^e)$HPg z>dZqeDlX&~8>C`r-MS*rueqA6qKC{^Hw8~8rnX-wU=lQcr$Fie!fpAzyH!To>nC?H zzvk@U2{>oB0Z--3YN!DBY-omA-y*+3`-hL1J-wR#&+;`s_mmUxyaQu80Kl=1PUtU* zW=6MgiLS!1^|uAu#in`++d`WpZqR5NV)l%>8@DU*N?B^NA-EKwg4U$9YlYhBc!`SPP$=Ue>5h))Ro}%@Fqo*g9wgH9NM-S0Z9>rQImn#=cQo&L`$xKjQq_v)=Y_ z3}bL_yLY3$(%yJw>Sq8CHEBHG2k!)sn*#J6-wHA>l&qzmT%Pl1aEn%;^oAM)?S*|| zza{$+(+DT!)D>TuVZCY@#mb8jjQ>tGevmnc0D>U{7e-nWQR(l?FC2XkeqnH;h#sz0 zUu7j_R#aJDPi07~9c2k-EjI|_t%vj?1%kiDnx9p%GK7xUZVcg`I)JGPk5f(gim2K` zT+EvBj>b7+!%nGX9bg@$hiS^r&aSJO{J5B?GJqQNsdfJe=Ib^9M9` z>{hQ#mR^Z9rG1ghJi{Bxzlq?O(Cqa?|M+$+&Hfb$lc<{D=L*Xd30TuLu~fgp`%zb7 zXrnrEs>p_L#DwJXlAqt;kwTg2B_D-%Kv)*su3N>V4zod*S-D*G0MW{C6uNiEcGqD# zZ`YAr(PRc04_a?+b!Kjf;Y)4hQSs z;o9Lp@2;VIxewss3$`%N3K$eF*maLQHC2)i^*oKb?)oW(E%!G6EVEMjl*4bRz1c>c zgB+;p&yOQC(gnOV5Mw8oPK;VaX#E)0=vZ7DID4gY))+xMZG6>CMM5H-qd+;3-UDh_ zA~s>go%U8PqDDtt_XNX+WDu5yT1xwS6Ckl7lIqe}-KdNJm@;df)bPF%=LMtGc0^ddgklWXZo1 zU2uzoZD6-ULlQ%|1JSDiPTX)m>2Kqa+E-`0)qA(e>;W(`tYPb&(#5jSa*aT1_%K($t=l zfw#InRyFS%!mOiv=eaHl-HwmYb+bi3N?H9q#_#PA*v-{BQA?3nhLIR74`o#+bM;FzEVJs%{cvCUq2+Hm=v{$K^ED8qY`dt10^_R5{Jz? zzuZ=hAZ%HfJ*<2rc^Z20^q4cR)vKHRH^fZdSq5V%^-A8E7A@XEh%o+xWB{N)bf_U@ zrZ=1kPVAba|4PdJo-7_mX>Gbnwl=_H6m}3v*U$Nsw#Ypxpc($V0TJ&> CZ?7Z( literal 0 HcmV?d00001 diff --git a/screens/horizontal/screen7.png b/screens/horizontal/screen7.png index a9591649875105f23bf18cdd2ddb2114e5c94255..6b13856a08a30e958f2436f0a72cfee4d4b593ac 100644 GIT binary patch literal 1817 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 CZ?7Z( diff --git a/screens/horizontal/screen8.png b/screens/horizontal/screen8.png deleted file mode 100644 index f7ec55d1ca3efe67726e622a02c3b193f2d4254f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1807 zcmc&#TToM16g`0|Q3Bdh9YqX|jztqP2s8>}c?~pxoj_}N3)=bs5?&fHgp}NrF+S=f zj2%D}Dk!ypkO=ayyb86HXd=>)02M<(L8HVZBDqEg)gFd8bH}zH{p!b^eb3x;_F8A{ zwf8+0L8sX*bzBMnunP?d`T_te_=*Gg`4ILZb_)zkGDBk70N8iWKe$4&{Tcuk{}LJ$ zz{oDujeIUvdVRR)_Y|e#%Ustyw4V5}b4W!{g+Qd6_{~)6mK+(qyE<&ojCUV8HEkY3 zz#odU8Gf(lir4hu`~$4Ox&i?3D0eP=XD?om)En1EwFdZ&00b@pf(YmEWkAr$X(E=x zxYM%v?Zb6y z2bMF39sM)brbUfVBnP+MXc;asUH?(eB4BrfI(MB^6Z6#O(W@7d_7fV!r^CM| z4@>lg=OWq2c-E0hrWS{RyJB?ga$UhhA_5E@bGIWe>XH46!SXNwj(q@GuO9>?#2Z_coqUud^q+45LH9d=o4-8F5w=j0$&Fd&^>mV@vgO}a;C zb;wOrKQt~U-^b&4jV!wAmh^eg5L$FdoIGP@YgUP|+DTY|GuWLpFcPJz+;JD#a@d|H zJBk*=Dtqg1&eTTm64Hi-vKsqYUr%~gL-#sZ!`Y^rqMR=R!Y={lO4US^d!{5DAkFaw41{vHdw{vx<$&vZ}`Gi z_03Nd5dp&7lsMyHFImMwf}H`_h+mio$|xQVhe~2L)V32N9vBLJ0ieG%Vtt1|{GIj{ zM=!DuU;Wg;9p?asSGr;qMnEM^ILkPH#+*l1?IN_F#+<&QO7sV}v8K3d1M0kC0ZJ{< z1yo1@b458kP|}Z)2o?r^05fJ_aZ>4!yNhLx!Q|@-RxeD<`KJCG0IV(+Aj}zbJ$}bN kf#)z&29o<<2~;7tBk5?jW6Zs5_=f|b!So<$;NHBy0MfjQeEsubmenu_id = index; XRemoteAppSettings* settings = app->app_ctx->app_settings; + View* view = submenu_get_view(app->submenu); + view_set_previous_callback(view, prev_cb); + +#ifdef FW_ORIGIN_Unleashed submenu_set_orientation(app->submenu, settings->orientation); - view_set_previous_callback(submenu_get_view(app->submenu), prev_cb); +#else + view_set_orientation(view, settings->orientation); +#endif ViewDispatcher* view_disp = app->app_ctx->view_dispatcher; - view_dispatcher_add_view(view_disp, app->submenu_id, submenu_get_view(app->submenu)); + view_dispatcher_add_view(view_disp, app->submenu_id, view); } void xremote_app_submenu_free(XRemoteApp* app) {