From 61846cb0ae8ec87886ce77e15b06ff33167b2f7d Mon Sep 17 00:00:00 2001 From: Roman Makeev Date: Tue, 17 Sep 2024 14:22:53 +0300 Subject: [PATCH] add docs --- .github/workflows/documentation.yml | 35 +++ README.md | 10 + docker-compose.yml | 7 + docs/adding_remote.md | 126 +++++++++ docs/avaliable_buttons.md | 70 +++++ docs/button_names.md | 414 ++++++++++++++++++++++++++++ docs/index.md | 3 + docs/media/favicon.png | Bin 0 -> 2243 bytes docs/media/share_remote.jpg | Bin 0 -> 57934 bytes mkdocs.yml | 148 ++++++++++ 10 files changed, 813 insertions(+) create mode 100644 .github/workflows/documentation.yml create mode 100644 docker-compose.yml create mode 100644 docs/adding_remote.md create mode 100644 docs/avaliable_buttons.md create mode 100644 docs/button_names.md create mode 100644 docs/index.md create mode 100644 docs/media/favicon.png create mode 100644 docs/media/share_remote.jpg create mode 100644 mkdocs.yml diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml new file mode 100644 index 000000000..54724cb87 --- /dev/null +++ b/.github/workflows/documentation.yml @@ -0,0 +1,35 @@ +name: Build and deploy material mkdocs to gh-pages +on: + push: + branches: + - dev + workflow_dispatch: +jobs: + check_gradle_files_change: + name: "Check docs files changed" + runs-on: ubuntu-latest + outputs: + DOCS_FILES_CHANGED: ${{ steps.docs_changed.outputs.any_changed }} + steps: + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + with: + submodules: 'recursive' + - name: Check that docs changed + id: docs_changed + uses: tj-actions/changed-files@40853de9f8ce2d6cfdc73c1b96f14e22ba44aec4 # v45.0.0 + with: + files: | + docs/** + mkdocs.yml + deploy: + needs: [ check_gradle_files_change ] + if: ${{ needs.check_gradle_files_change.DOCS_FILES_CHANGED }} == true + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: 3.x + - run: pip install mkdocs-material + - run: pip install mkdocs-minify-plugin + - run: mkdocs gh-deploy --force \ No newline at end of file diff --git a/README.md b/README.md index bb9f1565b..65cc879dc 100644 --- a/README.md +++ b/README.md @@ -25,3 +25,13 @@ database ├── Toys └── TVs ``` + +## Run mkdocs locally + +Run docker compose + +```bash +docker compose up +``` + +Open in browser `http://0.0.0.0:80000` \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..09546c033 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,7 @@ +services: + mkdocs: + image: squidfunk/mkdocs-material:latest + ports: + - 8000:8000 + volumes: + - ./:/docs:ro diff --git a/docs/adding_remote.md b/docs/adding_remote.md new file mode 100644 index 000000000..771f34b8b --- /dev/null +++ b/docs/adding_remote.md @@ -0,0 +1,126 @@ +### Requirements + +To add remote you will need two things: + +- Flipper Zero +- Understanding of json format + +### Creating IR file + +Let's imagine, you want to add new file. + +Firstly, you'll need to create `Infrared Remote` with your `Flipper` tool. + +Next, you'll need to download this remote via link or export + +

+ drawing +

+ +### Creating configurations + +Configuration are required to handle device key mapping. +You can see this links to see more about [avaliaable buttons](./avaliable_buttons.md) +or [button aliases](./button_names.md). + +Let's create our configuration by example. + +We have `Dell_p7524qt.ir` file, which contains some set of ir keys. + +``` +Filetype: IR signals file +Version: 1 +# +name: Power +type: parsed +protocol: NEC +address: 42 00 00 00 +command: 01 00 00 00 +# +name: Ok +type: parsed +protocol: NEC +address: 42 00 00 00 +command: 0D 00 00 00 +# +name: Menu +type: parsed +protocol: NEC +address: 42 00 00 00 +command: 54 00 00 00 +# +name: Back +type: parsed +protocol: NEC +address: 42 00 00 00 +command: 6D 00 00 00 +``` + +The names of keys seems like understandable, but we need to map it into +our [avaliaable buttons](./avaliable_buttons.md). + +So let's create `config.json` by reference on [button aliases](./button_names.md). + +```json +{ + "key_map": { + "PWR": { + "type": "NAME", + "key_name": "Power" + }, + "OK": { + "type": "NAME", + "key_name": "Ok" + }, + "MENU": { + "type": "NAME", + "key_name": "Menu" + }, + "EXIT": { + "type": "NAME", + "key_name": "Back" + } + } +} +``` + +In this `config.json` we mapped our set of keys: + +- `PWR` -> "Power" +- `OK` -> "Ok" +- `MENU` -> "Menu" +- `EXIT` -> "Back" + +And now we are ready to create **Pull Request** + +### Creating PullRequest + +Clone the repository using git clone command + +```bash +git clone https://github.com/flipperdevices/IRDB.git +``` + +Open `/database/categories` and lookup for your device category - TV, DVD etc. + +In each category there's dozens of brands. Lookup for you brand provider - Samsung, Xiamoi etc. + +Current path should be, for example, `/database/categories/TVs/Samsung` if your device is `TV` and brand is `Samsung`. + +Next, you'll need to know the model of your device. +Let's imagine it `Samsung UE48JU6670`. +You see there's no yet the model like that. So you need to create a new folder *without +spaces* `/database/categories/TVs/Samsung/Samsung_UE48JU6670`. + +If there's already device model like that - you can modify `.ir` file and `config.json`. Or create entire new folder(not +recommended) with custom postfix `_2`. + +Now you need to move your downloaded `.ir` file and `config.json`: + +- `/database/categories/TVs/Samsung/Samsung_UE48JU6670/Samsung_UE48JU6670.ir` +- `/database/categories/TVs/Samsung/Samsung_UE48JU6670/config.json` + +Next, create new branch, push your changes and [create Pull Request](https://github.com/flipperdevices/IRDB/compare) +just [like here](https://github.com/flipperdevices/IRDB/pull/7) + +Finally, see the green CI and wait for us to reply and merge! \ No newline at end of file diff --git a/docs/avaliable_buttons.md b/docs/avaliable_buttons.md new file mode 100644 index 000000000..139de70fe --- /dev/null +++ b/docs/avaliable_buttons.md @@ -0,0 +1,70 @@ +Here you can see all buttons we currently have + +See also avaliable [button aliases](button_names.md) + +- `PWR` -> Power enable button +- `SHUTTER` -> Take a photo with camera +- `VOL_UP` -> Increase volume +- `VOL_DOWN` -> Decrease volume +- `CH_UP` -> Next channel +- `CH_DOWN` -> Previous channel +- `FOCUS_MORE` -> Add focus +- `FOCUS_LESS` -> Decrease focus +- `ZOOM_UP` -> Zoom up +- `ZOOM_DOWN` -> Zoom down +- `RESET` -> Reset +- `DOWN` -> Navigation button(for TV menu, for example) - down +- `UP` -> Navigation button(for TV menu, for example) - up +- `RIGHT` -> Navigation button(for TV menu, for example) - right +- `LEFT` -> Navigation button(for TV menu, for example) - left +- `NEXT` -> Next button for TV box +- `PREVIOUS` -> Previous button for TV box +- `TV` -> TV button fot TVs +- `AUX` -> Change AUX mode +- `HOME` -> Home button +- `BACK` -> Back button +- `MENU` -> Show/Open menu +- `PLAY` -> Play/Resume playback +- `MUTE` -> Mute sound +- `EJECT` -> Eject disk +- `FAN_SPEED` -> Change fan speed recursively +- `NEAR` -> Near camera clipping plane +- `FAR` -> Far camera clipping plane +- `PAUSE` -> Pause playback +- `RECORD` -> Start recording +- `WIND_SPEED` -> Change wind speed recursively +- `MODE` -> Change mode (TV Box, DVD) +- `LIGHT` -> Increase/Decrease light recursively +- `FAN_MEDIUM` -> Set fan speed to medium +- `FAN_HIGH` -> Set fan mode to high +- `FAN_LOW` -> Change fan speed to low +- `STOP` -> Stop button (mostly for TV Box) +- `EXIT` -> Exit(from menu, etc) +- `INFO` -> Show info +- `TIMER` -> Start timer, show timer menu +- `OSCILLATE` -> Start oscillating (mostly for fans) +- `TIMER_ADD` -> Increase timer value +- `TIMER_REDUCE` -> Decrease timer value +- `FAN_SPEED_UP` -> Increase fan speed +- `FAN_SPEED_DOWN` -> Decrease fan speed +- `SLEEP` -> Start sleep mode +- `SHAKE_WIND` -> Same as oscillate, start shaking +- `SWING` -> Same as oscillate, start swing +- `OFF` -> Turn off the device +- `BRIGHTNESS_UP` -> Increase brightness +- `BRIGHTNESS_DOWN` -> Decrease brightness +- `COLD_WIND` -> Set wind cold +- `COOL` -> Set/increase cool +- `WIND_TYPE` -> Change wind type +- `TEMPERATURE_UP` -> Increase temperature +- `TEMPERATURE_DOWN` -> Decrease temperature +- `HEAT_ADD` -> Add heat +- `HEAT_REDUCE` -> Reduce heat +- `ENERGY_SAVE` -> Enter energy save mode +- `OK` -> Ok button(mostly where up/left/right/down buttons located +- `REW` -> Rewind button(mostly for playback) +- `SET` -> Set button(mostly for TV box) +- `DELETE` -> Delete button(mostly for TV Box) +- `VOD` -> Enable VODs +- `LIVE_TV` -> Set TV mode +- `FAVORITE` -> Add to favorite \ No newline at end of file diff --git a/docs/button_names.md b/docs/button_names.md new file mode 100644 index 000000000..9048e98b0 --- /dev/null +++ b/docs/button_names.md @@ -0,0 +1,414 @@ +Here you can see list of button aliases + +### What is button alias? + +The database of infrared files has a ton of different buttons. +Every author of infrared file has a different definition of naming. +Thus, the names of buttons are different. + +This list of aliases defines the finite set of button names, which can be used with IRDB. + +Please, use only aliases from this list for every [avaliable button](./avaliable_buttons.md) + +If you don't see here button or alias you need, contact us +via [new issue](https://github.com/flipperdevices/IRDB/issues/new). + +### The list of button aliases + +#### PWR + +- power +- pwr +- pwron +- power +- power_r +- on +- on_off +- on/off +- power_on +- power on +- powertoggle + +#### SHUTTER + +- shutter +- trigger +- photo +- picture + +#### VOL_UP + +- vol+ +- vol+_r +- volup +- vol_up +- volu +- volume_up +- volume up +- amp vol- +- cent_volume_up +- ch_vol+ +- master volume+ +- mastervol- + +#### VOL_DOWN + +- vol- +- vol-_r +- voldown +- voldwn +- vol_dn +- vold +- volume_down +- volume down +- vol_donw +- vol_dwn +- amp vol- +- cent_volume_down +- ch_vol- +- master volume- +- mastervol- +- vol_down + +#### CH_UP + +- ch+ +- ch+_r +- ch_next +- chn_up +- chann_up +- chan up +- up/ch+ +- tv_ch+ + +#### CH_DOWN + +- ch- +- ch-_r +- ch_prev +- chn_down +- chann_down +- chan down +- tv_ch- + +#### FOCUS_MORE + +- focus- +- focus_dwn +- focusing- + +#### FOCUS_LESS + +- focus+ +- focus_up +- focusing+ + +#### ZOOM_UP + +- zoom+ +- ezoom+ +- zoom_up +- digital zoom+ +- zoom_in +- ezoom_in +- zoomin + +#### ZOOM_DOWN + +- zoom- +- ezoom- +- zoom_down +- digital zoom- +- zoom out +- zoom_out +- ezoom_out + +#### RESET + +- reset + +#### DOWN + +- down +- down_r + +#### UP + +- up +- up_r + +#### RIGHT + +- right +- right_r + +#### LEFT + +- left +- left_r + +#### NEXT + +- next +- next_r + +#### PREVIOUS + +- previous +- previous_r + +#### TV + +- tv +- tv_av +- tv_r +- tvp3 +- livetv +- hd tv + +#### AUX + +- aux +- aux_r +- input aux +- input aux_r + +#### HOME + +- home +- home_r + +#### BACK + +- back +- back_r + +#### MENU + +- menu +- menu_r +- pop-up menu +- shortcut menu + +#### PLAY + +- play +- play_r + +#### MUTE + +- mute +- mute_r + +#### EJECT + +- eject + +#### FAN_SPEED + +- fanspeed +- fan_speed +- speed + +#### NEAR + +- near +- p_near + +#### FAR + +- far + +#### PAUSE + +- pause + +#### RECORD + +- record + +#### WIND_SPEED + +- wind_speed +- strength + +#### MODE + +- mode +- mode_r + +#### LIGHT + +- light + +#### FAN_MEDIUM + +- medium + +#### FAN_HIGH + +- high + +#### FAN_LOW + +- low + +#### STOP + +- stop +- stop_r + +#### EXIT + +- exit + +#### INFO + +- info + +#### TIMER + +- timer + +#### OSCILLATE + +- oscillate +- osc +- oscillation +- oscilate +- oscil + +#### TIMER_ADD + +- timer+ + +#### TIMER_REDUCE + +- timer- + +#### FAN_SPEED_UP + +- fanspeed+ +- fan+ +- fan + +- fan_up +- speed_up + +#### FAN_SPEED_DOWN + +- fanspeed- +- fan- +- fan - +- fan_dn +- speed_down + +#### SLEEP + +- sleep + +#### SHAKE_WIND + +- shake_wind + +#### SWING + +- swing + +#### OFF + +- off +- power_off +- power off +- poweroff +- pwroff + +#### BRIGHTNESS_UP + +- +brightness +- bright_up +- brightness up +- brightness_up + +#### BRIGHTNESS_DOWN + +- -brightness +- brightness_down +- brightness_dn +- bright_down + +#### COLD_WIND + +- cold wind + +#### COOL + +- cool + +#### WIND_TYPE + +- wind_type + +#### TEMPERATURE_UP + +- temperature_up +- temp+ + +#### TEMPERATURE_DOWN + +- temperature_down +- temp- + +#### HEAT_ADD + +- heat+ +- heat_hi +- heat_up + +#### HEAT_REDUCE + +- heat_down +- heat- +- heat_lo + +#### ENERGY_SAVE + +- energy save +- energy save_r + +#### OK + +- ok +- enter +- center +- apply +- sure + +#### REW + +- rew + +#### SET + +- set + +#### DELETE + +- del +- delete + +#### VOD + +- vod + +#### LIVE_TV + +- live tv +- live tv_r +- livetv +- tv +- letv + +#### FAVORITE + +- favorites +- favorite \ No newline at end of file diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 000000000..086bd4734 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,3 @@ +Welcome to Flipper IRDB wiki + +Please, navigate with categories to view information you need \ No newline at end of file diff --git a/docs/media/favicon.png b/docs/media/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..f21fa4560228eb6b1768ce2f0a2daa2756a14824 GIT binary patch literal 2243 zcmV;!2t4 z%a0sa6~@0))3FgY64Mjoz$*C%2s^?S6bFe|NO&JMfhaJv6n07Wu!6^Geiw$2kx^`1m+eoZf7@us(%;Ol;lAFAtxqPvhP)s@ zUEYqV8thoQxAi(sPk#~98JQ?W@rG<4{4%6UkYnl2{0PuXVOEhmkbAONUiL2SQ%HB_ zw*b8sZxqP~xh;$33oA>lDxhy){R%!mxzmkNBnzIna8+KtbJta*aJ{MTJavUmMb7d0 z$sK*?sVlA`t&XL;^AB)z?DR^q#vC2r)!q3AZEv?Lmg=`n3?lj9@R3Hx(%sFaoi!vU z+I;1lW9jbvH7GXiO(I#K*wnrG&+C`ZE0*f7dohUQ!>RtNe(5pC(%mh_RU``C+xkxR zb@AwpCtrk~wnq7cI5|CiU-zDTv3&VRu}<&*aS($@K2&_jnII)3mI5dj=@F8S?rr@L zcsN(6JDZ;YxHzaq0Az7Evm&KYNV=$mNX;s zXrV`ttyH&0iU+%C2mju|)Rk>FT?=WaiM1FWMUILTry`^g z)yu)@24}F^V_@!5h7dbkfx5-#segaDDj4Sqi3y@Ro6f)GSQIJ*A2qA1QcOJ6)NgDo zmYZ@>v4{zciq)i2V^ybB)K#QS%~DhC6M7p8`^X}9wQb8fB@x?>?{_%l z*%#$dXmTh>;}Q_VeSofO*2Knhsduia^x7U5f z1gq33W=hAmZC82UIm2t_r$SHdFYV`QT$? z6GH^(P5oLy#Udt{rW@MIrS{X-SC?m9wY8nf6qB7U+E%qvv4{!Yij^`IVL^yJeVs2_ zr;k-0q5XHos`d9&EMfv3ikwTvtbRQeKBxu8`i3Mcs>1}Cp9iJ`b zp?wYgoWr4PXtJYAVz%~Ev4{!1Jz+H$#-dOqV^gXUDi$$eFvXg}X>~&P=9whzV<}SYt~YxR{bsl~A#W36Ck3&#A*c40Qm$&swW7 zD^s1ZrxaXJv4{zDEMme8I6s8=9C2N~XSuqdt7ELE#uS6~I#euTf&kFED!Dcv#6DTe z^)H-KKy5`1DpiGwMNF7gRVOsYs=i+>lgsUXALOP~B~&b80v(H(kQBVv%hv0xD!0z$ zIs}%8s%l7#<@1n9I#xSV&#|q74{0K%(6NXKohC@@aQJ&b*QWvY)pknXR4igbaDvoz z;70C&X()ZDNnZ~n@Vy}`%Tck23A3u|bTtXRuF4hix%-SiV;@D6vLuR%MNFV$5fhR# z?_*3U^l@fZ>~KG}@2l%{5rcPP$_((E541d-ziWKvGkuuqO~?>85%oT)Sj2>+=M_$o zsj5&2Lq70{s~d$b7(8pnJhPV z2tFzRyf?HRBr^o>2~auGkMu^WQjIEDuOW*=VY-2sP&(G}pjMEaI0hbN-d_RmyTMG! zl&%8vF%Ns^D2i8r2d5?jV4RhT#ogVc9O@ymI23?WI>d;oV_hH23X%uK#+eVDIhKg* z19*NAgEBx>&u!nYUn^fXU7J3|^RoTv{@JVQTO#s){|1p9kj24czS9(Az21{8SyELc z5ji`jwfeg0+N3FpH|m!fKar{)0k~vtQ0AmO5*e7vU7_5Q#q!*;tHu?iB66AOhjdaN zFgg{QoCm-bG{yV1HFPvL*=j<>il;tBQGT{}Pew0HCUe0KS}P+S(8k zypQ<#kN=g$q4$^^G*>7hn*iPnHi=A};>{4J0#*d?E>!gzfLpQk*OA!Z{j5&kLA=O! z!8002ovPDHLkV1h0nDxd%W literal 0 HcmV?d00001 diff --git a/docs/media/share_remote.jpg b/docs/media/share_remote.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1d119d7b7d1bb341d0e63218ffaf7daa4470e090 GIT binary patch literal 57934 zcmdRW1wdTAn)cuhrMSBkr?|TpC~n2w-L-geDQ?B3xI4w&ofda@w}1Hh>D|4%d;h&_ znVFm?uO}y&gq$$XbI&V)SCXO7f{ z1kL~eSXw#Q$%_dRs;a3ILahKmfUjSYuD-p^PxPGVngg_Q9FfME0%NSq*Fa!_+Bmh=z>- z;1Cdy5RmXtQ1IBuNXXd#aC+_lAVWg{Kx4o_hykF;AYjNK&t1R@0J{^!OMm-4L4p9| zgaU;Ia&dqRP_Vyn!N5U4At0fi7Xa{JK;|p3SHL@V`|!K=uK@lWq-y4Gh@h&%i`2LWw{Rc5spw}toA%{1j?OZ!c^P+8dVm-pa%8K{Xl+E}>_h@1-{{bJpJC`-m z?<(+VB}QFrQnNacynZEiz+MY7fAejJ`(D5FR}rwx-Fsn+%|`l6-EArv&NtsO__cUl zox_+uwFZQxeq3bT9*H>LSVhc@x1+G{WzXJ)XWFha&K%KyoRIhEiW2+wyQ@C|m|ABp zJT^77*_h#L7L??6;k_wJheZc?2e|hFtk;mQY3idAh>6|TU@2yF)?6#Lgy?|{{Lf1l z(c;V*>6|1u_I1LzhvQIO4gw>Kul_~hsLG`FWQA#d5+t1gYyBV2u7>!5A%kcIjkX2{ zKEzj#jbFH5Ks2N5@w3%0h?7+RQXkR!S;KXe<~h}^KUEK^Xq^|*1^_wfXapT1TioNQ z*Szq^ozCh4l!5Syx^3HqUDR9(5ia}@w6{@lTWEBk@kmh^cPw_uC&X=`M>Zdzlz23Z)Som-Ov$ zL97Uw%C-*On0E>06g)|U5t;e>nLg z0@)Q5&X`>r&U8Fi+H<<_5yL5Zfuod%`?$>8l+d1h6{7ksvxDp&In}9n7Rgy3prXny zQp!_Q$@F47CsJ}tE7x{q&exs|Pte9gy+=7MNPeKmx!EXXd_#4Zmg6kFlf5#Y3-x7+EcS>h<5KCm8tdNS zMVZwfkFO!gNAURQmP6+_j_^!4GnjTDW!X<(=DeRtG^Zl_8xX#Re(>o7z|fey%lz__ z^D_sJbRX^N!Tp^CJr&RV($PT$2%@llr~V7@*EW`MeET4j=AL-R!U@x=J8C*c7^qAk zaAB_ze`h;%M&8;-5aD;=W5IS`m9F>hZSc#C`q%VVa}sRtkty1cU$-IKHc!o?aE%d6D z1r~ji>F{i2)^OE-KK#za?A7e^yX(IX@Mjyr(K$M6-8U~>{OZcr5SQ5f>LLga*MqrS z{>uuD`CPklGjK{TVWDw$-Svo#cy5aE?);rFAsjSng1szGi6S4FzPaFt0>_y8MDZgH zujU13aPIF)nXE0Mua^!e0*Rverau(sPY%Vi znf=yebh6cRL-l3iyWE~3kU~m$e4X`%|2LU8Oo0XtuIFI}?rj}|F)9kA92^Unhf*

@7XdEd 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�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 literal 0 HcmV?d00001 diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 000000000..38a72100f --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,148 @@ +site_name: IRDB docs +site_url: https://flipperzero.one/ +site_author: flipperdevices +site_description: >- + IRDB docs + +# Repository +repo_name: flipperdevices/IRDB +repo_url: https://github.com/flipperdevices/IRDB/ + +# Copyright +copyright: Copyright © 2024 - 2024 Flipper Devices + + +# Configuration +theme: + name: 'material' + # Don't include MkDocs' JavaScript + include_search_page: false + search_index_only: true + + # Default values, taken from mkdocs_theme.yml + language: en + features: + - navigation.tabs + # - navigation.expand + - announce.dismiss + - content.action.edit + - content.action.view + - content.code.annotate + - content.code.copy + # - content.code.select + # - content.footnote.tooltips + # - content.tabs.link + - content.tooltips + # - header.autohide + # - navigation.expand + - navigation.footer + - navigation.indexes + # - navigation.instant + # - navigation.instant.prefetch + # - navigation.instant.progress + # - navigation.prune + - navigation.sections + - navigation.tabs + # - navigation.tabs.sticky + - navigation.top + - navigation.tracking + - search.highlight + - search.share + - search.suggest + - toc.follow + # - toc.integrate + palette: + - scheme: default + toggle: + icon: material/brightness-7 + name: Switch to dark mode + primary: orange + accent: pink + - scheme: slate + toggle: + icon: material/brightness-4 + name: Switch to light mode + primary: orange + accent: pink + font: + text: Roboto + code: Roboto Mono + favicon: /media/favicon.png + logo: /media/favicon.png + icon: + logo: logo + +# Plugins +plugins: + - search: + separator: '[\s\u200b\-_,:!=\[\]()"`/]+|\.(?!\d)|&[lg]t;|(?!\b)(?=[A-Z][a-z])' + - minify: + minify_html: true + +# Customization +extra: + social: + - icon: fontawesome/brands/github + link: https://github.com/flipperdevices + - icon: fontawesome/brands/telegram + link: https://t.me/flipperzero + - icon: fontawesome/brands/discord + link: https://discord.gg/flipper + +# Extensions +markdown_extensions: + - abbr + - admonition + - attr_list + - def_list + - footnotes + - md_in_html + - toc: + permalink: true + - pymdownx.arithmatex: + generic: true + - pymdownx.betterem: + smart_enable: all + - pymdownx.caret + - pymdownx.details + - pymdownx.emoji: + emoji_generator: !!python/name:material.extensions.emoji.to_svg + emoji_index: !!python/name:material.extensions.emoji.twemoji + - pymdownx.highlight: + anchor_linenums: true + line_spans: __span + pygments_lang_class: true + - pymdownx.inlinehilite + - pymdownx.keys + - pymdownx.magiclink: + normalize_issue_symbols: true + repo_url_shorthand: true + user: squidfunk + repo: mkdocs-material + - pymdownx.mark + - pymdownx.smartsymbols + - pymdownx.snippets: + auto_append: + - includes/mkdocs.md + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format + - pymdownx.tabbed: + alternate_style: true + combine_header_slug: true + slugify: !!python/object/apply:pymdownx.slugs.slugify + kwds: + case: lower + - pymdownx.tasklist: + custom_checkbox: true + - pymdownx.tilde + +# Page tree +nav: + - "IRDB Docs": + - "Home": 'index.md' + - "Avaliable Buttons": 'avaliable_buttons.md' + - "Button Aliases": 'button_names.md' + - "Add remote": 'adding_remote.md' \ No newline at end of file